PatCatNat’s, site de Patrice MOREL
Vous êtes ici : Accueil » Inform@tic » Excel ou Calc » Travail sur chaînes de caractères

Travail sur chaînes de caractères

D 7 novembre 2006     H 15:29     A Patrice MOREL    


Excel 2003 Office 2003 - Excel | Testé |
Icone Calc Open Office - Calc | Testé |


 Nom Propre

  • En A1 ceci est un titre
    =NOMPROPRE(A1)
    a pour résultat : Ceci Est Un Titre
  • En A1 vaison-la-romaine, le même code a pour résultat : Vaison-La-Romaine
  • En A1 76BudGet , le même code a pour résultat : 76Budget

 minuscule

  • En A1 MOREL
    =MINUSCULE(A1)
    a pour résultat : morel

 MAJUSCULE

  • En A1 patrice
    =MAJUSCULE(A1)
    a pour résultat : PATRICE

 Concaténer

  • En A1 = Manger
  • En A2 = 5
  • En A3 = saucisses
    =CONCATENER(A1 & " " & A2 &" "& A3 & " chaudes")
    a pour résultat : Manger 5 saucisses chaudes

 Séparateur de milliers dans une concaténation

  • En A1 = 8 000
  • En A2 = 2 000
    =TEXTE(A1+A2;"# ##0")&" Km"
    a pour résultat : 10 000 Km

 Tronquer

  • En A1 8,25369

=TRONQUE (A1;2)
a pour résultat : 8,25

=TRONQUE (A1;0)
a pour résultat : 8

=TRONQUE (A1;4)

 Extraction de chaîne de caractères

  • En A1 Manger

=STXT(A1; 2;3)
a pour résultat : ang

=DROITE(A1;NBCAR(A1)-3)
a pour résultat : ger

=DROITE(A1; 2)
a pour résultat : er

=GAUCHE(A1; 4)
a pour résultat : Mang

  • Extraire une partie avant un caractère (dans l’exemple le symbole "<") si il existe.
    Si la cellule contient "<", mettre dans la cellule réponse la chaîne de caractères précédent le symbole.
    Si la cellule ne contient pas "<", mettre dans la cellule réponse toute la chaîne de caractères.
    Si la cellule est vide, mettre la cellule réponse vide.

En A5 ma cellule source, mettre dans la cellule réponse. Code à mettre :

  • Extraire le N° et le nom d’une rue pour les mettre dans 2 cellules différentes.
    Plusieurs cas de figures explorés :

Pour le N° de rue, en A5 ma cellule source, mettre dans la cellule B5 :

Pour la rue, en A5 ma cellule source, mettre dans la cellule C5 :

  • Extraire les données après ou avant la dernière espace (dans l’exemple extraire l’adresse courriel ou ce qui est avant)  :
    • Formule du calcul de nombre de caractère jusquà la dernière espace à mettre en « B2 » :
    • Formule pour extraire la chaîne de caractère avant la dernière espace à mettre en« B3 » :
    • Formule pour extraire la chaîne de caractère après la dernière espace à mettre en« B4 » :

Note : Bien entendu, vous pouvez améliorer comme par exemple mettre en majuscule la première lettre en insérant cette dernière formule entre =NOMPROPRE( "ma formule" )

 Écrire sans accents

Transformer automatiquement une chaîne de caractères avec des accents en chaîne de caractères sans accent.

Par exemple le prénom « René » devient « rene ». Cela peut être utile pour écrire automatiquement les adresses courriel de certaines entreprise qui ont un format spécifique telle que la SNCF :

CourrielMinuscule exemple

  • Création de la fonction pour mettre en minuscule dans un nouveau module Visual Basic (Macro) :
  • Création de la fonction pour mettre en majuscule dans un nouveau (ou le même !) module Visual Basic (Macro) :

 Remplacer (substituer) une chaine de caractère (dont caractères spéciaux) par une autre

J’ai construit cette formule pour créer des ancres dans mes articles afin d’éviter les fameux 20% à la la place des espaces et autres écritures alambiquées avec les lettres accentuées (collection de vieux journaux).

Le principe est d’utiliser la fonction SUBSTITUE.

Exemples :

Exemple 1 :

En A2 je supprime les espaces :

En A3 je supprime les espaces et les apostrophes :

Vous remarquerez que pour supprimer les « caractères spéciaux » j’utilise la fonction UNICAR : =UNICAR(Code décimal)*.


En A4 je supprime les espaces, les apostrophes et la parenthèse ouvrante :


En A5 je supprime les espaces, les apostrophes et les 2 parenthèses :

En plus pour faire une chaîne de caractères normée pour l’utilisation sur internet (pas d’espaces, symboles et d’accents) j’utilise la fonction créée en visual basic vue plus haut MINSANSACCENT :

