Outils pour utilisateurs

Outils du site


calc_et_regex

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
calc_et_regex [2020/11/21 10:14]
jean créée
calc_et_regex [2020/11/21 10:55] (Version actuelle)
jean
Ligne 1: Ligne 1:
-                                         **REGEX et Calc**.**+======  REGEX et Calc ====== 
                                                                            
-Soit un exercice de la vraie vie, vous trouverez en PJ un fichier comportant 74 lignes dont 73 de données en colonne B. C’est cette colonne que je veux retravailler afin de supprimer toutes les lettres et ponctuation pour ne conserver que les 5 derniers caractères de cette donnée (cellule B2) 099005431E0, soit, le but à atteindre, c’est d’obtenir 431E0. De plus, dans certaines cellules (B3 par exemple), j’ai plusieurs données qui ont la même structure et je veux n’avoir que ces derniers caractères dans chaque colonne. Exemple, en B3, j’ai ceci :+Soit un exercice de la vraie vie, vous trouverez le lien pour télécharger un exercice  
 + 
 +[[https://framadrive.org/s/wzHPwB8x5QGkYMt]] 
 + 
 +et un lien vers le contenu en ods  
 + 
 +[[https://framadrive.org/s/r9riKenj7dWrgsG]] 
 + 
 + 
 +exercice comportant 74 lignes dont 73 de données en colonne B. C’est cette colonne que je veux retravailler afin de supprimer toutes les lettres et ponctuation pour ne conserver que les 5 derniers caractères de cette donnée (cellule B2) 099005431E0, soit, le but à atteindre, c’est d’obtenir 431E0. De plus, dans certaines cellules (B3 par exemple), j’ai plusieurs données qui ont la même structure et je veux n’avoir que ces derniers caractères dans chaque colonne. Exemple, en B3, j’ai ceci :
  
-Filtre structurel codique : , CENTRE (099005) +|Filtre structurel codique : , CENTRE
-Identifiant organisme (CODE_XXXXXXXX), liste de valeurs autorisées : 099005414P2, 099005414B0, 099005414P4, 099005414C0, 099005414N0, 099005414E0, 09900541400+|(099005)| 
 +|Identifiant organisme
 +|(CODE_XXXXXXXX), liste de valeurs
 +|autorisées : 099005414P2, 099005414B0,
 +099005414P4, 099005414C0, 099005414N0, 099005414E0,
 +09900541400|
  
 Et je veux ceci : Et je veux ceci :
-414P2 414B0 414P4 414C0 414N0 414E0 414000+|414P2|414B0|414P4|414C0|414N0|414E0|414000
 Nous allons devoir travailler par touches successives et supprimer progressivement les informations dont nous n’avons pas besoin. Nous allons devoir travailler par touches successives et supprimer progressivement les informations dont nous n’avons pas besoin.
  
Ligne 20: Ligne 35:
 La cellule B3 se présente maintenant comme ceci, et nous approchons de la solution : La cellule B3 se présente maintenant comme ceci, et nous approchons de la solution :
  
-liste de valeurs autorisées : 099005414P2, 099005414B0, 099005414P4, 099005414C0, 099005414N0, 099005414E0, 09900541400+|liste de valeurs autorisées : 099005414P2,
 +|099005414B0, 099005414P4,
 +|099005414C0, 099005414N0,
 +|099005414E0, 09900541400 |
  
 Expliquons ce que nous avons mis dans le champ « Rechercher », à savoir .*\) Expliquons ce que nous avons mis dans le champ « Rechercher », à savoir .*\)
  
 Je vous renvoie à cette page de l’aide que nous avons déjà rencontrée : Je vous renvoie à cette page de l’aide que nous avons déjà rencontrée :
-[[ +[[https://help.libreoffice.org/6.2/fr/text/shared/01/02100001.html?&DbPAR=WRITER&System=WIN]]
-[[https://help.libreoffice.org/6.2/fr/text/shared/01/02100001.html?&DbPAR=WRITER&System=WIN]][[]]]]+
  
 Vous trouverez l’essentiel des REGEX (expressions régulières) avec leur utilisation. Nous voyons que le point « Correspond à un caractère unique de tout type, sauf un retour à la ligne ou un saut de paragraphe. » L’astérisque : « Permet de trouver le caractère zéro ou l'un des caractères se trouvant avant "*" » En l’occurrence, l’astérisque précédé du point permet de rechercher n’importe quel caractère un nombre quelconque de fois. Vous trouverez l’essentiel des REGEX (expressions régulières) avec leur utilisation. Nous voyons que le point « Correspond à un caractère unique de tout type, sauf un retour à la ligne ou un saut de paragraphe. » L’astérisque : « Permet de trouver le caractère zéro ou l'un des caractères se trouvant avant "*" » En l’occurrence, l’astérisque précédé du point permet de rechercher n’importe quel caractère un nombre quelconque de fois.
Ligne 38: Ligne 55:
 La cellule B3 (comme les autres) se présente ainsi : La cellule B3 (comme les autres) se présente ainsi :
  
-099005414P2, 099005414B0, 099005414P4, 099005414C0, 099005414N0, 099005414E0, 09900541400+|099005414P2, 099005414B0,
 +|099005414P4, 099005414C0,
 +|099005414N0, 099005414E0,
 +|09900541400|
  
 Nous avons presque terminé. Il nous faut supprimer le nombre 099005 au début de chaque donnée. C’est très simple et les REGEX nous sont inutiles : Ctrl h, 099005 dans le champ « Rechercher », rien dans « Remplacer », la case « Sélection active seulement » est cochée, peu importe si celle des expressions régulières l’est ou pas et on valide. Notre cellule B3 est maintenant de la forme : Nous avons presque terminé. Il nous faut supprimer le nombre 099005 au début de chaque donnée. C’est très simple et les REGEX nous sont inutiles : Ctrl h, 099005 dans le champ « Rechercher », rien dans « Remplacer », la case « Sélection active seulement » est cochée, peu importe si celle des expressions régulières l’est ou pas et on valide. Notre cellule B3 est maintenant de la forme :
  
  
-414P2, 414B0, 414P4, 414C0, 414N0, 414E0, 41400+|414P2, 414B0, 414P4, 414C0,
 +|414N0, 414E0, 41400|
  
 Nous sommes tout près de but. LibreOffice va nous aider à présenter nos colonnes comme nous le souhaitions (et il va nous faire 2 farces en même temps). Vous allez mettre la colonne B en surbrillance, puis « Données », en bas « Texte en colonnes », vous cochez la case « Virgule » et vous validez. Vous voyez que LibreOffice a pris la virgule comme séparateur de champ (voilà pourquoi il nous fallait conserver cette ponctuation) et a bien présenté nos champs comme nous le souhaitions, mais emporte 2 anomalies graves : en ligne 3, nous n’avons plus qu’une information au lieu des 7 attendues. De plus, LibreOffice a considéré que le champ 431E0 était une notation scientifique qu’il a transformée en 4.31E+2 (à savoir 4,31 *102 soit 431), ce n’était pas le but poursuivi. Nous sommes tout près de but. LibreOffice va nous aider à présenter nos colonnes comme nous le souhaitions (et il va nous faire 2 farces en même temps). Vous allez mettre la colonne B en surbrillance, puis « Données », en bas « Texte en colonnes », vous cochez la case « Virgule » et vous validez. Vous voyez que LibreOffice a pris la virgule comme séparateur de champ (voilà pourquoi il nous fallait conserver cette ponctuation) et a bien présenté nos champs comme nous le souhaitions, mais emporte 2 anomalies graves : en ligne 3, nous n’avons plus qu’une information au lieu des 7 attendues. De plus, LibreOffice a considéré que le champ 431E0 était une notation scientifique qu’il a transformée en 4.31E+2 (à savoir 4,31 *102 soit 431), ce n’était pas le but poursuivi.
Ligne 59: Ligne 80:
 Ctrl z et tout revient comme avant et observons bien notre B3. Elle débute par un saut de paragraphe (invisible) : Ctrl z et tout revient comme avant et observons bien notre B3. Elle débute par un saut de paragraphe (invisible) :
  
-414P2, 414B0, 414P4, 414C0, 414N0, 414E0, 41400+|         | 
 +|414P2, 414B0, 414P4, 414C0,
 +|414N0, 414E0, 41400|
  
 L’anomalie vient de là. En mettant le texte en colonnes, LibreOffice considère que ce saut de paragraphe l’oblige à placer les données de la cellule B3 en ligne 4 ! Nous allons devoir supprimer préalablement ce saut de ligne. L’anomalie vient de là. En mettant le texte en colonnes, LibreOffice considère que ce saut de paragraphe l’oblige à placer les données de la cellule B3 en ligne 4 ! Nous allons devoir supprimer préalablement ce saut de ligne.
  
 Ctrl h, puis, dans le champ « Rechercher », nous plaçons \n et nous validons. Notre cellule B3 est devenue : Ctrl h, puis, dans le champ « Rechercher », nous plaçons \n et nous validons. Notre cellule B3 est devenue :
-414P2, 414B0, 414P4, 414C0, 414N0, 414E0, 41400+|414P2, 414B0, 414P4, 414C0,
 +|414N0, 414E0, 41400
 +          
  
 \n (je dis bien antislash et la lettre n sans rien d’autre) fait partie de la liste des expressions régulières et représente un saut de ligne, dans une cellule au cas particulier. Nous l’avons supprimé. Nous pouvons maintenant mettre en surbrillance la colonne B puis « Données », « Texte en colonnes » et valider.  \n (je dis bien antislash et la lettre n sans rien d’autre) fait partie de la liste des expressions régulières et représente un saut de ligne, dans une cellule au cas particulier. Nous l’avons supprimé. Nous pouvons maintenant mettre en surbrillance la colonne B puis « Données », « Texte en colonnes » et valider. 
  
 La ligne 3, comme les autres, est maintenant conforme au but recherché : La ligne 3, comme les autres, est maintenant conforme au but recherché :
-CELINE 414P2 414B0 414P4 414C0 414N0 414E0 41400+|CELINE|414P2|414B0|414P4|414C0|414N0|414E0|41400|
 Au cas particulier de cet exercice, le tableur sur lequel nous avons travaillé est une véritable extraction anonymisée d’un logiciel professionnel. Il comportait à la base plusieurs milliers de lignes. Difficile d’imaginer les corriger une à une ! Au cas particulier de cet exercice, le tableur sur lequel nous avons travaillé est une véritable extraction anonymisée d’un logiciel professionnel. Il comportait à la base plusieurs milliers de lignes. Difficile d’imaginer les corriger une à une !
calc_et_regex.1605953687.txt.gz · Dernière modification: 2020/11/21 10:14 de jean