Lancer une fonction sous condition

me8me Messages postés 3 Date d'inscription lundi 25 octobre 2010 Statut Membre Dernière intervention 25 octobre 2010 - 25 oct. 2010 à 14:17
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 25 oct. 2010 à 14:48
bonjour à tous,

mon probléme est, j'ai 3 cellules en face de chaque cellule j'ai 3 checkbox, avec mes checkbox et mes cases je dois excuté une fonction mais avec des conditions, j'ai 8 conditions:
si ma 1 case est rempli et mon checkbox activé -> imprimepdf
si ma 2 case est rempli et mon checkbox activé -> imprimepdf
si ma 3 case est rempli et mon checkbox activé -> imprimepdf
si mes deux case 1 et 2 remplies et mes deux checkbox box sont activé -> imprimepdf
si mes deux case 1 et 3 remplies et mes deux checkbox box sont activé -> imprimepdf
si mes deux case 3 et 2 remplies et mes deux checkbox box sont activé -> imprimepdf
si mes trois cases remplies et mes 3 checkbox activés -> imprimepdf

j'ai excel 2003


voici un code pas finis que j'essai de tester mais ca marche pas comme je le veux:

Private Sub CheckBox1_Click()
If Not IsEmpty(Cells(2, 6)) And CheckBox1 Then
ImprimePDF
ElseIf Not IsEmpty(Cells(2, 6)) And Not IsEmpty(Cells(3, 6)) And CheckBox2 And CheckBox1 Then
ImprimePDF
ElseIf IsEmpty(Cells(2, 6)) = False And CheckBox1 And CheckBox2 And CheckBox3 And CheckBox4 Then
ImprimePDF
End If
End Sub

Private Sub CheckBox2_Click()
If IsEmpty(Cells(3, 6)) = False And CheckBox2 Then
ImprimePDF
ElseIf IsEmpty(Cells(3, 6)) = False And CheckBox1 And CheckBox2 And CheckBox3 And CheckBox4 Then
ImprimePDF
End If
End Sub

Private Sub CheckBox3_Click()
If IsEmpty(Cells(4, 6)) = False And CheckBox3 Then
ImprimePDF
ElseIf IsEmpty(Cells(4, 6)) = False And CheckBox1 And CheckBox2 And CheckBox3 And CheckBox4 Then
ImprimePDF
End If
End Sub

Private Sub CheckBox4_Click()
If IsEmpty(Cells(5, 6)) = False And CheckBox4 Then
ImprimePDF
ElseIf IsEmpty(Cells(5, 6)) = False And CheckBox1 And CheckBox2 And CheckBox3 And CheckBox4 Then
ImprimePDF
End If
End Sub

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 oct. 2010 à 14:48
Salut

"mais ca marche pas comme je le veux"
Pas clair.
C'est à toi de faire l'analyse, pas à nous.
Ton code ne reflète pas tes conditions énumérées en tête de message. Il en manque.

Puisque le test est fait dans le _Click de la Checkbox, le test ne concernera que cette Checkbox et sa cellule associée.
Donc :
-1- dans tes tests, commence par le test de la CheckBox. Si elle n'est pas cochée, pas la peine de tester le reste : il n'y aura pas de ImprimePdf
-2- A quoi te sert de rechercher un couple ? De toute façon, le test 'couple' dépend de l'état de la CheckBox qui vient de changer d'état et de ta cellule.

Apprends à déboguer ton programme :
- F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement

Pour info, ces deux formes sont équivalentes :
If IsEmpty(Cells(4, 6)) = False Then
If Not IsEmpty(Cells(4, 6)) Then
Ce serait bine de standardiser la syntaxe d'une manière ou de l'autre = plus facile à relire.

Es-tu sûr que Checbox1 (tout seul) renvoie bien son état ?
La syntaxe complète devrait être Checkbox.Value = True

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous