OVH Cloud OVH Cloud

Macro rechercher et supprimer

24 réponses
Avatar
Philippe Meresse
Bonsoir à toutes et tous,
je cherche à faire une macro du style:
Si dans un texte, une ligne commence par 2 GIVN alors suppression de la
totalité de la ligne.
Merci pour votre aide
Philippe

10 réponses

1 2 3
Avatar
JièL Goubert
Bonjoir(c) Philippe Meresse

Le 05/01/2005 22:54 vous avez écrit ceci :
Bonsoir à toutes et tous,
je cherche à faire une macro du style:


hola mon gaillard... avant de macroter, ici on essaye d'utiliser le
potentiel du programme ;-)

Si dans un texte, une ligne commence par 2 GIVN alors suppression de la
totalité de la ligne.


Un peu de précision siouplé :
- d'abord qu'est-ce que vous appelez une ligne ? C'est important de bien
s'entendre la dessus, car une ligne dans word c'est tout et rien... il
suffit de modifier un retrait ou une marge pour démultiplier les lignes

- ensuite est-ce qu'il faut chercher "2 GIVN" ou "GIVN GIVN" ?

Merci pour votre aide


En fait il manque quelques données, mais il y a fort à parier qu'un banal
Recherche/Remplace peut facilement faire l'affaire, quite à l'enregistrer
en tant que macro si besoin.

--
JièL / Jean-Louis GOUBERT
vous souhaite une bonne et heureuse année 2005
La FAQ Outlook est la : http://faq.outlook.free.fr/

Avatar
Philippe Meresse
Bonjour et merci pour ce contact,
effectivement cela mérite plus d'explication.
il s'agit d'un fichier texte de plusieurs centaines de pages et plusieurs
milliers de lignes, c'est à dire pas de retraits ni marges les lignes
commencent en bordure gauche absolue (par un chiffre de 0 à 4) et se
terminent par une marque de paragraphe (^p).
Ex:
0 @I10012@ INDI

1 NAME Joseph /Pelletier/

2 GIVN Joseph

2 SURN Pelletier

1 SEX M



Je cherche donc à repérer dans le texte les "2 GIVN" (tout comme d'ailleurs
"2 SURN")et supprimer les lignes correspondantes.



Par ailleurs dans la foulée ;-)) (mais la priorité est moins grande)

pour chaque groupe de lignes comme ex:

1 NICK le jeune

1 SEX M

1 TITL le jeune

si derrière 1 TITL le mot est identique que derrière 1 NIK alors supprimer
la ligne 1 TITL .



Voilà,

pour moi c'est clair ;-)) mais pour les autres ? ;-)

Merci tout de même.

Philippe





"JièL Goubert" a écrit dans le
message de news:
Bonjoir(c) Philippe Meresse

Le 05/01/2005 22:54 vous avez écrit ceci :
Bonsoir à toutes et tous,
je cherche à faire une macro du style:


hola mon gaillard... avant de macroter, ici on essaye d'utiliser le
potentiel du programme ;-)




Avatar
Circé
Bonjour,

Je vais prendre la relève de JièL qui doit être dans les bras de
Morphée à cette heure.... ;-)

Donc, déjà pour supprimer les lignes avec GIVN :
Tu fais un recherche-remplace

Tu coches "caractères génériques"
Dans la zone Rechercher, tu mets : <??GIVN*>*^13
Dans la zone Remplacer, tu ne mets rien

Cela aura pour action de rechercher et de remplacer par rien 2
caractères (le chiffre et l'espace), le mot GIVN et tous les caractères
qui suivent jusqu'au retour paragraphe compris.

Pour ta seconde demande, c'est plus compliqué. Il faudra probablement
passer par une macro, mais il faudrait savoir si ce groupe de lignes se
présente toujours exactement pareil, dans le même ordre, à savoir NICK,
puis SEX, puis TITL...

Circé
http://faqword.free.fr

Bonjour et merci pour ce contact,
effectivement cela mérite plus d'explication.
il s'agit d'un fichier texte de plusieurs centaines de pages et plusieurs
milliers de lignes, c'est à dire pas de retraits ni marges les lignes
commencent en bordure gauche absolue (par un chiffre de 0 à 4) et se
terminent par une marque de paragraphe (^p).
Ex:
0 @I10012@ INDI

1 NAME Joseph /Pelletier/

2 GIVN Joseph

2 SURN Pelletier

1 SEX M



Je cherche donc à repérer dans le texte les "2 GIVN" (tout comme d'ailleurs
"2 SURN")et supprimer les lignes correspondantes.



Par ailleurs dans la foulée ;-)) (mais la priorité est moins grande)

pour chaque groupe de lignes comme ex:

1 NICK le jeune

1 SEX M

1 TITL le jeune

si derrière 1 TITL le mot est identique que derrière 1 NIK alors supprimer la
ligne 1 TITL .



Voilà,

