Condition si plusieurs cases à cocher sont cochées
Résolu
bassmart
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous!
J'ai créer un Userform avec une liste déroulante pour les noms et plusieurs cases à cocher qui représente les différentes feuilles de mon classeur. Le but de ce Userform est d'envoyer le nom de la personne qui à modifié le document ainsi que la date, sur la feuille qu'il à modifié en cochant la bonne case.
J'ai utilisé en partant la fonction "If" et "ElseIf", ça fonctionne, si je sélectionne une seule case. Mais ça ne fonctionne plus si je sélectionne plusieurs case! J'ai essayé par la suite la fonction "Case", alors là, il me copie le nom sur toutes les feuilles même si j'en sélectionne juste une.
Voici mes deux essais:
Merci de votre aide!
J'ai créer un Userform avec une liste déroulante pour les noms et plusieurs cases à cocher qui représente les différentes feuilles de mon classeur. Le but de ce Userform est d'envoyer le nom de la personne qui à modifié le document ainsi que la date, sur la feuille qu'il à modifié en cochant la bonne case.
J'ai utilisé en partant la fonction "If" et "ElseIf", ça fonctionne, si je sélectionne une seule case. Mais ça ne fonctionne plus si je sélectionne plusieurs case! J'ai essayé par la suite la fonction "Case", alors là, il me copie le nom sur toutes les feuilles même si j'en sélectionne juste une.
Voici mes deux essais:
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
wns = "Coordonnées"
zone = "ZoneCoord"
ZoneDate = "ZoneDateCoord"
ElseIf CheckBox2.Value = True Then
wns = "CPTU"
zone = "ZoneCPTU"
ZoneDate = "ZoneDateCPTU"
ElseIf CheckBox3.Value = True Then
wns = "Piézomètres"
zone = "ZonePiézo"
ZoneDate = "ZoneDatePiézo"
ElseIf CheckBox4.Value = True Then
wns = "Inclinomètres"
zone = "ZoneInclino"
ZoneDate = "ZoneDateInclino"
ElseIf CheckBox5.Value = True Then
wns = "Suivi Implantation"
zone = "ZoneImplant"
ZoneDate = "ZoneDateImplant"
ElseIf CheckBox6.Value = True Then
wns = "FORAGE"
zone = "ZoneForage"
ZoneDate = "ZoneDateForage"
End If
If ComboBox1 = "" Then
MsgBox "Vous devez inscrire votre nom!", vbCritical, "NOM"
Exit Sub
End If
If wns = "" Then
MsgBox "Vous-n'avez pas sélectionnez de feuilles!", vbCritical, "Feuilles"
Exit Sub
End If
Sheets(wns).Shapes(zone).TextFrame.Characters.Text = ComboBox1.Value
Sheets(wns).Shapes(ZoneDate).TextFrame.Characters.Text = Label3
UserForm5.Hide
End Sub
et l'autre:
Private Sub CommandButton1_Click()
Dim i As Variant
For i = 1 To 6
On Error Resume Next
Erase critères
On Error GoTo 0
Select Case i
Case 1
critères = CheckBox1.Value = True
wns = "Coordonnées"
zone = "ZoneCoord"
ZoneDate = "ZoneDateCoord"
Case 2
critères = CheckBox2.Value = True
wns = "CPTU"
zone = "ZoneCPTU"
ZoneDate = "ZoneDateCPTU"
Case 3
critères = CheckBox3.Value = True
wns = "Piézomètres"
zone = "ZonePiézo"
ZoneDate = "ZoneDatePiézo"
Case 4
critères = CheckBox4.Value = True
wns = "Inclinomètres"
zone = "ZoneInclino"
ZoneDate = "ZoneDateInclino"
Case 5
critères = CheckBox5.Value = True
wns = "Suivi Implantation"
zone = "ZoneImplant"
ZoneDate = "ZoneDateImplant"
Case 6
critères = CheckBox6.Value = True
wns = "FORAGE"
zone = "ZoneForage"
ZoneDate = "ZoneDateForage"
End Select
If ComboBox1 = "" Then
MsgBox "Vous devez inscrire votre nom!", vbCritical, "NOM"
Exit Sub
End If
If crtières = "" Then
MsgBox "Vous-n'avez pas sélectionnez de feuilles!", vbCritical, "Feuilles"
Exit Sub
End If
Sheets(wns).Shapes(zone).TextFrame.Characters.Text = ComboBox1.Value
Sheets(wns).Shapes(ZoneDate).TextFrame.Characters.Text = Label3
Next
UserForm5.Hide
End Sub
Merci de votre aide!
1 réponse
-
Bonjour,
Pour faire simple, en reprenant votre code, il suffit d'utiliser des If/End If en lieu et place des If/ElseIf/EndIf :Private Sub CommandButton1_Click() If CheckBox1.Value = True Then wns = "Coordonnées" zone = "ZoneCoord" ZoneDate = "ZoneDateCoord" End If If CheckBox2.Value = True Then wns = "CPTU" zone = "ZoneCPTU" ZoneDate = "ZoneDateCPTU" End If If CheckBox3.Value = True Then wns = "Piézomètres" zone = "ZonePiézo" ZoneDate = "ZoneDatePiézo" End If If CheckBox4.Value = True Then wns = "Inclinomètres" zone = "ZoneInclino" ZoneDate = "ZoneDateInclino" End If If CheckBox5.Value = True Then wns = "Suivi Implantation" zone = "ZoneImplant" ZoneDate = "ZoneDateImplant" End If If CheckBox6.Value = True Then wns = "FORAGE" zone = "ZoneForage" ZoneDate = "ZoneDateForage" End If If ComboBox1 = "" Then MsgBox "Vous devez inscrire votre nom!", vbCritical, "NOM" Exit Sub End If If wns = "" Then MsgBox "Vous-n'avez pas sélectionnez de feuilles!", vbCritical, "Feuilles" Exit Sub End If Sheets(wns).Shapes(zone).TextFrame.Characters.Text = ComboBox1.Value Sheets(wns).Shapes(ZoneDate).TextFrame.Characters.Text = Label3 UserForm5.Hide End Sub
Mais on peut également faire beaucoup plus court comme code...
A voir si intéressé.
-
Exemple :
Option Explicit Const FEUILLES As String = "Coordonnées;CPTU;Piézomètres;Inclinomètres;Suivi Implantation;FORAGE" Const ZONES As String = "ZoneCoord;ZoneCPTU;ZonePiézo;ZoneInclino;ZoneImplant;ZoneForage" Const ZONESDATES As String = "ZoneDateCoord;ZoneDateCPTU;ZoneDatePiézo;ZoneDateInclino;ZoneDateImplant;ZoneDateForage" Private Sub CommandButton1_Click() Dim i As Integer 'vérification If ComboBox1 = "" Then MsgBox "Vous devez inscrire votre nom!", vbCritical, "NOM" Exit Sub End If 'insertion données For i = 1 To 6 If Me.Controls("CheckBox" & i).Value = True Then With Sheets(Split(FEUILLES, ";")(i - 1)) .Shapes(Split(ZONES, ";")(i - 1)).TextFrame.Characters.Text = ComboBox1.Value .Shapes(Split(ZONESDATES, ";")(i - 1)).TextFrame.Characters.Text = Label3.Caption End With End If Next i Me.Hide End Sub
-