[Résolu] Remplacer cellule par un texte selon un mot trouvé
Modérateur : Vilains modOOs
Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
-
- Fraîchement OOthentifié
- Messages : 6
- Inscription : 26 avr. 2019 09:35
[Résolu] Remplacer cellule par un texte selon un mot trouvé
Bonjour,
J'ai un tableau dont l'une des colonnes est l'intitulé d'un virement bancaire : "VIR SEPA NOM XXXX"
Je voudrais remplacer chaque cellule, ou créer une nouvelle colonne, avec du texte (le nom et l'adresse correspondant au "NOM")
Par exemple pour "VIR SEPA DUPONT 1525 18171168" ça me crée dans la nouvelle colonne :
"Dupont René
12 rue de l'église
06100 Nice"
(je peux avoir la "base de données" des adresses et noms dans le même fichier, ou un fichier séparé)
C'est pour faire une base pour un publipostage
Je cherche bien entendu une solution "automatisée", pour lorsque je colle la liste de mes virements, une nouvelle colonne se crée avec les noms et adresses en "propre"
J'ai cherché un peu sur le forum, mais je n'ai trouvé que des solutions manuelles.
Merci d'avance
J'ai un tableau dont l'une des colonnes est l'intitulé d'un virement bancaire : "VIR SEPA NOM XXXX"
Je voudrais remplacer chaque cellule, ou créer une nouvelle colonne, avec du texte (le nom et l'adresse correspondant au "NOM")
Par exemple pour "VIR SEPA DUPONT 1525 18171168" ça me crée dans la nouvelle colonne :
"Dupont René
12 rue de l'église
06100 Nice"
(je peux avoir la "base de données" des adresses et noms dans le même fichier, ou un fichier séparé)
C'est pour faire une base pour un publipostage
Je cherche bien entendu une solution "automatisée", pour lorsque je colle la liste de mes virements, une nouvelle colonne se crée avec les noms et adresses en "propre"
J'ai cherché un peu sur le forum, mais je n'ai trouvé que des solutions manuelles.
Merci d'avance
Dernière modification par lmn le 07 mai 2019 14:20, modifié 1 fois.
OpenOffice 4.1.2 sous Windows 10
-
- GourOOu
- Messages : 5753
- Inscription : 02 janv. 2009 23:56
Re: Remplacer cellule par un texte selon un mot trouvé
Bonjour et bienvenue,
Je doute que le seul nom puisse te permettre de retrouver la bonne personne : comment discrimine-tu les doublons (s'il y a plusieurs personnes qui se nomment DUPONT) ?
Cordialement,
Jean-Louis
Je doute que le seul nom puisse te permettre de retrouver la bonne personne : comment discrimine-tu les doublons (s'il y a plusieurs personnes qui se nomment DUPONT) ?
Cordialement,
Jean-Louis
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
-
- Fraîchement OOthentifié
- Messages : 6
- Inscription : 26 avr. 2019 09:35
Re: Remplacer cellule par un texte selon un mot trouvé
Il n'y aura pas de soucis avec ça, il n'y a qu'une quinzaine de noms, qui sont toujours les mêmes, et il n'y a pas de doublons au niveau des noms
OpenOffice 4.1.2 sous Windows 10
-
- GourOOu
- Messages : 5753
- Inscription : 02 janv. 2009 23:56
Re: Remplacer cellule par un texte selon un mot trouvé
Ci-joint une solution basée sur cette formule (ici en B1 de Feuille1) : avec en A1 le libellé du SEPA et en feuille Noms la base des noms. Formule à recopier vers la droite et vers le bas.
À adapter à ton cas de figure.
Cordialement,
Jean-Louis
Code : Tout sélectionner
=RECHERCHEV(STXT($A1;10;TROUVE(" ";$A1;10)-TROUVE(" ";$A1;7)-1);Noms.$A$1:$C$15;COLONNE(A1);0)
À adapter à ton cas de figure.
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
-
- Fraîchement OOthentifié
- Messages : 6
- Inscription : 26 avr. 2019 09:35
Re: Remplacer cellule par un texte selon un mot trouvé
Merci beaucoup Jean-Louis !
Alors je suis en train d'essayer de décortiquer ta formule en cherchant à droite à gauche (je débute :p )
Donc si je comprends bien :
Ici on "isole" le nom depuis l'intitulé du virement avec la fonction STXT.
On commence au 10eme caractère (au final moi ça sera au 20ème car les intitulés sont "VIREMENT SEPA RECU ")
On ne connait pas le nombre de caractères à isoler donc on utilise "TROUVE(" ";$A1;10)-TROUVE(" ";$A1;7)-1", qui cherche le nombre de lettres entre les 2 espaces (au final 20 et 17 pour moi)
On recherche ensuite ce nom extrait dans la feuille "Noms" avec la fonction RECHERCHEV
(Le ";0" à la fin étant pour refuser d'extraire une valeur proche)
Par contre en plage de recherche tu as mis "Noms.$A$1:$C$15", il y a une raison à cela ? (car ;Noms.$A$1:$A$15" suffirait non ? vu que les noms se trouvent dans la colonne A)
On récupère ensuite la valeur désirée dans la ligne correspondante avec COLONNE(A1)
Je demande un peu car je préfère essayer de comprendre, comme ça si j'ai à modifier des valeurs.
Merci beaucoup en tout cas pour ton aide précieuse (je pense que j'aurais mis à peu près 3 mois à trouver ça tout seul )
Alors je suis en train d'essayer de décortiquer ta formule en cherchant à droite à gauche (je débute :p )
Donc si je comprends bien :
Ici on "isole" le nom depuis l'intitulé du virement avec la fonction STXT.
On commence au 10eme caractère (au final moi ça sera au 20ème car les intitulés sont "VIREMENT SEPA RECU ")
On ne connait pas le nombre de caractères à isoler donc on utilise "TROUVE(" ";$A1;10)-TROUVE(" ";$A1;7)-1", qui cherche le nombre de lettres entre les 2 espaces (au final 20 et 17 pour moi)
On recherche ensuite ce nom extrait dans la feuille "Noms" avec la fonction RECHERCHEV
(Le ";0" à la fin étant pour refuser d'extraire une valeur proche)
Par contre en plage de recherche tu as mis "Noms.$A$1:$C$15", il y a une raison à cela ? (car ;Noms.$A$1:$A$15" suffirait non ? vu que les noms se trouvent dans la colonne A)
On récupère ensuite la valeur désirée dans la ligne correspondante avec COLONNE(A1)
Je demande un peu car je préfère essayer de comprendre, comme ça si j'ai à modifier des valeurs.
Merci beaucoup en tout cas pour ton aide précieuse (je pense que j'aurais mis à peu près 3 mois à trouver ça tout seul )
OpenOffice 4.1.2 sous Windows 10
-
- GourOOu
- Messages : 5753
- Inscription : 02 janv. 2009 23:56
Re: Remplacer cellule par un texte selon un mot trouvé
Entre les deux espaces qui entourent le nom cherché, cela suppose que l'espace avant le nom est toujours le deuxième espace (pour "VIR SEPA ") ou le troisième (pour "VIREMENT SEPA RECU ", le troisième argument de TROUVE() précise justement la position où doit commencer la recherche. Donc, dans la formule, le premier TROUVE() doit être positionné au début du nom, comme ça il trouvera l'espace à la fin du nom, le deuxième TROUVE() doit être positionné avant l'espace qui précède le nom, ce qui donnerait pour VIR SEPA RECU DUPONT 1525 18171168, la formule :lmn a écrit :qui cherche le nombre de lettres entre les 2 espaces (au final 20 et 17 pour moi)
Code : Tout sélectionner
=RECHERCHEV(STXT($A1;15;TROUVE(" ";$A1;15)-TROUVE(" ";$A1;13)-1);Noms.$A$1:$C$15;COLONNE(A1);0)
Code : Tout sélectionner
=RECHERCHEV(STXT($A1;15;TROUVE(" ";$A1;15)-15);Noms.$A$1:$C$15;COLONNE(A1);0)
Oui, RECHERCHEV() recherche le nom dans la première colonne (sans tenir compte de la casse), puis extrait la donnée correspondant de la même ligne et de la colonne spécifiée par COLONNE(). Si c'est COLONNE(A1), qui vaut 1, il extrait le nom (au passage, s'il n'y avait que le nom à extraire sous la forme Nom à partir de NOM, on aurait pu tout simplement utiliser la formule :lmn a écrit :tu as mis "Noms.$A$1:$C$15", il y a une raison à cela ?
Code : Tout sélectionner
=NOMPROPRE(STXT($A1;15;TROUVE(" ";$A1;15)-15))
Mais en recopiant la formule vers la droite, COLONNE(A1) devient COLONNE(B1), donc 2 et RECHERCHEV() va donc chercher la valeur dans la colonne 2 de sa plage de données (Noms.$A$1:$C$15), donc la colonne B, pour en extraire le prénom... etc.
En tout cas merci de t'intéresser au pourquoi du comment... c'est plutôt rare
Cordialement,
Jean-Louis
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
-
- Fraîchement OOthentifié
- Messages : 6
- Inscription : 26 avr. 2019 09:35
Re: Remplacer cellule par un texte selon un mot trouvé
Merci pour ces nouvelles explications !
Bon, je n'ai pas encore pu tester "en réel" si tout fonctionne bien, je viendrai faire un retour ici dès que c'est fait
Oui quand c'est possible je préfère essayer de comprendre comment ça fonctionne, pour pouvoir faire des modifications / ajouts moi-mêmeJean-Louis Cadeillan a écrit : En tout cas merci de t'intéresser au pourquoi du comment... c'est plutôt rare
Bon, je n'ai pas encore pu tester "en réel" si tout fonctionne bien, je viendrai faire un retour ici dès que c'est fait
OpenOffice 4.1.2 sous Windows 10
-
- Fraîchement OOthentifié
- Messages : 6
- Inscription : 26 avr. 2019 09:35
Re: Remplacer cellule par un texte selon un mot trouvé
Bon donc cela semble fonctionner avec ce que je voulais faire (en fait c'était un peu plus compliqué que ce que j'avais demandé car j'avais d'autres données à "extraire" : adresse, pays, etc., mais je m'en suis sorti)
Il n'y avait qu'un seul petit "problème", c'est que pour certains virement, je n'ai qu'un seul nom après ""VIREMENT SEPA RECU ", par exemple ""VIREMENT SEPA RECU DUPONT" (et rien après), mais donc comme on cherche le prochain espace mais qu'il n'y en a pas, ça donne une erreur
Mais comme tu m'avais expliqué un peu plus haut, comme pour moi c'est toujours le même début, j'ai remplacé par :
=RECHERCHEV(STXT($C2;20;6);*****)
Ainsi j'effectue donc la recherche sur les 6 premiers caractères seulement (il n'y aura pas de doublons)
(je voulais ensuite dans ma feuille "Noms" tronquer toute la colonne sur laquelle on effectue la recherche pour qu'il n'y ait également que 6 caractères et que la correspondance soit exacte, mais en fait ça semble fonctionner déjà comme ça)
Bon, c'est moins classe que l'extraction du nom exact en trouvant les 2 espaces qui l'entourent, mais ça fonctionne.
Merci encore Jean-Louis !
(maintenant faut que je résolve mes problèmes de publipostage pour lequel je dois utiliser ce tableau )
Il n'y avait qu'un seul petit "problème", c'est que pour certains virement, je n'ai qu'un seul nom après ""VIREMENT SEPA RECU ", par exemple ""VIREMENT SEPA RECU DUPONT" (et rien après), mais donc comme on cherche le prochain espace mais qu'il n'y en a pas, ça donne une erreur
Mais comme tu m'avais expliqué un peu plus haut, comme pour moi c'est toujours le même début, j'ai remplacé par :
=RECHERCHEV(STXT($C2;20;6);*****)
Ainsi j'effectue donc la recherche sur les 6 premiers caractères seulement (il n'y aura pas de doublons)
(je voulais ensuite dans ma feuille "Noms" tronquer toute la colonne sur laquelle on effectue la recherche pour qu'il n'y ait également que 6 caractères et que la correspondance soit exacte, mais en fait ça semble fonctionner déjà comme ça)
Bon, c'est moins classe que l'extraction du nom exact en trouvant les 2 espaces qui l'entourent, mais ça fonctionne.
Merci encore Jean-Louis !
(maintenant faut que je résolve mes problèmes de publipostage pour lequel je dois utiliser ce tableau )
OpenOffice 4.1.2 sous Windows 10
-
- RespOOnsable forum
- Messages : 9255
- Inscription : 28 août 2010 08:45
Re: Remplacer cellule par un texte selon un mot trouvé
Bonjour,
Si celui-ci est résolu, merci de le faire savoir : Comment clore correctement un sujet lorsqu'il est résolu
Cordialement
Dans un nouveau sujet bien sûr : règle n° 7.[b][color=#404080]lmn[/color][/b] a écrit :maintenant faut que je résolve mes problèmes de publipostage pour lequel je dois utiliser ce tableau )
Si celui-ci est résolu, merci de le faire savoir : Comment clore correctement un sujet lorsqu'il est résolu
Cordialement
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
-
- Fraîchement OOthentifié
- Messages : 6
- Inscription : 26 avr. 2019 09:35
Re: Remplacer cellule par un texte selon un mot trouvé
oui oui bien entendumicmac a écrit :Dans un nouveau sujet bien sûr
OK, j'édite le titremicmac a écrit :Si celui-ci est résolu, merci de le faire savoir
(si des fois je me rends compte que j'ai des soucis, je rééditerai si c'est possible)
Et merci encore Jean-Louis Cadeillan
OpenOffice 4.1.2 sous Windows 10