pour moi c'est clair ;-)) mais pour les autres ? ;-)

Merci tout de même.

Philippe





"JièL Goubert" a écrit dans le
message de news:
Bonjoir(c) Philippe Meresse

Le 05/01/2005 22:54 vous avez écrit ceci :
Bonsoir à toutes et tous,
je cherche à faire une macro du style:


hola mon gaillard... avant de macroter, ici on essaye d'utiliser le
potentiel du programme ;-)





Avatar
geo
Bonjour
Pour ta seconde demande, c'est plus compliqué. Il faudra
probablement

passer par une macro, mais il faudrait savoir si ce
groupe de lignes se

présente toujours exactement pareil, dans le même ordre,
à savoir NICK,

puis SEX, puis TITL...


Ca fait penser à un truc de généalogie et je ne serais pas
étonné qu'il y ait d'autres besoins ensuite.
Donc autant sortir la trousse à outils complète, marteau
pilon et tronçonneuse, à savoir :
faire un macro qui lit individu par individu en mettant
chaque caractéristique dans une donnée de type Chaine de
caractère, on compare ce qu'on veut avec ce qu'on veut, en
modifiant ce qu'on veut.
exemple :
if TITL = NICK then TITL = ""
puis on restitue les variables qu'on veut et qui ne sont
pas vides.
A+

Avatar
JièL Goubert
Bonjoir(c) Circé

ben voila, c'est bien avec un simple et TRES efficace R/R que l'on règle
ce genre de pb ;-)

Quand à l'ordre, il parait logique, non ? ;-)))))))))))))))))))))

--
JièL NICK avec SEX puis TILT ;-)))

Le 06/01/2005 08:51 vous avez écrit ceci :
Bonjour,

Je vais prendre la relève de JièL qui doit être dans les bras de Morphée
à cette heure.... ;-)

Donc, déjà pour supprimer les lignes avec GIVN :
Tu fais un recherche-remplace

Tu coches "caractères génériques"
Dans la zone Rechercher, tu mets : <??GIVN*>*^13
Dans la zone Remplacer, tu ne mets rien

Cela aura pour action de rechercher et de remplacer par rien 2
caractères (le chiffre et l'espace), le mot GIVN et tous les caractères
qui suivent jusqu'au retour paragraphe compris.

Pour ta seconde demande, c'est plus compliqué. Il faudra probablement
passer par une macro, mais il faudrait savoir si ce groupe de lignes se
présente toujours exactement pareil, dans le même ordre, à savoir NICK,
puis SEX, puis TITL...

Circé
http://faqword.free.fr


Bonjour et merci pour ce contact,
effectivement cela mérite plus d'explication.
il s'agit d'un fichier texte de plusieurs centaines de pages et
plusieurs milliers de lignes, c'est à dire pas de retraits ni marges
les lignes commencent en bordure gauche absolue (par un chiffre de 0 à
4) et se terminent par une marque de paragraphe (^p).
Ex:
0 @I10012@ INDI

1 NAME Joseph /Pelletier/

2 GIVN Joseph

2 SURN Pelletier

1 SEX M



Je cherche donc à repérer dans le texte les "2 GIVN" (tout comme
d'ailleurs "2 SURN")et supprimer les lignes correspondantes.



Par ailleurs dans la foulée ;-)) (mais la priorité est moins grande)

pour chaque groupe de lignes comme ex:

1 NICK le jeune

1 SEX M

1 TITL le jeune

si derrière 1 TITL le mot est identique que derrière 1 NIK alors
supprimer la ligne 1 TITL .



Voilà,

pour moi c'est clair ;-)) mais pour les autres ? ;-)

Merci tout de même.

Philippe





"JièL Goubert" a écrit dans
le message de news:

Bonjoir(c) Philippe Meresse

Le 05/01/2005 22:54 vous avez écrit ceci :

Bonsoir à toutes et tous,
je cherche à faire une macro du style:



hola mon gaillard... avant de macroter, ici on essaye d'utiliser le
potentiel du programme ;-)







Avatar
Philippe Meresse
Bonsoir,
Merci Circé car déjà la première partie de mon problème est résolue et cela
marche ;-)
Pour la seconde partie en effet ç'a se présente toujours dans le même ordre
que l'exemple la seule chose qui changera c'est 1 SEX M qui peu être 1 SEX
F (pour féminin).
Merci pour l'aide
Philippe
"Circé" a écrit dans le message de news:

Bonjour,

Je vais prendre la relève de JièL qui doit être dans les bras de Morphée à
cette heure.... ;-)

Donc, déjà pour supprimer les lignes avec GIVN :
Tu fais un recherche-remplace

Tu coches "caractères génériques"
Dans la zone Rechercher, tu mets : <??GIVN*>*^13
Dans la zone Remplacer, tu ne mets rien



