Voici la macro ci-dessous. Le but est de recopier des feuilles d'un classeur
(nom_fichier) à l'autre (nom_fichier_copie).
Je voudrais ignorer dans cette démarche une seule feuille (nommée
"pastoucher"). Je ne veux donc pas quitter totalement la boucle mais ignorer
la suite des instructions dans cette boucle.
J'ai donc ajouté la ligne "If nom_feuille_courante = "pastoucher" Then Next
i" mais il me jette en me disant erreur macro : "next sans for".
Comment faire ?
For i = 1 To nbfeuille
Windows(nom_fichier).Activate
nom_feuille_courante = Sheets(i).Name
If nom_feuille_courante = "pastoucher" Then Next i
Windows(nom_fichier_copie).Activate
Sheets.Add
ActiveSheet.Name = nom_feuille_courante
................
................
next i
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
Stéphane [MS]
Bonjour,
La structure à adopter serait plutôt du style :
For i = 1 To nbfeuille
If nom_feuille_courante = "pastoucher" Then ' traitement si le test est vérifié
End if Next
Cdlt Stéphane
a écrit dans le message de news: bpr3bg$ha0$
Bonjour,
Voici la macro ci-dessous. Le but est de recopier des feuilles d'un classeur
(nom_fichier) à l'autre (nom_fichier_copie). Je voudrais ignorer dans cette démarche une seule feuille (nommée "pastoucher"). Je ne veux donc pas quitter totalement la boucle mais ignorer
la suite des instructions dans cette boucle. J'ai donc ajouté la ligne "If nom_feuille_courante = "pastoucher" Then Next
i" mais il me jette en me disant erreur macro : "next sans for". Comment faire ?
For i = 1 To nbfeuille Windows(nom_fichier).Activate nom_feuille_courante = Sheets(i).Name If nom_feuille_courante = "pastoucher" Then Next i Windows(nom_fichier_copie).Activate Sheets.Add ActiveSheet.Name = nom_feuille_courante ................ ................ next i
merci d'avance
Olivier
Bonjour,
La structure à adopter serait plutôt du style :
For i = 1 To nbfeuille
If nom_feuille_courante = "pastoucher" Then
' traitement si le test est vérifié
End if
Next
Cdlt
Stéphane
<nospam@nospam.com> a écrit dans le message de news:
bpr3bg$ha0$1@news-reader1.wanadoo.fr...
Bonjour,
Voici la macro ci-dessous. Le but est de recopier des feuilles d'un
classeur
(nom_fichier) à l'autre (nom_fichier_copie).
Je voudrais ignorer dans cette démarche une seule feuille (nommée
"pastoucher"). Je ne veux donc pas quitter totalement la boucle mais
ignorer
la suite des instructions dans cette boucle.
J'ai donc ajouté la ligne "If nom_feuille_courante = "pastoucher" Then
Next
i" mais il me jette en me disant erreur macro : "next sans for".
Comment faire ?
For i = 1 To nbfeuille
Windows(nom_fichier).Activate
nom_feuille_courante = Sheets(i).Name
If nom_feuille_courante = "pastoucher" Then Next i
Windows(nom_fichier_copie).Activate
Sheets.Add
ActiveSheet.Name = nom_feuille_courante
................
................
next i
If nom_feuille_courante = "pastoucher" Then ' traitement si le test est vérifié
End if Next
Cdlt Stéphane
a écrit dans le message de news: bpr3bg$ha0$
Bonjour,
Voici la macro ci-dessous. Le but est de recopier des feuilles d'un classeur
(nom_fichier) à l'autre (nom_fichier_copie). Je voudrais ignorer dans cette démarche une seule feuille (nommée "pastoucher"). Je ne veux donc pas quitter totalement la boucle mais ignorer
la suite des instructions dans cette boucle. J'ai donc ajouté la ligne "If nom_feuille_courante = "pastoucher" Then Next
i" mais il me jette en me disant erreur macro : "next sans for". Comment faire ?
For i = 1 To nbfeuille Windows(nom_fichier).Activate nom_feuille_courante = Sheets(i).Name If nom_feuille_courante = "pastoucher" Then Next i Windows(nom_fichier_copie).Activate Sheets.Add ActiveSheet.Name = nom_feuille_courante ................ ................ next i
merci d'avance
Olivier
popi
Salut Olivier,
Olivier a écrit dans le message de news: bpr3bg$ha0$
Bonjour,
Voici la macro ci-dessous. Le but est de recopier des feuilles d'un classeur
(nom_fichier) à l'autre (nom_fichier_copie). Je voudrais ignorer dans cette démarche une seule feuille (nommée "pastoucher"). Je ne veux donc pas quitter totalement la boucle mais ignorer
la suite des instructions dans cette boucle. J'ai donc ajouté la ligne "If nom_feuille_courante = "pastoucher" Then Next
i" mais il me jette en me disant erreur macro : "next sans for". Comment faire ?
Pour compléter Stéphane, pour garder le fil de ta macro tu pourrais sauter à une ligne portant une étiquette juste avant le next i du genre : ... If nom_feuille_courante = "pastoucher" Then GoTo feuille_a_garder ... ... feuille_a_garder: ' ici l'étiquette avec les 2 points obligatoires Next i
Celà dit tu peux aussi simplifier comme çà :
Workbooks(nom_fichier).Activate For Each s In Worksheets If s.Name <> "pastoucher" Then s.Copy After:=Workbooks(nom_fichier_copie).Sheets(1) Next
@+ popi
Salut Olivier,
Olivier a écrit dans le message de news:
bpr3bg$ha0$1@news-reader1.wanadoo.fr...
Bonjour,
Voici la macro ci-dessous. Le but est de recopier des feuilles d'un
classeur
(nom_fichier) à l'autre (nom_fichier_copie).
Je voudrais ignorer dans cette démarche une seule feuille (nommée
"pastoucher"). Je ne veux donc pas quitter totalement la boucle mais
ignorer
la suite des instructions dans cette boucle.
J'ai donc ajouté la ligne "If nom_feuille_courante = "pastoucher" Then
Next
i" mais il me jette en me disant erreur macro : "next sans for".
Comment faire ?
Pour compléter Stéphane, pour garder le fil de ta macro tu pourrais sauter à
une ligne portant une étiquette juste avant le next i du genre :
...
If nom_feuille_courante = "pastoucher" Then GoTo feuille_a_garder
...
...
feuille_a_garder: ' ici l'étiquette avec les 2 points obligatoires
Next i
Celà dit tu peux aussi simplifier comme çà :
Workbooks(nom_fichier).Activate
For Each s In Worksheets
If s.Name <> "pastoucher" Then s.Copy
After:=Workbooks(nom_fichier_copie).Sheets(1)
Next
Olivier a écrit dans le message de news: bpr3bg$ha0$
Bonjour,
Voici la macro ci-dessous. Le but est de recopier des feuilles d'un classeur
(nom_fichier) à l'autre (nom_fichier_copie). Je voudrais ignorer dans cette démarche une seule feuille (nommée "pastoucher"). Je ne veux donc pas quitter totalement la boucle mais ignorer
la suite des instructions dans cette boucle. J'ai donc ajouté la ligne "If nom_feuille_courante = "pastoucher" Then Next
i" mais il me jette en me disant erreur macro : "next sans for". Comment faire ?
Pour compléter Stéphane, pour garder le fil de ta macro tu pourrais sauter à une ligne portant une étiquette juste avant le next i du genre : ... If nom_feuille_courante = "pastoucher" Then GoTo feuille_a_garder ... ... feuille_a_garder: ' ici l'étiquette avec les 2 points obligatoires Next i
Celà dit tu peux aussi simplifier comme çà :
Workbooks(nom_fichier).Activate For Each s In Worksheets If s.Name <> "pastoucher" Then s.Copy After:=Workbooks(nom_fichier_copie).Sheets(1) Next
@+ popi
Vincent.
Salut ! Ton problème vient du fait que tu as oublié le End If avant le Next. Du coup, quand le compilateur arrive sur le If, il va le plus loin possible dans le code pour trouver le End If. Là- dessus, il tombe sur un Next qui n'a pas de for (dans le cadre du If). Du coup, il te le dit : Next sans For... Et c'est assez peu visible de voir que ce n'est pas dans la boucle qu'il y a un problème mais dans le test ! Voilà, j'espère avoir été assez clair ! A+
V.
-----Message d'origine----- Bonjour,
Voici la macro ci-dessous. Le but est de recopier des feuilles d'un classeur
(nom_fichier) à l'autre (nom_fichier_copie). Je voudrais ignorer dans cette démarche une seule feuille (nommée
"pastoucher"). Je ne veux donc pas quitter totalement la boucle mais ignorer
la suite des instructions dans cette boucle. J'ai donc ajouté la ligne "If nom_feuille_courante = "pastoucher" Then Next
i" mais il me jette en me disant erreur macro : "next sans for".
Comment faire ?
For i = 1 To nbfeuille Windows(nom_fichier).Activate nom_feuille_courante = Sheets(i).Name If nom_feuille_courante = "pastoucher" Then Next i Windows(nom_fichier_copie).Activate Sheets.Add ActiveSheet.Name = nom_feuille_courante ................ ................ next i
merci d'avance
Olivier .
Salut !
Ton problème vient du fait que tu as oublié le End If
avant le Next.
Du coup, quand le compilateur arrive sur le If, il va le
plus loin possible dans le code pour trouver le End If. Là-
dessus, il tombe sur un Next qui n'a pas de for (dans le
cadre du If). Du coup, il te le dit : Next sans For...
Et c'est assez peu visible de voir que ce n'est pas dans
la boucle qu'il y a un problème mais dans le test !
Voilà, j'espère avoir été assez clair !
A+
V.
-----Message d'origine-----
Bonjour,
Voici la macro ci-dessous. Le but est de recopier des
feuilles d'un classeur
(nom_fichier) à l'autre (nom_fichier_copie).
Je voudrais ignorer dans cette démarche une seule feuille
(nommée
"pastoucher"). Je ne veux donc pas quitter totalement la
boucle mais ignorer
la suite des instructions dans cette boucle.
J'ai donc ajouté la ligne "If nom_feuille_courante
= "pastoucher" Then Next
i" mais il me jette en me disant erreur macro : "next
sans for".
Comment faire ?
For i = 1 To nbfeuille
Windows(nom_fichier).Activate
nom_feuille_courante = Sheets(i).Name
If nom_feuille_courante = "pastoucher" Then Next i
Windows(nom_fichier_copie).Activate
Sheets.Add
ActiveSheet.Name = nom_feuille_courante
................
................
next i
Salut ! Ton problème vient du fait que tu as oublié le End If avant le Next. Du coup, quand le compilateur arrive sur le If, il va le plus loin possible dans le code pour trouver le End If. Là- dessus, il tombe sur un Next qui n'a pas de for (dans le cadre du If). Du coup, il te le dit : Next sans For... Et c'est assez peu visible de voir que ce n'est pas dans la boucle qu'il y a un problème mais dans le test ! Voilà, j'espère avoir été assez clair ! A+
V.
-----Message d'origine----- Bonjour,
Voici la macro ci-dessous. Le but est de recopier des feuilles d'un classeur
(nom_fichier) à l'autre (nom_fichier_copie). Je voudrais ignorer dans cette démarche une seule feuille (nommée
"pastoucher"). Je ne veux donc pas quitter totalement la boucle mais ignorer
la suite des instructions dans cette boucle. J'ai donc ajouté la ligne "If nom_feuille_courante = "pastoucher" Then Next
i" mais il me jette en me disant erreur macro : "next sans for".
Comment faire ?
For i = 1 To nbfeuille Windows(nom_fichier).Activate nom_feuille_courante = Sheets(i).Name If nom_feuille_courante = "pastoucher" Then Next i Windows(nom_fichier_copie).Activate Sheets.Add ActiveSheet.Name = nom_feuille_courante ................ ................ next i