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).

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
Puis les deux bloc if si dessus sont répétés 4 fois.

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