Macro Word chercher remplacer chaine de caractere par formalisme.

Résolu
TechLeader Messages postés 4 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 12 janvier 2011 - 10 nov. 2009 à 16:05
TechLeader Messages postés 4 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 12 janvier 2011 - 12 nov. 2009 à 09:04
Bonjour,
Tout d'abord sachez que c'est mon premier poste sur votre Site que je consulte régulierement, donc merci pour tout.

Je doit créer une macro sous Word afin de rechercher et remplacer du texte (jusqu'ici je sais faire).
Là ou cela ce complique c'est je dois remplacer des chaines qui repondent à un certain formalisme.

J'ai des chaine du type "p18923456-5"
d'autre du type "p18923456-5N"

Le but de cette macro est donc de rajouter le N la ou il n'y en a pas.
Ces chaines répondes toujours au meme formalisme:
P + 8 caracteres +"-"+ 1 caratere (Plus "N") le tous encadré par des espaces.

Espérant avoir été assez clair je compte sur vous car mon niveau en VBA est hazardeux.

6 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
10 nov. 2009 à 16:54
Bonjour,

Il te faut "éclater" ta chaîne dans un array (la fonction split à voir dans ton aide en ligne)
Tu peux (selon ton contexte, "éclater" en utilisant le séparateur espace ou le séparateur " (qui me parait mieux ici)
Tu parcours ensuite les items de l'array obtenu et tu compares en utilisant l'opérateur Like (à voir dans ton aide en ligne) en appliquant le filtre "?########-#" ===>> si correspondance : tu ajoutes ton "N" derrière.
Tu recomposes ton texte ensuite, par concaténation des items ainsi modifiés et de ton séparateur.
Voilà ! Dit ainsi, cela peut paraître du chinois, mais ce sera très clair lorsque tu te seras documenté sur la fonction Split et sur l'opérateur Like. (en supposant, bien évidemment, que tu sais parcourir au moins, par boucle For .. to ..., les items d'un Array)
.
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
10 nov. 2009 à 16:55
Attends ! je viens de te relire ===>> filtre plus précis : "P########-#"
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 nov. 2009 à 16:57
Salut
Essaye ça :
If maChaine Like "p[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9]" Then
  maChaine = maChaine & "N"
End If
[0-9] est sensé remplacer un chiffre de 0 à 9
Voir [a-z] pour les lettres ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
10 nov. 2009 à 16:59
Salut, Jack,
le caractère générique #, tout simplement ... (il ne représente qu'un numérique, donc de 0 à 9, précisément.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
10 nov. 2009 à 20:37
Salut, et avec RECHERCHEV ou RECHERCHEH, ça marche pas ?

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
0
TechLeader Messages postés 4 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 12 janvier 2011
12 nov. 2009 à 09:04
Merci pour vous prompts réponses.

Je m'en suis sorti avec les fonction split et like.

Esperant humblement pouvoir vous dépanner un jour.

Cordialement.
0
Rejoignez-nous