niikkoo
Messages postés50Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention 4 septembre 2007
-
29 juil. 2005 à 14:07
niikkoo
Messages postés50Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention 4 septembre 2007
-
29 juil. 2005 à 15:52
salut g le code suivant
For i = 1 To 3
If WsExist(UserForm1.Controls("txtnaff" & i).Value) = True Then
ActiveWorkbook.Sheets(UserForm1.Controls("txtnaff" & i).Value).Select: GoSub coloration
Exit Sub
Else
ActiveWorkbook.Sheets.Add.Name = UserForm1.Controls("txtnaff" & i).Value: GoSub coloration
Exit Sub
End If
Next i
il ne m'execute que l'une ou l'autre partie du code après then alors que la condition peut etre true ou false selon i. mon Gosub est il mal placé?
Niikko
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 29 juil. 2005 à 14:34
Non, ton problème vient du Exit Sub.
J'ai remis un peu tout ça en forme :
Public Sub MonTest()
For i = 1 To 3
'Teste si ton machin existe
If WsExist(UserForm1.Controls("txtnaff" & i).Value) = True Then
'Si il existe, tu sélectionnes ta feuille
ActiveWorkbook.Sheets(UserForm1.Controls("txtnaff" & i).Value).Select
'Tu effectues ta routine de coloration
GoSub Coloration
'Tu sors de la procédure MonTest
Exit Sub
Else
'Si il n'existe pas, tu ajoutes une feuille
ActiveWorkbook.Sheets.Add.Name = UserForm1.Controls("txtnaff" & i).Value
'Tu effectues ta routine de coloration
GoSub Coloration
'Tu sors de la procédure MonTest
Exit Sub
End If
Next i
Coloration:
MsgBox "Coloration"
Return
End Sub
Conclusion : dès le premier passage dans ta boucle (i=1), quel que soit le résultat du test tu sors de la procédure. Les passages suivants (i=2 et i=3) ne se font donc pas. Il faut sortir de la proc après la boucle.
Public Sub MonTest()
For i = 1 To 3
'Teste si ton machin existe
If WsExist(UserForm1.Controls("txtnaff" & i).Value) = True Then
'Si il existe, tu sélectionnes ta feuille
ActiveWorkbook.Sheets(UserForm1.Controls("txtnaff" & i).Value).Select
'Tu effectues ta routine de coloration
GoSub Coloration
Else
'Si il n'existe pas, tu ajoutes une feuille
ActiveWorkbook.Sheets.Add.Name = UserForm1.Controls("txtnaff" & i).Value
'Tu effectues ta routine de coloration
GoSub Coloration
End If
Next i
'Tu sors de la procédure MonTest à la fin de la boucle
Exit Sub
Coloration:
MsgBox "Coloration"
Return
End Sub
PS : En général, je préfère créer une procédure Coloration, plutôt que d'utiliser un GoSub. Je trouve le code plus facile à lire surtout quand tu commences à mettre des
GoSub C1
...
GoSub C2
...
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 29 juil. 2005 à 14:41
Est-ce qu'on utilise Gosub de nos jours ??
Bon, avec gosub le procedure coloration doit avoir "Return" à la fin
pour revenir à la case de départ sinon au lieu de "txtnaff" &
i ==> "txtnaff" & trim(str(i))
PS: Si votre problème est résolu, prière de bien vouloir clôturer votre message par une réponse acceptée !
niikkoo
Messages postés50Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention 4 septembre 2007 29 juil. 2005 à 15:52
je ne suis qu'un débutant je fais donc avec les moyens du bord
merci à mrdep1978...effectivement il me fait le traitement dans les conditions false et true avec le exit sub bien placé..... sauf que maintenant il plante dans la boucle for si je laisse un des "txtnaff" vide
Niikko