Bonjour,
Je suis nouvellement inscrit sur ce forum mais j'ai de nombreuses fois trouvé mes réponses dans d'autres posts. Etant d'ordinaire plus enclin à chercher (et à trouver) les solutions par moi-même, vous comprendrez que si je me suis résigné à venir chercher de l'aide c'est que je suis dans une impasse.
Je vous replace le contexte. Je travail sur un UserForm avec un Multipage (5 pages). Cette UserForm est destiné à des personnes n'ayant pas beaucoup d'affinité avec Excel (compétences très faibles). C'est pour cette raison que je programme un maximum de poka-yoke et de message de demande de confirmation.
Je souhaiterai concaténer plusieurs blocs IF.
Actuellement, sur une page j'ai 8 checkbox (nommées cbc1e à cbc8e), et 2 fois 8 textbox (nommés nc1e à nc8e et cc1e à cc8e) et un bouton nommé imporeau.
Lorsque j'active la première checkbox, la deuxième checkbox et les deux textbox associés à la première checkbox sont actives (Enabled = True).
Ainsi de suite pour les 8 checkbox.
Lorsque l'utilisateur active le bouton imporeau, une msgbox s'affiche avec un message de vérification : "le compteur" nc1e "se trouve dans la colone " cc1e)
et ce, pour les 8 compteurs.
Voici mes lignes de commandes. Elles fonctionnent mais prennent beaucoup de place (et je dois les répéter sur 2 autres pages de mon multipage avec des cbc1g et cbc1l et des nc1g, nc1l et cc1g et cc1l).
Puis les deux bloc if si dessus sont répétés 4 fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Dim text1 As String Dim text2 As String Dim text3 As String Dim text4 As String Dim text5 As String Dim text6 As String Dim text7 As String Dim text8 As String Dim style As String Dim titre As String style = vbYesNo titre = "Etape2" '*** Vérification du premier compteur *** If cbc1e.Value = True Then If nc1e.Value = "" Or cc1e.Value = "" Then erreur = MsgBox("Il manque une information pour un compteur!") Exit Sub End If text1 = "- Le compteur " & Chr(34) & UCase(nc1e) & Chr(34) & " se trouve dans la colonne " & Chr(34) & UCase(cc1e) & Chr(34) & " de la feuille de consommation." End If '*** Vérification du deuxième compteur *** If cbc2e.Value = True Then If nc2e.Value = "" Or cc2e.Value = "" Then erreur = MsgBox("Il manque une information pour un compteur!") Exit Sub End If text2 = "- Le compteur " & Chr(34) & UCase(nc2e) & Chr(34) & " se trouve dans la colonne " & Chr(34) & UCase(cc2e) & Chr(34) & " de la feuille de consommation." End If
Enfin j'affiche ma MsgBox avec (text1, text2, text3......text8, style, titre)
Est-il possible boucler ces commandes? Si oui comment?
Puis-je conserver la dénomination des éléments (cbc1e cbc1g, nc1e...) ou le chiffre doit-il obligatoirement se trouver en dernière position pour une loop?
Pour info, suite à ce message de confirmation, des données sont importées depuis un autre fichier à partir des colonnes renseignée dans les textbox cc1e à cc8e d'où l'importance de la vérification.
Merci d'avance à tous ceux qui se pencheront sur mon problème.
Cordialement
Guntherbt
Partager