Supprimer nombres au début d'une ligne

Bonjour,

J'ai un fichier de plusieurs centaines de lignes

exemple
[image: image.png]
Comment puis-je supprimer automatiquement
le code numérique ( ?
ceci pour pouvoir trier cette feuille par pays.

Merci pour votre aide.
Cordialement,
Marcel

Bonjour,

les images ne sont pas acceptées sur la liste. Pouvez-vous coller le contenu de quelques cellules pour nous en donner un aperçu ?

En attendant, si le code numérique contient un nombre de chiffres constant, vous pourriez tenter d'extraire le reste de la cellule

Exemple supposant qu'il y toujours 5 chiffres au début

A2 contient '12345TEXTE QUELCONQUE'    B2 contient la formule =DROITE(A2;NBCAR(A2)-5)

Le résultat affiché sera 'TEXTE QUELCONQUE'

Bonjour,

Bonjour,J'ai un fichier de plusieurs centaines de lignesexemple[image: image.png]Comment puis-je supprimer automatiquementle code numérique ( ?ceci pour pouvoir trier cette feuille par pays.

Je ne vois pas l’image et je suppose que c’est sous Writer.

La fonction “/rechercher-remplacer (Ctrl+h)/“ supporte les expressions régulières (motifs).

Pour supprimer plusieurs chiffres en début de ligne suivis d’espaces, le motif suivant remplacé par rien, devrait convenir :

^[:digit:]{1,}[:space:]|

Bonne journée,

Luc.

Oups, problème de conversion : le motif ne contient pas les "|",  soit :    ^[:digit:]{1,}[:space:]

Sous Calc, la fonction "rechercher-remplacer" est aussi disponible.

Luc.

Bonjour,

Merci pour votre réponse.

Sous Calc

342101113 (Finlande 1991 1114 ** Confiserie Bonbons Chatons)

342101233 (Finlande 1991 1122 ** Armoiries ville d'Iisalmi)

Merci d'avance
Cordialement,
Marcel

Merci pour ce tuyau mais cela ne fonctionne pas

LO 7.2.5.2 (x64)
Windows 10 à jour

Bonjour
en fait, vous avez un fichier de données qu'il faut un minimum gérer...
342101113 (Finlande 1991 1114 ** Confiserie Bonbons Chatons)
342101233 (Finlande 1991 1122 ** Armoiries ville d'Iisalmi)
La première série de chiffres correspond à une référence (unique ?) de la ligne.
On peut supposer que le nombre de caractères est constant.
Si ce que vous avez dans chaque ligne est dans une seule et même colonne, cherchez déjà à organiser vos données (données > texte en colonnes) après avoir sélectionné la colonne A où sont vos données.
Pour garder le libellé correctement "confiseries bonbons..." il faut le faire en 2 fois.
1
Choisissez comme séparateur : * et )
(dans "séparé par" choisissez "Autre" puis saisissez "*)" (sans les guillemets)
Validez par ok
insérez 2 colonnes avant la colonne C
2
sélectionnez la colonne A et de nouveau Données > texte en colonnes
Choisissez comme séparateur "(" sans les guillemets et l'espace (si c'est bien en espace entre les chiffres...)
et validez
Il ne vous reste plus qu'à trier selon la colonne qui contient vos pays.
si ces explications ne sont pas suffisantes, il faut nous joindre un extrait du fichier via https://drop.infini.fr/ par exemple
Claire
Marcel Van Den Broeck wrote:
Bonjour,
Merci pour votre réponse.
Sous Calc
342101113 (Finlande 1991 1114 ** Confiserie Bonbons Chatons)
342101233 (Finlande 1991 1122 ** Armoiries ville d'Iisalmi)
Merci d'avance
Cordialement,
Marcel

Bonjour,

J'ai un fichier de plusieurs centaines de lignes

exemple
[image: image.png]
Comment puis-je supprimer automatiquement
le code numérique ( ?
ceci pour pouvoir trier cette feuille par pays.

Merci pour votre aide.
Cordialement,
Marcel

Bonjour,
les images ne sont pas acceptées sur la liste. Pouvez-vous coller le
contenu de quelques cellules pour nous en donner un aperçu ?
En attendant, si le code numérique contient un nombre de chiffres
constant, vous pourriez tenter d'extraire le reste de la cellule
Exemple supposant qu'il y toujours 5 chiffres au début
A2 contient '12345TEXTE QUELCONQUE' B2 contient la formule
=DROITE(A2;NBCAR(A2)-5)
Le résultat affiché sera 'TEXTE QUELCONQUE'

Re,

Merci pour ce tuyau mais cela ne fonctionne pas

Je vois qu'il y a un espace en début de ligne, donc, il suffit de le rajouter dans le motif :

^[:space:][:digit:]{1,}[:space:]

devrait fonctionner, car "^" veut dire début de ligne et les chiffres n'y sont pas.

Pour plus d'information sur les motifs :

https://help.libreoffice.org/7.0/fr/text/swriter/guide/search_regexp.html?DbPAR=WRITER

et

https://help.libreoffice.org/7.0/fr/text/shared/01/02100001.html?&DbPAR=WRITER

Bonne après-midi.

Luc.

Bonjour Claire et Luc,

Merci pour vos conseils.
J'ai encore à 84 ans beaucoup à apprendre.
Fichier transmis
https://drop.infini.fr/r/EF6ahEhku0#U6IOWTsDd7p+rEmddZhWp7YIkmTvZc1HP3zZRTlBgVA=

Cordialement,
Marcel

Bonjour

Dans Calc, on peut aussi utiliser la fonctionnalité "Texte en colonne" (Menu "Données" puis  "Texte en colonne") : il s'agit de découper un texte en plusieurs parties qui seront réparties sur plusieurs colonnes.

Si le nombre de chiffres de départ est constant, le plus simple est de prendre l'option "Largeur fixe",
1) Dans la règle, cliquer juste avant la première parenthèse (ici à 10 environ) -> UN point rouge apparait dans la règle et un trait vertical marque la délimitation des colonneOn sépare la ligne en deux colonnes, à gauche on a les chiffres, à droite le reste. (si, comme ça m'arrive parfois, vous avez mal visé, il faut recliquer sur le point rouge dans la règle pour supprimer la séparation)
2) Ensuite on sélectionne la colonne de gauche (en cliquant dedans, en dessous de la règle) .
3) Dans "Type de colonne", choisir "masquer", ce qui veut dire que cette colonne ne sera pas reprise
4) Puis valider

C'est plus facile à faire qu'à expliquer...  :wink:

Bon courage

Christian F

Bonjour Christian,

Un grand merci, problème résolu avec facilité, gain de temps énorme pour
tous les autres fichiers.

Merci aussi à Claire et à Luc pour leurs conseils.

Grâce à vous tous, c'est un plaisir de découvrir la richesse de LO.
Bonne soirée.
Cordialement,
Marcel

ReBonjour Marcel

....et à 84 ans, il y a aussi beaucoup de choses que vous pourriez nous
apprendre !

Merci pour le fichier.

Pour commencer, j'imagine que la dernière ligne n'est pas pertinente,
vous pouvez la supprimer (sinon elle sera aussi impactée par les
transformations à suivre, si vous en avez besoin, déplacer le contenu
ailleurs, temporairement...)

Le nombre de chiffres, avant le nom du pays n'est pas fixe. On garde le
même principe, avec une petite variante

Etape 1

   * Sélectionnez la colonne A, puis Données / texte en colonnes
   * Dans les options de séparateur, choisissez uniquement "Autres" et
saisissez, sans les guillemets "("
   * Validez

Etape 2

   * Sélectionnez la colonne B, puis Données / texte en colonnes
   * Dans les options de séparateur, cette fois, choisissez "Autres" et
saisissez, cette fois, sans les guillemets '*)"
   * Validez

Etape 3

   * la colonne C est vide, la colonne B contient le pays, une année, une
autre série de 4 chiffres.
   * Insérez une colonne avant la colonne D (ou après la colonne C) pour
prévoir la place qui correspond à une colonne pour le pays, une colonne
pour l'année, une colonne pour l'autre série de chiffres

Etape 4 (en théorie)

Les choses se corsent, car le contenu de la colonne B n'est pas
uniforme. Dans la majorité des cas, vous avez "Pays espace année espace
série de 4 chiffres"

La solution serait alors :

   * Sélectionnez la colonne B puis Données / texte en colonnes
   * Dans les options de séparateur, choisissez "espaces" et
désélectionnez "Autres"
   * Validez

Sauf que pour les lignes ci-dessous, ça n'irait pas, et vous écraseriez
le contenu de la colonne E

1387188211 Dahomey 1965 PA 73-74 Gutenberg 5e centenaire de sa mort
Cathédrale de Strasbourg Presse de Maeyence Imprimerie
1365276841 Belgique CP France Lourdes Cité-Secours Saint-Pierre Vue
générale de la Cité-Secours Éditions SOS Paris N° 105

Vous verrez ce que ça donne dans le document où je vous détaille le
résultat de chaque étape

Etape 5

ne sachant pas quelle est la signification exacte de ces infos
intermédiaires, et donc, sans pouvoir les séparer selon une bonne
logique, le plus simple est de chercher à remplacer le 1er espace en
partant de la gauche, par un autre caractère, qui servira ensuite de
séparateur.

Il faut alors utiliser une formule "remplacer" avec un chercher
imbriqué.

   * On reprend le résultat de l'étape 3
   * en C1, saisir =REMPLACER(B1;CHERCHE(" ";B1);1;";")
   * étendre le calcul sur l'ensemble de la colonne (double clic sur la
poignée de recopie = angle en bas à droite de C1)

Etape 6

   * sélectionnez la colonne C puis Données > texte en colonnes
   * Comme option de séparateur, choisissez le "point virgule" et veillez
à ce que "espace" soit décoché.
   * Validez
   * supprimez la colonne B

Etape 7

   * sélectionnez une des cellules où il y a des données (B4 par exemple,
l'essentiel est d'être dans la zone de valeur)
   * Sélectionnez Données / Triez
   * Sélectionnez "colonne B"
   * Dans les options (de tri), vérifier que "la plage contient des
étiquettes de colonnes" n'est pas cochée
   * validez !

vos données sont triées par Pays.

L'explication est longue car il faut formater les données pour qu'elles
soient exploitables, mais c'est facile et rapide à faire. Vous devriez
vous en sortir sans problème.

Et ça donne ce fichier...
https://drop.infini.fr/r/y_3Ta__Wmn#CaaBtjyFeGEd9gi6AMEMz7ZjFfqh5+H9/yJi9wXvyK8=

Bon courage !

si ça ne suffit pas, dites nous où vous êtes bloqué !

Claire

oui mais en fait la largeur n'est pas fixe, c'est pour ça que je n'ai
pas développé cette solution...

vous allez vous retrouvez avec le dernier chiffre pour les lignes avec
la Belgique ou l'Allemagne par exemple...

