Condition si plusieurs cases à cocher sont cochées

Résolu/Fermé
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 19 mai 2015 à 15:19
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 19 mai 2015 à 16:44
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:
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:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
19 mai 2015 à 15:42
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é.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
19 mai 2015 à 15:56
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
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
19 mai 2015 à 16:44
Merci beaucoup pijaku!

J'ai utilisé ton code simplifié et ça fonctionne très bien!
0