GNT sans publicité, site mobile, fonctionnalitées exclusives...

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
Lire les 3 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stéphane [MS]
Le #287666
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

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
Le #287576
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 After:=Workbooks(nom_fichier_copie).Sheets(1)
Next

@+ popi

Vincent.
Le #287372
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
.



Publicité
Suivre les réponses
Poster une réponse
Anonyme