Avatar
Philippe Meresse
Bonsoir,
Bingo!, c'est de la généalogie, c'est un fichier texte avec la norme
"Gedcom" (inventée par les Mormons) qui nous permet d'échanger entre
généalogistes qui n'ont pas le même Soft. Malheureusement cette norme de
formatage de fichier n'est pas bien effectuée par certains logiciels (bas de
gamme) et donc à l'arrivée chez le destinataire le fichier est mal digérée
par le soft qui l'importe. C'est pour cela que je préfère les retravailler
avant importation pour supprimer les données redondantes ou sans intérêt..
@+
Philippe


Ca fait penser à un truc de généalogie et je ne serais pas
étonné qu'il y ait d'autres besoins ensuite.
Donc autant sortir la trousse à outils complète, marteau
pilon et tronçonneuse, à savoir :
faire un macro qui lit individu par individu en mettant
chaque caractéristique dans une donnée de type Chaine de
caractère, on compare ce qu'on veut avec ce qu'on veut, en
modifiant ce qu'on veut.
exemple :
if TITL = NICK then TITL = ""
puis on restitue les variables qu'on veut et qui ne sont
pas vides.
A+
Avatar
Geo
Bonjour Philippe


Bonsoir,
Bingo!, c'est de la généalogie, c'est un fichier texte avec la norme
"Gedcom" (inventée par les Mormons) qui nous permet d'échanger entre
généalogistes qui n'ont pas le même Soft. Malheureusement cette norme
de formatage de fichier n'est pas bien effectuée par certains
logiciels (bas de gamme) et donc à l'arrivée chez le destinataire le
fichier est mal digérée par le soft qui l'importe.


Ouiais on dit ça, mais c'est peut-être le tien qui est ... Non je rigole

C'est pour cela
que je préfère les retravailler avant importation pour supprimer les
données redondantes ou sans intérêt.. @+


Et comme c'est un fichier texte, tu peux même le traiter en texte
directement avec des ordres
Line Input, sans même l'ouvrir dans Word
Amusant à faire.
J'ai trouvé ça,
http://www.francogene.com/internet/gedcom.php
c'est bon ?

--

A+

Avatar
Philippe Meresse
Ouais le lien (connu) est bien et explique parfaitement la structure d'un
Gedcom. Si tu as lu, tu as pu voir que bien des Gedcom sont mal fait. C'est
dommage parce-qu'au début l'idée était excellente mais bien des Soft n'ont
pas suivi scrupuleusement cette norme et maintenant on a n'importe quoi.
C'est pas trop grave en soit mais les fichiers étant très volumineux c'est
long à corriger.
Merci
Philippe
"Geo" a écrit dans le message de news:

Bonjour Philippe


Bonsoir,
Bingo!, c'est de la généalogie, c'est un fichier texte avec la norme
"Gedcom" (inventée par les Mormons) qui nous permet d'échanger entre
généalogistes qui n'ont pas le même Soft. Malheureusement cette norme
de formatage de fichier n'est pas bien effectuée par certains
logiciels (bas de gamme) et donc à l'arrivée chez le destinataire le
fichier est mal digérée par le soft qui l'importe.


Ouiais on dit ça, mais c'est peut-être le tien qui est ... Non je rigole

C'est pour cela
que je préfère les retravailler avant importation pour supprimer les
données redondantes ou sans intérêt.. @+


Et comme c'est un fichier texte, tu peux même le traiter en texte
directement avec des ordres
Line Input, sans même l'ouvrir dans Word
Amusant à faire.
J'ai trouvé ça,
http://www.francogene.com/internet/gedcom.php
c'est bon ?

--

A+






Avatar
Geo
Bonjour Philippe Meresse


Ouais le lien (connu) est bien et explique parfaitement la structure
d'un Gedcom. Si tu as lu, tu as pu voir que bien des Gedcom sont mal
fait. C'est dommage parce-qu'au début l'idée était excellente mais
bien des Soft n'ont pas suivi scrupuleusement cette norme et
maintenant on a n'importe quoi. C'est pas trop grave en soit mais les
fichiers étant très volumineux c'est long à corriger.


Le tout est de savoir ce qu'il faut corriger dans un fichier reçu, on ne
peut donc le faire sans doute qu'a posteriori.
Dans ton exemple, tu indiques des lignes à supprimer sous certaines
conditions, pas des corrections à proprement parler, ou je me trompe ?
En tous cas je ferais comme je disais, lire un individu complètement et
mémoriser ses caractéristiques et ensuite ne restituer que celles qu'on
veut, même en Word, pourquoi pas ?
Par contre lire le fichier directement en texte me parait un peu plus
simple.
Tu as déjà le code fait dans l'aide :
Dim TextLine
Open "FICHTEST" For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier.
Line Input #1, TextLine ' Lit la ligne dans la variable.
Debug.Print TextLine ' Affiche dans la fenêtre Exécution.
Loop
Close #1 ' Ferme le fichier.
-- A+

1 2 3