if then next
Le
nospam
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
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

Poser une question


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
bpr3bg$ha0$
Olivier a écrit dans le message de news:
bpr3bg$ha0$
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 After:=Workbooks(nom_fichier_copie).Sheets(1)
Next
@+ popi
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.