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!
A voir également:
- Si case cochée alors excel
- Si ou excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Déplacer colonne excel - Guide
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 :
Mais on peut également faire beaucoup plus court comme code...
A voir si intéressé.
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é.
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 SubJ'ai utilisé ton code simplifié et ça fonctionne très bien!