Visual Basic : repeter une action jusque... - VB/VBA/VBS - Programmation
Marsh Posté le 24-01-2003 à 11:25:08
C'est peut etre que ta condition de fin de boucle ne peut jamais etre remplie.
Marsh Posté le 24-01-2003 à 11:28:44
El Tristo a écrit : je souhaite faire une macro sous Word qui fasse une recherche sur un mot et une fois qu'il est trouve, rajoute un truc (ce n'est pas un remplacement). |
poste peut être ta boucle histoire de voir
Marsh Posté le 24-01-2003 à 12:32:41
Sub Macro1() |
voila
Marsh Posté le 24-01-2003 à 13:09:15
El Tristo a écrit :
|
euh... elle est où ta condition d'arret ?
Marsh Posté le 24-01-2003 à 13:12:16
Loom the gloom a écrit : |
ben c'est la le probleme, j'aimerais savoir comment poser comme condition d'arret la fin du document
Marsh Posté le 24-01-2003 à 15:48:36
Dans certains basiques, y a
do
loop while (condition_qui_fait_continuer)
ou
do
loop until(condition_qui_fait_quitter)
voire un exit do en cours de code pour sortir du tourbillon infini.
Faudrait savoir ce qui provoquera l'arrêt : fin de texte, de sélection, erreur "système" genre "y a plus de caractères".
Si y a moyen de savoir avant entrée ds la boucle la taille (nb de caractères) de la sélection, on peut alors comparer à Compteur ?
Marsh Posté le 24-01-2003 à 16:00:20
El Tristo a écrit : |
tu fais un goto:
do
if condition realisé goto sortie
...
loop
:sortie
Marsh Posté le 24-01-2003 à 19:21:47
merci les copains, mais justement c'est la condition de sortie que je cherche
Citation : ben c'est la le probleme, j'aimerais savoir comment poser comme condition d'arret la fin du document |
Marsh Posté le 24-01-2003 à 20:33:44
Si ce n'est pas un remplacement ou est ce que tu veut mettre le "truc".
Est ce qu'il y a plusieurs fois le meme mot à chercher dans ton texte.
Une fois que tu l'as touvé tu met ton compteur à 1 et tu fait ta modif.
Si il y est plusieurs fois tu peut peut etre faire ligne par ligne.
ps:La condition d'arret il n'y a que toi qui peut la connaitre.
Mais pour ex si tu arrive à la fin du document et que tu as trouvé tous les exemplaires de ta chaine dans ton document tu peut penser à quitter ta boucle.
Marsh Posté le 24-01-2003 à 22:32:46
amsterdam a écrit : Si ce n'est pas un remplacement ou est ce que tu veut mettre le "truc". |
ma condition d'arret, c'est : une fois que j'ai atteint la fin du document.
La question est : comment le coder dans ma macro ?
(j'ai un fichier de 50 pages de cas de tests que je dois numeroter, et je souhaite le faire de facon automatique)
Marsh Posté le 24-01-2003 à 22:34:33
La fonction Selection.Find.Execute ne retourne pas de valeur de retour ? Pourrait dire : y a plus rien.
J'y connais rien, mais Selection.Find.ClearFormatting devrait pas être hors boucle do ?
Y a pas une fonction qui permettrait de savoir si fin de document atteinte ? (genre EndOfDocument, ou qq chose du même style).
NB : je ne connais pas VBA d'Office (car je l'ai pas, trop cher) => ce ne sont que des suggestions.
Marsh Posté le 24-01-2003 à 22:39:46
CARBON_14 a écrit : La fonction Selection.Find.Execute ne retourne pas de valeur de retour ? Pourrait dire : y a plus rien. |
je connais encore moins que toi
Il existe une fonction EOF, mais ca marche si j'ouvre le document avant au moyen d'une autre fonction, et ca devient compliqué, y a plusieurs modes d'ouverture
En fait ce qu'il se passe, c'est que la macro tourne trop bien : une fois arrivée à la fin du document, elle recommence depuis le début, indéfiniment
Marsh Posté le 25-01-2003 à 01:24:39
comme ça sans réfléchir :
si tu vire ton compteur et que tu remplace le do...loop par un while not (tondocument).eof....Wend
ça pourrait marcher
dis moi si je me trompe
Marsh Posté le 25-01-2003 à 13:54:15
Loom the gloom a écrit : comme ça sans réfléchir : |
oki, j'essayerai lundi et je te dis ca
Marsh Posté le 27-01-2003 à 10:46:56
Loom the gloom a écrit : comme ça sans réfléchir : |
ca marche pas
ThisDocument.eof n'existe pas
c'est de la merde en barre VBA
Marsh Posté le 24-01-2003 à 09:53:05
je souhaite faire une macro sous Word qui fasse une recherche sur un mot et une fois qu'il est trouve, rajoute un truc (ce n'est pas un remplacement).
Bref, je voudrais repeter la requete jusqu'a atteindre le document, je ne sais comment ecrire la boucle Do... Loop
(ma macro tourne en boucle et je suis oblige de tuer l'application pour en sortir )
Merci !
---------------
I fart in your general direction