Donc en A6 je supprime les espaces, les apostrophes, les 2 parenthèses et les accents :

En A7 je met une majuscule à la première lettre de la chaine pour mieux repérer dans mon code ensuite :

En final j’ai fait en dernière formule, l’ajout de la suppression de unicode 39 car dans la pratique il arrive que j’ai un titre composé comme Illustration(L’). Dans ce cas de figure ce n’est plus une apostrophe !... Et dans la foulée, au cas où ma cellule contenant le texte est vide la fonction SI. Ce qui donne en C7 :

Quelques codes UNICAR trouvés et bien utils :
Saut de ligne =UNICAR(10)

(*) Fonction UNICAR :
Pour trouver le code décimal de façon précise, le plus simple est d’utiliser la fonction UNICODE. Elle renvoie le code décimal.
=UNICODE(renvoie le code la première lettre)
Note : il existe des pièges comme celui de trouver le code de l’apostrophe. Si l’on appuie simplement sur la touche apostrophe (4) du clavier le chiffre 39 nous est retourné ! C’est le cas en B8 avec =UNICODE(A8). C’est un autre symbole que l’apostrophe... c’est trompeur !
Pour trouver le bon code il vaut mieux écrire la phrase et enlever la (ou les) lettre avant l’apostrophe. C’est le cas en B9 avec =UNICODE(A9).
Pour vérifier vous pouvez réutiliser la fonction UNICAR comme j’ai fait de C8 à C11 dans l’exemple 1.

  • Documents en téléchargement :
    • Exemple 1 -
      Suppression des caractères accentués, parenthèses et apostrophes
    • Exemple 2 -
      Exemple sur Libre Office formats date améliorée et fonction UNICAR

 Des guillemets dans les formules

Par exemple pour avoir comme résultat : Le « casse-gueule » sur le trottoir.
2 solutions :
La première consiste à utiliser le code de la guillemet (34) avec la fonction UNICAR (voir ci-dessus) :

Ou alors mettre 4 guillemets :

 Rechercher l’emplacement d’occurrences

Dans mon exemple, j’ai besoin de connaître la position des underscores (« _ ») dans la chaîne de caractères en A1 :
20230724_CGT_PN_Morel_Patrice_Savenay_sur_Loire

N’ayant pas de fonction spécifique j’utilise la fonction CHERCHE (qui contrairement à TROUVE n’est pas sensible à la casse) que j’imbrique au fur et à mesure.

Pour construire la formule, il suffit à chaque nouvelle recherche d’occurrence d’ajouter en début de formule CHERCHE("_";A1; et en fin +1)

La recherche de la 1re occurrence renvoie 9 :

La recherche de la 2e occurrence renvoie 13 :

La recherche de la 3e occurrence renvoie 16 :

La recherche de la 4e occurrence renvoie 22 :

La recherche de la 5e occurrence renvoie 30 :

La recherche de la 6e occurrence renvoie 38 :

La recherche de la 7e occurrence renvoie 42 :

La recherche de la 8e occurrence renvoie #VALEUR !, donc un message d’erreur puisqu’il n’y a que 7 underscores :

Il faut donc utiliser la fonction ESTERREUR sous forme conditionnelle (SI) à chaque recherche d’occurrence, donc =SI(ESTERREUR(ma formule);"";ma formule)

Ce qui donne comme formule pour la recherche de la 1re occurrence :

Méthode à appliquer pour chaque recherche.

Et ainsi de suite...

Pour un développement plus poussé, tel que j’en ai eu besoin pour donner un code automatiquement correspondant à l’appellation de mes photos, je vous propose le développement fait sur ce fichier Cacl en téléchargement.

Dans la même rubrique

17 janvier – Bogue en RechercheV avec des parenthèses

12 mai 2021 – Un lien entre les cellules

12 novembre 2019 – Formatages divers

4 janvier 2018 – Incrémentation de lignes avec un classeur lié.

3 août 2017 – Nom de fichier dans une cellule

Rechercher

Traducteur



Les plus lus

1.  Notices diverses

2.  Le jeu de palets

3.  Import tous fichiers Txt d’un répertoire

4.  Expos et réalisations

5.  Au fil de l’eau


5 articles au hasard

1.  Affiche « Le Maréchal a dit - Le Maréchal a fait »

2.  Travailleurs sans papiers

3.  FNACanon

4.  Le petit Nicolas

5.  Variables avec mots clés


Les plus populaires

1.  Affiche « Proclamation du général Eisenhower lors du débarquement en Normandie »

2.  Commémoration Jean de Neyman - 2023

3.  Photos d’affiches

4.  Multiplier des artichauts !

5.  Allons de l’arrière !