Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me
plante tout le temps.
Y-a-t-il quelqu'un pour me corriger ?
Merci... ce serait vraiment sympa (et dé-stressant)
Raymond
Le principe de la macro (située dans "1-Cumul-avantmodif.doc") est d'appeler
un autre fichier Word "1-List-taxa.doc" qui contient une liste de plus de
4500 mots séparés chacun par un paragraphe (pi), de sélectionner le premier
mot (qui devient la variable "NomF"), de revenir à "1-Cumul-avantmodif.doc"
et de remplacer ce mot variable par lui-même dans tout le fichier (en
respectant la casse, mot entier), mais en italique, et ainsi de suite jusqu'à
la fin de la liste de mots (chaque mot et chaque signe de paragraphe (pi)
sont éffacés au fur et à mesure).
Pour bien préciser, voici le début de "1-List-taxa.doc":
churchill(pi)
degaulle(pi)
eisenhower(pi)
pétain(pi)
Sub italiques_taxa()
'
' italiques_taxa Macro
' Macro enregistrée le 12/03/05
'
Dim NomF(5000) As String
Dim iMax As Integer
Windows("1-List-taxa.doc").Activate
i = 0
Do While True
NomF(0) = Dir
If NomF(0) = "" Then Exit Do
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
NomF(0) = Dir(Selection)
Selection.Cut
Selection.Delete Unit:=wdCharacter, Count:=1
Windows("1-Cumul-avantmodif.doc").Activate
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Italic = True
With Selection.Find
.Text = "NomF(0)"
.Replacement.Text = "NomF(0)"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey Unit:=wdStory
i = i + 1
Loop
iMax = i
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Geo
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus. Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du bruit !
--
A+
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je
me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir
If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus.
Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de
vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du
bruit !
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus. Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du bruit !
--
A+
Raymond Poulain
Bonjour Geo,
Les 2 fichiers Word sont dans le même répertoire, donc pas de souci. Je ne remplace pas Degaulle par Pétain, mais Degaulle par le même mot, mais en italiques, et Petain, idem par de l'italique. C'est du formatage. Cela me prendrait des heures à la main, d'où le Vba (d'autant que le fichier "cumul" s'actualise régulièrement et qu'il faudrait tout recommencer à la main souvent).
J'espère que tu peux me piloter précisément, car je suis trop énervé (vener!).
A+
Ray
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus. Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du bruit !
--
A+
Bonjour Geo,
Les 2 fichiers Word sont dans le même répertoire, donc pas de souci.
Je ne remplace pas Degaulle par Pétain, mais Degaulle par le même mot, mais
en italiques, et Petain, idem par de l'italique. C'est du formatage. Cela me
prendrait des heures à la main, d'où le Vba (d'autant que le fichier "cumul"
s'actualise régulièrement et qu'il faudrait tout recommencer à la main
souvent).
J'espère que tu peux me piloter précisément, car je suis trop énervé (vener!).
A+
Ray
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je
me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir
If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus.
Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de
vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du
bruit !
Les 2 fichiers Word sont dans le même répertoire, donc pas de souci. Je ne remplace pas Degaulle par Pétain, mais Degaulle par le même mot, mais en italiques, et Petain, idem par de l'italique. C'est du formatage. Cela me prendrait des heures à la main, d'où le Vba (d'autant que le fichier "cumul" s'actualise régulièrement et qu'il faudrait tout recommencer à la main souvent).
J'espère que tu peux me piloter précisément, car je suis trop énervé (vener!).
A+
Ray
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus. Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du bruit !
--
A+
Geo
Bonjour Raymond
J'espère que tu peux me piloter précisément, car je suis trop énervé
T'inquiète pas mais ne sois pas trop pressé, ça dépend des gens qui sont devant leutr micro. Tu as oublié de dire sur quelle ligne ça se plante et le message affiché ! --
A+
Bonjour Raymond
J'espère que tu peux me piloter précisément, car je suis trop énervé
T'inquiète pas mais ne sois pas trop pressé,
ça dépend des gens qui sont devant leutr micro.
Tu as oublié de dire sur quelle ligne ça se plante et le message affiché !
--
J'espère que tu peux me piloter précisément, car je suis trop énervé
T'inquiète pas mais ne sois pas trop pressé, ça dépend des gens qui sont devant leutr micro. Tu as oublié de dire sur quelle ligne ça se plante et le message affiché ! --
A+
Bonjour et merci Raymond, Merci car je me suis bien amusé et j'ai fait quelque chose que je ne pensais pas pouvoir faire ! Donc MERCI. J'espère que ça peut être utile, étant sur la raisonnance AMIS ce soir j'ai pensé que peut être on pourrait éviter la macro si j'ai bien compris ce que tu veux faire. Essayer édition rechercher remplacer, clique sur le bouton Plus coche "Utiliser les caractères génériques" dans rechercher tu mets : <[!a-z]*> dans remplacer tu mets ^& et tu cliques sur le bouton Format/Police choix Italique.... Ca devrait faire, bon je vais voir si je peux affiner parce qu'évidement ça trouve aussi les mots en majuscule en début de phrase ! Mais ça balaye tous les nom propres en partant du principe que tu a mis une majuscule.
Espérant donc en plus que ça peut t'être utile. Merci d'avoir lu jusque là.
"Raymond Poulain" a écrit dans le message de news:
Bonjour Geo,
Les 2 fichiers Word sont dans le même répertoire, donc pas de souci. Je ne remplace pas Degaulle par Pétain, mais Degaulle par le même mot, mais en italiques, et Petain, idem par de l'italique. C'est du formatage. Cela me prendrait des heures à la main, d'où le Vba (d'autant que le fichier "cumul" s'actualise régulièrement et qu'il faudrait tout recommencer à la main souvent).
J'espère que tu peux me piloter précisément, car je suis trop énervé (vener!).
A+
Ray
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus. Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du bruit !
--
A+
Bonjour et merci Raymond,
Merci car je me suis bien amusé et j'ai fait quelque chose que je ne pensais pas pouvoir faire ! Donc MERCI.
J'espère que ça peut être utile, étant sur la raisonnance AMIS ce soir j'ai pensé que peut être on pourrait éviter la macro si j'ai
bien compris ce que tu veux faire.
Essayer édition rechercher remplacer, clique sur le bouton Plus coche "Utiliser les caractères génériques" dans rechercher tu mets :
<[!a-z]*> dans remplacer tu mets ^& et tu cliques sur le bouton Format/Police choix Italique.... Ca devrait faire, bon je vais voir
si je peux affiner parce qu'évidement ça trouve aussi les mots en majuscule en début de phrase ! Mais ça balaye tous les nom propres
en partant du principe que tu a mis une majuscule.
Espérant donc en plus que ça peut t'être utile.
Merci d'avoir lu jusque là.
"Raymond Poulain" <RaymondPoulain@discussions.microsoft.com> a écrit dans le message de news:
10A44619-ED73-4EB1-820C-FCD3F2CCF1C2@microsoft.com...
Bonjour Geo,
Les 2 fichiers Word sont dans le même répertoire, donc pas de souci.
Je ne remplace pas Degaulle par Pétain, mais Degaulle par le même mot, mais
en italiques, et Petain, idem par de l'italique. C'est du formatage. Cela me
prendrait des heures à la main, d'où le Vba (d'autant que le fichier "cumul"
s'actualise régulièrement et qu'il faudrait tout recommencer à la main
souvent).
J'espère que tu peux me piloter précisément, car je suis trop énervé (vener!).
A+
Ray
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je
me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir
If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus.
Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de
vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du
bruit !
Bonjour et merci Raymond, Merci car je me suis bien amusé et j'ai fait quelque chose que je ne pensais pas pouvoir faire ! Donc MERCI. J'espère que ça peut être utile, étant sur la raisonnance AMIS ce soir j'ai pensé que peut être on pourrait éviter la macro si j'ai bien compris ce que tu veux faire. Essayer édition rechercher remplacer, clique sur le bouton Plus coche "Utiliser les caractères génériques" dans rechercher tu mets : <[!a-z]*> dans remplacer tu mets ^& et tu cliques sur le bouton Format/Police choix Italique.... Ca devrait faire, bon je vais voir si je peux affiner parce qu'évidement ça trouve aussi les mots en majuscule en début de phrase ! Mais ça balaye tous les nom propres en partant du principe que tu a mis une majuscule.
Espérant donc en plus que ça peut t'être utile. Merci d'avoir lu jusque là.
"Raymond Poulain" a écrit dans le message de news:
Bonjour Geo,
Les 2 fichiers Word sont dans le même répertoire, donc pas de souci. Je ne remplace pas Degaulle par Pétain, mais Degaulle par le même mot, mais en italiques, et Petain, idem par de l'italique. C'est du formatage. Cela me prendrait des heures à la main, d'où le Vba (d'autant que le fichier "cumul" s'actualise régulièrement et qu'il faudrait tout recommencer à la main souvent).
J'espère que tu peux me piloter précisément, car je suis trop énervé (vener!).
A+
Ray
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus. Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du bruit !
--
A+
Raymond Poulain
Bonjour Geo
Merci de ces encouragements ! Le moteur de génération de Macro automatique marche très bien, mais pour les boucles, c'est la galère (il faudrait suggérer à MS d'améliorer son moteur avec un assistant qui propose d'aider à creér une boucle si on fait 2 fois, par exemple, la même manip dans une macro...).
Bon pour le présent:
L'exécution pas à pas de ma macro (avec ou sans "while true") plante au même endroit. Nom F(0)= Dir (alors surligné en jaune)
avec le message : " Erreur d'exécution 5. Argument ou appel de procédure incorrect".
Merci !
A+
Ray
Bonjour Raymond
J'espère que tu peux me piloter précisément, car je suis trop énervé
T'inquiète pas mais ne sois pas trop pressé, ça dépend des gens qui sont devant leutr micro. Tu as oublié de dire sur quelle ligne ça se plante et le message affiché ! --
A+
Bonjour Geo
Merci de ces encouragements !
Le moteur de génération de Macro automatique marche très bien, mais pour les
boucles, c'est la galère (il faudrait suggérer à MS d'améliorer son moteur
avec un assistant qui propose d'aider à creér une boucle si on fait 2 fois,
par exemple, la même manip dans une macro...).
Bon pour le présent:
L'exécution pas à pas de ma macro (avec ou sans "while true") plante au même
endroit.
Nom F(0)= Dir (alors surligné en jaune)
avec le message : " Erreur d'exécution 5. Argument ou appel de procédure
incorrect".
Merci !
A+
Ray
Bonjour Raymond
J'espère que tu peux me piloter précisément, car je suis trop énervé
T'inquiète pas mais ne sois pas trop pressé,
ça dépend des gens qui sont devant leutr micro.
Tu as oublié de dire sur quelle ligne ça se plante et le message affiché !
--
Merci de ces encouragements ! Le moteur de génération de Macro automatique marche très bien, mais pour les boucles, c'est la galère (il faudrait suggérer à MS d'améliorer son moteur avec un assistant qui propose d'aider à creér une boucle si on fait 2 fois, par exemple, la même manip dans une macro...).
Bon pour le présent:
L'exécution pas à pas de ma macro (avec ou sans "while true") plante au même endroit. Nom F(0)= Dir (alors surligné en jaune)
avec le message : " Erreur d'exécution 5. Argument ou appel de procédure incorrect".
Merci !
A+
Ray
Bonjour Raymond
J'espère que tu peux me piloter précisément, car je suis trop énervé
T'inquiète pas mais ne sois pas trop pressé, ça dépend des gens qui sont devant leutr micro. Tu as oublié de dire sur quelle ligne ça se plante et le message affiché ! --
A+
Raymond Poulain
Bonjour @pollo,
Désolé, ce n'est pas mon blem. Je veux créer une macro c'est-à-dire un petit programme qui fait la manip que tu as décrite automatiquement 4500 fois en boucle à aprtit d'une liste dans un autre fichier, voilà le "trip".
Bon courage
Ray
Bonjour et merci Raymond, Merci car je me suis bien amusé et j'ai fait quelque chose que je ne pensais pas pouvoir faire ! Donc MERCI. J'espère que ça peut être utile, étant sur la raisonnance AMIS ce soir j'ai pensé que peut être on pourrait éviter la macro si j'ai bien compris ce que tu veux faire. Essayer édition rechercher remplacer, clique sur le bouton Plus coche "Utiliser les caractères génériques" dans rechercher tu mets : <[!a-z]*> dans remplacer tu mets ^& et tu cliques sur le bouton Format/Police choix Italique.... Ca devrait faire, bon je vais voir si je peux affiner parce qu'évidement ça trouve aussi les mots en majuscule en début de phrase ! Mais ça balaye tous les nom propres en partant du principe que tu a mis une majuscule.
Espérant donc en plus que ça peut t'être utile. Merci d'avoir lu jusque là.
"Raymond Poulain" a écrit dans le message de news:
Bonjour Geo,
Les 2 fichiers Word sont dans le même répertoire, donc pas de souci. Je ne remplace pas Degaulle par Pétain, mais Degaulle par le même mot, mais en italiques, et Petain, idem par de l'italique. C'est du formatage. Cela me prendrait des heures à la main, d'où le Vba (d'autant que le fichier "cumul" s'actualise régulièrement et qu'il faudrait tout recommencer à la main souvent).
J'espère que tu peux me piloter précisément, car je suis trop énervé (vener!).
A+
Ray
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus. Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du bruit !
--
A+
Bonjour @pollo,
Désolé, ce n'est pas mon blem. Je veux créer une macro c'est-à-dire un petit
programme qui fait la manip que tu as décrite automatiquement 4500 fois en
boucle à aprtit d'une liste dans un autre fichier, voilà le "trip".
Bon courage
Ray
Bonjour et merci Raymond,
Merci car je me suis bien amusé et j'ai fait quelque chose que je ne pensais pas pouvoir faire ! Donc MERCI.
J'espère que ça peut être utile, étant sur la raisonnance AMIS ce soir j'ai pensé que peut être on pourrait éviter la macro si j'ai
bien compris ce que tu veux faire.
Essayer édition rechercher remplacer, clique sur le bouton Plus coche "Utiliser les caractères génériques" dans rechercher tu mets :
<[!a-z]*> dans remplacer tu mets ^& et tu cliques sur le bouton Format/Police choix Italique.... Ca devrait faire, bon je vais voir
si je peux affiner parce qu'évidement ça trouve aussi les mots en majuscule en début de phrase ! Mais ça balaye tous les nom propres
en partant du principe que tu a mis une majuscule.
Espérant donc en plus que ça peut t'être utile.
Merci d'avoir lu jusque là.
"Raymond Poulain" <RaymondPoulain@discussions.microsoft.com> a écrit dans le message de news:
10A44619-ED73-4EB1-820C-FCD3F2CCF1C2@microsoft.com...
Bonjour Geo,
Les 2 fichiers Word sont dans le même répertoire, donc pas de souci.
Je ne remplace pas Degaulle par Pétain, mais Degaulle par le même mot, mais
en italiques, et Petain, idem par de l'italique. C'est du formatage. Cela me
prendrait des heures à la main, d'où le Vba (d'autant que le fichier "cumul"
s'actualise régulièrement et qu'il faudrait tout recommencer à la main
souvent).
J'espère que tu peux me piloter précisément, car je suis trop énervé (vener!).
A+
Ray
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je
me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir
If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus.
Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de
vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du
bruit !
Désolé, ce n'est pas mon blem. Je veux créer une macro c'est-à-dire un petit programme qui fait la manip que tu as décrite automatiquement 4500 fois en boucle à aprtit d'une liste dans un autre fichier, voilà le "trip".
Bon courage
Ray
Bonjour et merci Raymond, Merci car je me suis bien amusé et j'ai fait quelque chose que je ne pensais pas pouvoir faire ! Donc MERCI. J'espère que ça peut être utile, étant sur la raisonnance AMIS ce soir j'ai pensé que peut être on pourrait éviter la macro si j'ai bien compris ce que tu veux faire. Essayer édition rechercher remplacer, clique sur le bouton Plus coche "Utiliser les caractères génériques" dans rechercher tu mets : <[!a-z]*> dans remplacer tu mets ^& et tu cliques sur le bouton Format/Police choix Italique.... Ca devrait faire, bon je vais voir si je peux affiner parce qu'évidement ça trouve aussi les mots en majuscule en début de phrase ! Mais ça balaye tous les nom propres en partant du principe que tu a mis une majuscule.
Espérant donc en plus que ça peut t'être utile. Merci d'avoir lu jusque là.
"Raymond Poulain" a écrit dans le message de news:
Bonjour Geo,
Les 2 fichiers Word sont dans le même répertoire, donc pas de souci. Je ne remplace pas Degaulle par Pétain, mais Degaulle par le même mot, mais en italiques, et Petain, idem par de l'italique. C'est du formatage. Cela me prendrait des heures à la main, d'où le Vba (d'autant que le fichier "cumul" s'actualise régulièrement et qu'il faudrait tout recommencer à la main souvent).
J'espère que tu peux me piloter précisément, car je suis trop énervé (vener!).
A+
Ray
Bonjour Raymond
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps.
Si tu pouvais dire où et avec quel message ?
Déjà :
Do While True
Do tout seul suffit
NomF(0) = Dir If NomF(0) = "" Then Exit Do
Fait passer au répertoire suivant et tu sors s'il n'y en a plus. Sauf erreur de ma part il faut aussi tester . et .. qui ne sont pas de vrais répertoires.
Mais je comprends pas bien la logique
NB si tu as l'intention de remplacer De Gaulle par Pétain, ça va faire du bruit !
--
A+
Kamel
Essaye cela peut etre est-ce une solution. Colle ce code dans le fichier 1-Cumul-avantmodif. Tu dois renseigner le chemin du fichier 1-List-taxa qui s'ouvre automatiquement.
Sub test() Dim p As Paragraph Dim listeMots As New Collection Dim i As Long Dim doc1, doc2 As String
doc1 = "1-List-taxa" doc2 = "1-Cumul-avantmodif"
Documents.Open "spécifie le chemin du fichier 1-List-taxa"
For Each p In Documents(doc1).Paragraphs If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _ listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1) Next
Documents(doc2).Activate
For i = 1 To listeMots.Count Selection.Find.ClearFormatting With Selection.Find .Text = listeMots.Item(i) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = True .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Do While Selection.Find.Execute = True Selection.Font.Italic = True Loop Next i End Sub
Kamel
"Raymond Poulain" a écrit dans le message de news:
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps. Y-a-t-il quelqu'un pour me corriger ? Merci... ce serait vraiment sympa (et dé-stressant) Raymond
Le principe de la macro (située dans "1-Cumul-avantmodif.doc") est d'appeler un autre fichier Word "1-List-taxa.doc" qui contient une liste de plus de 4500 mots séparés chacun par un paragraphe (pi), de sélectionner le premier mot (qui devient la variable "NomF"), de revenir à "1-Cumul-avantmodif.doc" et de remplacer ce mot variable par lui-même dans tout le fichier (en respectant la casse, mot entier), mais en italique, et ainsi de suite jusqu'à la fin de la liste de mots (chaque mot et chaque signe de paragraphe (pi) sont éffacés au fur et à mesure). Pour bien préciser, voici le début de "1-List-taxa.doc": churchill(pi) degaulle(pi) eisenhower(pi) pétain(pi)
Sub italiques_taxa() ' ' italiques_taxa Macro ' Macro enregistrée le 12/03/05 ' Dim NomF(5000) As String Dim iMax As Integer
Windows("1-List-taxa.doc").Activate
i = 0 Do While True NomF(0) = Dir If NomF(0) = "" Then Exit Do Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend NomF(0) = Dir(Selection) Selection.Cut Selection.Delete Unit:=wdCharacter, Count:=1 Windows("1-Cumul-avantmodif.doc").Activate Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Italic = True With Selection.Find .Text = "NomF(0)" .Replacement.Text = "NomF(0)" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = True .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.HomeKey Unit:=wdStory i = i + 1 Loop iMax = i End Sub
Essaye cela peut etre est-ce une solution. Colle ce code dans le fichier
1-Cumul-avantmodif. Tu dois renseigner le chemin du fichier 1-List-taxa qui
s'ouvre automatiquement.
Sub test()
Dim p As Paragraph
Dim listeMots As New Collection
Dim i As Long
Dim doc1, doc2 As String
doc1 = "1-List-taxa"
doc2 = "1-Cumul-avantmodif"
Documents.Open "spécifie le chemin du fichier 1-List-taxa"
For Each p In Documents(doc1).Paragraphs
If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _
listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1)
Next
Documents(doc2).Activate
For i = 1 To listeMots.Count
Selection.Find.ClearFormatting
With Selection.Find
.Text = listeMots.Item(i)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute = True
Selection.Font.Italic = True
Loop
Next i
End Sub
Kamel
"Raymond Poulain" <RaymondPoulain@discussions.microsoft.com> a écrit dans le
message de news: 6DA3DD65-62FD-4870-AAC2-F4C5794CE22B@microsoft.com...
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me
plante tout le temps.
Y-a-t-il quelqu'un pour me corriger ?
Merci... ce serait vraiment sympa (et dé-stressant)
Raymond
Le principe de la macro (située dans "1-Cumul-avantmodif.doc") est
d'appeler
un autre fichier Word "1-List-taxa.doc" qui contient une liste de plus de
4500 mots séparés chacun par un paragraphe (pi), de sélectionner le
premier
mot (qui devient la variable "NomF"), de revenir à
"1-Cumul-avantmodif.doc"
et de remplacer ce mot variable par lui-même dans tout le fichier (en
respectant la casse, mot entier), mais en italique, et ainsi de suite
jusqu'à
la fin de la liste de mots (chaque mot et chaque signe de paragraphe (pi)
sont éffacés au fur et à mesure).
Pour bien préciser, voici le début de "1-List-taxa.doc":
churchill(pi)
degaulle(pi)
eisenhower(pi)
pétain(pi)
Sub italiques_taxa()
'
' italiques_taxa Macro
' Macro enregistrée le 12/03/05
'
Dim NomF(5000) As String
Dim iMax As Integer
Windows("1-List-taxa.doc").Activate
i = 0
Do While True
NomF(0) = Dir
If NomF(0) = "" Then Exit Do
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
NomF(0) = Dir(Selection)
Selection.Cut
Selection.Delete Unit:=wdCharacter, Count:=1
Windows("1-Cumul-avantmodif.doc").Activate
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Italic = True
With Selection.Find
.Text = "NomF(0)"
.Replacement.Text = "NomF(0)"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey Unit:=wdStory
i = i + 1
Loop
iMax = i
End Sub
Essaye cela peut etre est-ce une solution. Colle ce code dans le fichier 1-Cumul-avantmodif. Tu dois renseigner le chemin du fichier 1-List-taxa qui s'ouvre automatiquement.
Sub test() Dim p As Paragraph Dim listeMots As New Collection Dim i As Long Dim doc1, doc2 As String
doc1 = "1-List-taxa" doc2 = "1-Cumul-avantmodif"
Documents.Open "spécifie le chemin du fichier 1-List-taxa"
For Each p In Documents(doc1).Paragraphs If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _ listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1) Next
Documents(doc2).Activate
For i = 1 To listeMots.Count Selection.Find.ClearFormatting With Selection.Find .Text = listeMots.Item(i) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = True .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Do While Selection.Find.Execute = True Selection.Font.Italic = True Loop Next i End Sub
Kamel
"Raymond Poulain" a écrit dans le message de news:
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps. Y-a-t-il quelqu'un pour me corriger ? Merci... ce serait vraiment sympa (et dé-stressant) Raymond
Le principe de la macro (située dans "1-Cumul-avantmodif.doc") est d'appeler un autre fichier Word "1-List-taxa.doc" qui contient une liste de plus de 4500 mots séparés chacun par un paragraphe (pi), de sélectionner le premier mot (qui devient la variable "NomF"), de revenir à "1-Cumul-avantmodif.doc" et de remplacer ce mot variable par lui-même dans tout le fichier (en respectant la casse, mot entier), mais en italique, et ainsi de suite jusqu'à la fin de la liste de mots (chaque mot et chaque signe de paragraphe (pi) sont éffacés au fur et à mesure). Pour bien préciser, voici le début de "1-List-taxa.doc": churchill(pi) degaulle(pi) eisenhower(pi) pétain(pi)
Sub italiques_taxa() ' ' italiques_taxa Macro ' Macro enregistrée le 12/03/05 ' Dim NomF(5000) As String Dim iMax As Integer
Windows("1-List-taxa.doc").Activate
i = 0 Do While True NomF(0) = Dir If NomF(0) = "" Then Exit Do Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend NomF(0) = Dir(Selection) Selection.Cut Selection.Delete Unit:=wdCharacter, Count:=1 Windows("1-Cumul-avantmodif.doc").Activate Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Italic = True With Selection.Find .Text = "NomF(0)" .Replacement.Text = "NomF(0)" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = True .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.HomeKey Unit:=wdStory i = i + 1 Loop iMax = i End Sub
Geo
Bonjour Raymond Poulain
L'exécution pas à pas de ma macro (avec ou sans "while true") plante au même endroit. Nom F(0)= Dir (alors surligné en jaune)
avec le message : " Erreur d'exécution 5. Argument ou appel de procédure incorrect".
La commande Dir toute seule lit le répertoire *suivant* Il faut donc un précédent.
Normalement on fait : Nom = dir(Monchemin et mon filtre sur les noms et ou les attributs) Do while tant que nom n'est pas vide traiter le fichier Nom Nom = Dir Boucler
Tu as des exemples dans l'aide, évidemment pas exactement le même, mais ça donne des idées. Ceci dit je me suis parfois arraché les cheveux sur ce type de traitement et je n'ai jamais compris pourquoi ça ne marchait pas dans certains cas. Une solution très élégante est dans la faq : la batchmacro d'anacoluthe. --
A+
Bonjour Raymond Poulain
L'exécution pas à pas de ma macro (avec ou sans "while true") plante
au même endroit.
Nom F(0)= Dir (alors surligné en jaune)
avec le message : " Erreur d'exécution 5. Argument ou appel de
procédure incorrect".
La commande Dir toute seule
lit le répertoire *suivant*
Il faut donc un précédent.
Normalement on fait :
Nom = dir(Monchemin et mon filtre sur les noms et ou les attributs)
Do while tant que nom n'est pas vide
traiter le fichier Nom
Nom = Dir
Boucler
Tu as des exemples dans l'aide, évidemment pas exactement le même, mais ça
donne des idées.
Ceci dit je me suis parfois arraché les cheveux sur ce type de traitement
et je n'ai jamais compris pourquoi ça ne marchait pas dans certains cas.
Une solution très élégante est dans la faq : la batchmacro d'anacoluthe.
--
L'exécution pas à pas de ma macro (avec ou sans "while true") plante au même endroit. Nom F(0)= Dir (alors surligné en jaune)
avec le message : " Erreur d'exécution 5. Argument ou appel de procédure incorrect".
La commande Dir toute seule lit le répertoire *suivant* Il faut donc un précédent.
Normalement on fait : Nom = dir(Monchemin et mon filtre sur les noms et ou les attributs) Do while tant que nom n'est pas vide traiter le fichier Nom Nom = Dir Boucler
Tu as des exemples dans l'aide, évidemment pas exactement le même, mais ça donne des idées. Ceci dit je me suis parfois arraché les cheveux sur ce type de traitement et je n'ai jamais compris pourquoi ça ne marchait pas dans certains cas. Une solution très élégante est dans la faq : la batchmacro d'anacoluthe. --
A+
Raymond Poulain
Bonjour Kamel,
Merci beaucoup. Tout baigne. Tu es une bête de VBA ! A+ Ray
Essaye cela peut etre est-ce une solution. Colle ce code dans le fichier 1-Cumul-avantmodif. Tu dois renseigner le chemin du fichier 1-List-taxa qui s'ouvre automatiquement.
Sub test() Dim p As Paragraph Dim listeMots As New Collection Dim i As Long Dim doc1, doc2 As String
doc1 = "1-List-taxa" doc2 = "1-Cumul-avantmodif"
Documents.Open "spécifie le chemin du fichier 1-List-taxa"
For Each p In Documents(doc1).Paragraphs If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _ listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1) Next
Documents(doc2).Activate
For i = 1 To listeMots.Count Selection.Find.ClearFormatting With Selection.Find .Text = listeMots.Item(i) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = True .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Do While Selection.Find.Execute = True Selection.Font.Italic = True Loop Next i End Sub
Kamel
"Raymond Poulain" a écrit dans le message de news:
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps. Y-a-t-il quelqu'un pour me corriger ? Merci... ce serait vraiment sympa (et dé-stressant) Raymond
Le principe de la macro (située dans "1-Cumul-avantmodif.doc") est d'appeler un autre fichier Word "1-List-taxa.doc" qui contient une liste de plus de 4500 mots séparés chacun par un paragraphe (pi), de sélectionner le premier mot (qui devient la variable "NomF"), de revenir à "1-Cumul-avantmodif.doc" et de remplacer ce mot variable par lui-même dans tout le fichier (en respectant la casse, mot entier), mais en italique, et ainsi de suite jusqu'à la fin de la liste de mots (chaque mot et chaque signe de paragraphe (pi) sont éffacés au fur et à mesure). Pour bien préciser, voici le début de "1-List-taxa.doc": churchill(pi) degaulle(pi) eisenhower(pi) pétain(pi)
Sub italiques_taxa() ' ' italiques_taxa Macro ' Macro enregistrée le 12/03/05 ' Dim NomF(5000) As String Dim iMax As Integer
Windows("1-List-taxa.doc").Activate
i = 0 Do While True NomF(0) = Dir If NomF(0) = "" Then Exit Do Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend NomF(0) = Dir(Selection) Selection.Cut Selection.Delete Unit:=wdCharacter, Count:=1 Windows("1-Cumul-avantmodif.doc").Activate Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Italic = True With Selection.Find .Text = "NomF(0)" .Replacement.Text = "NomF(0)" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = True .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.HomeKey Unit:=wdStory i = i + 1 Loop iMax = i End Sub
Bonjour Kamel,
Merci beaucoup. Tout baigne. Tu es une bête de VBA !
A+
Ray
Essaye cela peut etre est-ce une solution. Colle ce code dans le fichier
1-Cumul-avantmodif. Tu dois renseigner le chemin du fichier 1-List-taxa qui
s'ouvre automatiquement.
Sub test()
Dim p As Paragraph
Dim listeMots As New Collection
Dim i As Long
Dim doc1, doc2 As String
doc1 = "1-List-taxa"
doc2 = "1-Cumul-avantmodif"
Documents.Open "spécifie le chemin du fichier 1-List-taxa"
For Each p In Documents(doc1).Paragraphs
If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _
listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1)
Next
Documents(doc2).Activate
For i = 1 To listeMots.Count
Selection.Find.ClearFormatting
With Selection.Find
.Text = listeMots.Item(i)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute = True
Selection.Font.Italic = True
Loop
Next i
End Sub
Kamel
"Raymond Poulain" <RaymondPoulain@discussions.microsoft.com> a écrit dans le
message de news: 6DA3DD65-62FD-4870-AAC2-F4C5794CE22B@microsoft.com...
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me
plante tout le temps.
Y-a-t-il quelqu'un pour me corriger ?
Merci... ce serait vraiment sympa (et dé-stressant)
Raymond
Le principe de la macro (située dans "1-Cumul-avantmodif.doc") est
d'appeler
un autre fichier Word "1-List-taxa.doc" qui contient une liste de plus de
4500 mots séparés chacun par un paragraphe (pi), de sélectionner le
premier
mot (qui devient la variable "NomF"), de revenir à
"1-Cumul-avantmodif.doc"
et de remplacer ce mot variable par lui-même dans tout le fichier (en
respectant la casse, mot entier), mais en italique, et ainsi de suite
jusqu'à
la fin de la liste de mots (chaque mot et chaque signe de paragraphe (pi)
sont éffacés au fur et à mesure).
Pour bien préciser, voici le début de "1-List-taxa.doc":
churchill(pi)
degaulle(pi)
eisenhower(pi)
pétain(pi)
Sub italiques_taxa()
'
' italiques_taxa Macro
' Macro enregistrée le 12/03/05
'
Dim NomF(5000) As String
Dim iMax As Integer
Windows("1-List-taxa.doc").Activate
i = 0
Do While True
NomF(0) = Dir
If NomF(0) = "" Then Exit Do
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
NomF(0) = Dir(Selection)
Selection.Cut
Selection.Delete Unit:=wdCharacter, Count:=1
Windows("1-Cumul-avantmodif.doc").Activate
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Italic = True
With Selection.Find
.Text = "NomF(0)"
.Replacement.Text = "NomF(0)"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey Unit:=wdStory
i = i + 1
Loop
iMax = i
End Sub
Merci beaucoup. Tout baigne. Tu es une bête de VBA ! A+ Ray
Essaye cela peut etre est-ce une solution. Colle ce code dans le fichier 1-Cumul-avantmodif. Tu dois renseigner le chemin du fichier 1-List-taxa qui s'ouvre automatiquement.
Sub test() Dim p As Paragraph Dim listeMots As New Collection Dim i As Long Dim doc1, doc2 As String
doc1 = "1-List-taxa" doc2 = "1-Cumul-avantmodif"
Documents.Open "spécifie le chemin du fichier 1-List-taxa"
For Each p In Documents(doc1).Paragraphs If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _ listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1) Next
Documents(doc2).Activate
For i = 1 To listeMots.Count Selection.Find.ClearFormatting With Selection.Find .Text = listeMots.Item(i) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = True .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Do While Selection.Find.Execute = True Selection.Font.Italic = True Loop Next i End Sub
Kamel
"Raymond Poulain" a écrit dans le message de news:
Bonjour,
Je veux faire une macro simple (ci-dessous) avec une boucle, mais je me plante tout le temps. Y-a-t-il quelqu'un pour me corriger ? Merci... ce serait vraiment sympa (et dé-stressant) Raymond
Le principe de la macro (située dans "1-Cumul-avantmodif.doc") est d'appeler un autre fichier Word "1-List-taxa.doc" qui contient une liste de plus de 4500 mots séparés chacun par un paragraphe (pi), de sélectionner le premier mot (qui devient la variable "NomF"), de revenir à "1-Cumul-avantmodif.doc" et de remplacer ce mot variable par lui-même dans tout le fichier (en respectant la casse, mot entier), mais en italique, et ainsi de suite jusqu'à la fin de la liste de mots (chaque mot et chaque signe de paragraphe (pi) sont éffacés au fur et à mesure). Pour bien préciser, voici le début de "1-List-taxa.doc": churchill(pi) degaulle(pi) eisenhower(pi) pétain(pi)
Sub italiques_taxa() ' ' italiques_taxa Macro ' Macro enregistrée le 12/03/05 ' Dim NomF(5000) As String Dim iMax As Integer
Windows("1-List-taxa.doc").Activate
i = 0 Do While True NomF(0) = Dir If NomF(0) = "" Then Exit Do Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend NomF(0) = Dir(Selection) Selection.Cut Selection.Delete Unit:=wdCharacter, Count:=1 Windows("1-Cumul-avantmodif.doc").Activate Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Italic = True With Selection.Find .Text = "NomF(0)" .Replacement.Text = "NomF(0)" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = True .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.HomeKey Unit:=wdStory i = i + 1 Loop iMax = i End Sub