Claire

Bonjour Claire,

Merci pour cette explication bien détaillée ainsi que pour le fichier
amélioré qui me fera gagner du temps et aussi pour vos conseils qui me
permettront de me perfectionner.

Excellente soirée.
Bien cordialement,
Marcel

Bonsoir,

En, ce me semble, beaucoup plus simple, on peut utiliser les expression régulières. Édition, rechercher et remplacer. Cocher la case « Expressions régulières » :

1. Dans rechercher : _[:digit:]{1,} \( et remplacer tout. On recherche
    une espace (matérialisée ici par le tiret bas _ tout au début de la
    formule. Dans les faits, on passera véritablement le caractère
    espace), un chiffre [:digit:] répété 1 fois voire plus {1,} suivi
    d'une espace suivi de la parenthèse ouvrante protégée par un anti
    slash \(. On remplace ces caractères par rien.
2. Dans rechercher : \) et rien dans remplacer. Remplacer tout, et la
    parenthèse fermante est supprimée.

Au final, la première ligne passe de /_342101233 (Finlande 1991 1122 ** Armoiries ville d'Iisalmi)/ à /Finlande 1991 1122 ** Armoiries ville d'Iisalmi/, l'espace tout en début de cellule ayant été supprimée. Et s'il avait fallu supprimer les deux astérisques, on aurait fait, dans rechercher : \*{2}_ et replacer par rien. L'astérisque \* (protégé par l'antislash \) trouvé deux fois{2} suivis d'une espace auraient été supprimés aussi.

Les expressions régulières (REGEX ou regular expression) demandent un peu d'apprentissage, mais sont d'une puissance insoupçonnée.

Bon courage,

Dominique

Bonsoir
si on est rodé sur les expressions régulières on va trouver ça plus simple, mais euh, non franchement pas.
Trouver les expressions régulières plus simples que Données / texte en colonne... hmmm ???
D'autant qu'au vu du fichier fourni par Marcel, les lignes données en exemple ne représentent pas tous les cas....
et que si l'on veut trier par Pays, (c'est un peu la question initiale) il faut aussi isoler ce qui suit.
En revanche oui, c'est une solution trés élégante... et intéressante. Merci
Bonne soirée
Claire
Dominique wrote:
Bonsoir,
En, ce me semble, beaucoup plus simple, on peut utiliser les expression régulières. Édition, rechercher et remplacer. Cocher la case « Expressions régulières » :
1. Dans rechercher : _[:digit:]{1,} /( et remplacer tout. On recherche
une espace (matérialisée ici par le tiret bas _ tout au début de la
formule. Dans les faits, on passera véritablement le caractère
espace), un chiffre [:digit:] répété 1 fois voire plus {1,} suivi
d'une espace suivi de la parenthèse ouvrante protégée par un anti
slash /(. On remplace ces caractères par rien.
2. Dans rechercher : /) et rien dans remplacer. Remplacer tout, et la
parenthèse fermante est supprimée.
Au final, la première ligne passe de /_342101233 (Finlande 1991 1122 ** Armoiries ville d'Iisalmi)/ à /Finlande 1991 1122 ** Armoiries ville d'Iisalmi/, l'espace tout en début de cellule ayant été supprimée. Et s'il avait fallu supprimer les deux astérisques, on aurait fait, dans rechercher : /*{2}_ et replacer par rien. L'astérisque /* (protégé par l'antislash /) trouvé deux fois{2} suivis d'une espace auraient été supprimés aussi.
Les expressions régulières (REGEX ou regular expression) demandent un peu d'apprentissage, mais sont d'une puissance insoupçonnée.
Bon courage,
Dominique

Mais pourquoi tant de haine pour les REGEX :joy:

Plus sérieusement, le prix d'entrée dans les REGEX est un peu plus élevé que « texte en colonnes », mais la puissance et la souplesse sont au rendez-vous. J'ajoute, pour être complet, que LIBO est bien fait : la syntaxe de ses REGEX est normalisée et on peut les réutiliser très aisément en Python.

Bonne soirée,

Dominique

voilà, on s'est compris ! :wink:
je trouve qu'on ne dit pas assez souvent que LibO et Python s'entendent bien, merci de le faire !
Claire
Dominique wrote:
Mais pourquoi tant de haine pour les REGEX :joy:
Plus sérieusement, le prix d'entrée dans les REGEX est un peu plus élevé que « texte en colonnes », mais la puissance et la souplesse sont au rendez-vous. J'ajoute, pour être complet, que LIBO est bien fait : la syntaxe de ses REGEX est normalisée et on peut les réutiliser très aisément en Python.
Bonne soirée,
Dominique

Bonjour Dominique,

Merci pour ces conseils supplémentaires.
Grâce à ce fichier, j'apprends beaucoup de nouvelles possibilités.

Bonne journée à toutes et à tous.
Marcel