CheckBox dans un UserForm

Hello à tous,

J'aimerais activer ou désactiver toutes les checkbox d'un UserForm. Pour cela il y a la façon "débutant":

Private Sub ALL_USERS_Click()

'J'active tous les utilisateurs sauf les cases marquées comme VIDE car grisée au lancement du formulaire:

   If [INV_USER1].Value = "VIDE" Then USER1.Value = False Else USER1.Value = True
   If [INV_USER2].Value = "VIDE" Then USER2.Value = False Else USER2.Value = True
   If [INV_USER3].Value = "VIDE" Then USER3.Value = False Else USER3.Value = True
   If [INV_USER4].Value = "VIDE" Then USER4.Value = False Else USER4.Value = True
   If [INV_USER5].Value = "VIDE" Then USER5.Value = False Else USER5.Value = True
   If [INV_USER6].Value = "VIDE" Then USER6.Value = False Else USER6.Value = True
   If [INV_USER7].Value = "VIDE" Then USER7.Value = False Else USER7.Value = True
   If [INV_USER8].Value = "VIDE" Then USER8.Value = False Else USER8.Value = True
   If [INV_USER9].Value = "VIDE" Then USER9.Value = False Else USER9.Value = True
   If [INV_USER10].Value = "VIDE" Then USER10.Value = False Else USER10.Value = True
   If [INV_USER11].Value = "VIDE" Then USER11.Value = False Else USER11.Value = True
   If [INV_USER12].Value = "VIDE" Then USER12.Value = False Else USER12.Value = True
   If [INV_USER13].Value = "VIDE" Then USER13.Value = False Else USER13.Value = True
   If [INV_USER14].Value = "VIDE" Then USER14.Value = False Else USER14.Value = True
   If [INV_USER15].Value = "VIDE" Then USER15.Value = False Else USER15.Value = True
   If [INV_USER16].Value = "VIDE" Then USER16.Value = False Else USER16.Value = True

If ALL_USERS.Value = False Then

'Je désactive toutes les checkbox

    USER1.Value = False
    USER2.Value = False
    USER3.Value = False
    USER4.Value = False
    USER5.Value = False
    USER6.Value = False
    USER7.Value = False
    USER8.Value = False
    USER9.Value = False
    USER10.Value = False
    USER11.Value = False
    USER12.Value = False
    USER13.Value = False
    USER14.Value = False
    USER15.Value = False
    USER16.Value = False

End If
End Sub

Maintenant, quelle serait la façon "pro" de le faire avec une variable DIM?

J'en ai essayé plusieurs mais je n'arrive pas à faire que cela fonctionne comme par exemple:

Dim x As Long
If Me.ALL_USERS.Value = True Then
For x = 1 To 16
Me.OLEObjects("USER" & x).Object.Value = True
Next x
End If

J'ai le message d'erreur "Membre de méthode ou de données introuvables".

Erreur sur : Me.OLEObjects

Merci d'avance pour votre aide.

Patrick.

Bonjour,

Le but de la manoeuvre est-il de remettre le Userform dans sa configuration d'origine à l'ouverture ?

Bonjour Xmenpl,

oui et non.

Le but est d'éviter d'avoir à écrire la même ligne pour les 16 utilisateurs tant pour activer que pour désactiver et donc d'avoir aussi ce genre de code:

Private Sub UserForm_Initialize()

'Je nomme les cases à cocher selon le nom des utilisateurs enregistrés dans USER:

    USER1.Caption = Worksheets("USERS").Range("INV_USER1")
    USER2.Caption = Worksheets("USERS").Range("INV_USER2")
    USER3.Caption = Worksheets("USERS").Range("INV_USER3")
    USER4.Caption = Worksheets("USERS").Range("INV_USER4")
    USER5.Caption = Worksheets("USERS").Range("INV_USER5")
    USER6.Caption = Worksheets("USERS").Range("INV_USER6")
    USER7.Caption = Worksheets("USERS").Range("INV_USER7")
    USER8.Caption = Worksheets("USERS").Range("INV_USER8")
    USER9.Caption = Worksheets("USERS").Range("INV_USER9")
    USER10.Caption = Worksheets("USERS").Range("INV_USER10")
    USER11.Caption = Worksheets("USERS").Range("INV_USER11")
    USER12.Caption = Worksheets("USERS").Range("INV_USER12")
    USER13.Caption = Worksheets("USERS").Range("INV_USER13")
    USER14.Caption = Worksheets("USERS").Range("INV_USER14")
    USER15.Caption = Worksheets("USERS").Range("INV_USER15")
    USER16.Caption = Worksheets("USERS").Range("INV_USER16")

'A l'ouverture du formulaire, je désactive les cases où il n'y a pas d'utilisateur (VIDE):

    If USER1.Caption = "VIDE" Then USER1.Enabled = False
    If USER2.Caption = "VIDE" Then USER2.Enabled = False
    If USER3.Caption = "VIDE" Then USER3.Enabled = False
    If USER4.Caption = "VIDE" Then USER4.Enabled = False
    If USER5.Caption = "VIDE" Then USER5.Enabled = False
    If USER6.Caption = "VIDE" Then USER6.Enabled = False
    If USER7.Caption = "VIDE" Then USER7.Enabled = False
    If USER8.Caption = "VIDE" Then USER8.Enabled = False
    If USER9.Caption = "VIDE" Then USER9.Enabled = False
    If USER10.Caption = "VIDE" Then USER10.Enabled = False
    If USER11.Caption = "VIDE" Then USER11.Enabled = False
    If USER12.Caption = "VIDE" Then USER12.Enabled = False
    If USER13.Caption = "VIDE" Then USER13.Enabled = False
    If USER14.Caption = "VIDE" Then USER14.Enabled = False
    If USER15.Caption = "VIDE" Then USER15.Enabled = False
    If USER16.Caption = "VIDE" Then USER16.Enabled = False

'A l'ouverture du formulaire, je récupère les valeurs des utilisateurs atifs pour l'inventaire:

    If [USER1_ACTIF] = "OUI" Then USER1.Value = True
    If [USER2_ACTIF] = "OUI" Then USER2.Value = True
    If [USER3_ACTIF] = "OUI" Then USER3.Value = True
    If [USER4_ACTIF] = "OUI" Then USER4.Value = True
    If [USER5_ACTIF] = "OUI" Then USER5.Value = True
    If [USER6_ACTIF] = "OUI" Then USER6.Value = True
    If [USER7_ACTIF] = "OUI" Then USER7.Value = True
    If [USER8_ACTIF] = "OUI" Then USER8.Value = True
    If [USER9_ACTIF] = "OUI" Then USER9.Value = True
    If [USER10_ACTIF] = "OUI" Then USER10.Value = True
    If [USER11_ACTIF] = "OUI" Then USER11.Value = True
    If [USER12_ACTIF] = "OUI" Then USER12.Value = True
    If [USER13_ACTIF] = "OUI" Then USER13.Value = True
    If [USER14_ACTIF] = "OUI" Then USER14.Value = True
    If [USER15_ACTIF] = "OUI" Then USER15.Value = True
    If [USER16_ACTIF] = "OUI" Then USER16.Value = True

End Sub

Private Sub USER1_Change()

'Je valide ou pas l'utilisateur 1 pour faire l'inventaire:

[USER1_ACTIF] = IIf(USER1, "OUI", "")

End Sub

Private Sub USER2_Change()

'Je valide ou pas l'utilisateur 2 pour faire l'inventaire:

[USER2_ACTIF] = IIf(USER2, "OUI", "")

End Sub
Private Sub USER3_Change()

'Je valide ou pas l'utilisateur 3 pour faire l'inventaire:

[USER3_ACTIF] = IIf(USER3, "OUI", "")

End Sub

Private Sub USER4_Change()

'Je valide ou pas l'utilisateur 4 pour faire l'inventaire:

[USER4_ACTIF] = IIf(USER4, "OUI", "")

End Sub
Private Sub USER5_Change()

'Je valide ou pas l'utilisateur 5 pour faire l'inventaire:

[USER5_ACTIF] = IIf(USER5, "OUI", "")

End Sub
Private Sub USER6_Change()

'Je valide ou pas l'utilisateur 6 pour faire l'inventaire:

[USER6_ACTIF] = IIf(USER6, "OUI", "")

End Sub
Private Sub USER7_Change()

'Je valide ou pas l'utilisateur 7 pour faire l'inventaire:

[USER7_ACTIF] = IIf(USER7, "OUI", "")

End Sub
Private Sub USER8_Change()

'Je valide ou pas l'utilisateur 8 pour faire l'inventaire:

[USER8_ACTIF] = IIf(USER8, "OUI", "")

End Sub
Private Sub USER9_Change()

'Je valide ou pas l'utilisateur 9 pour faire l'inventaire:

[USER9_ACTIF] = IIf(USER9, "OUI", "")

End Sub
Private Sub USER10_Change()

'Je valide ou pas l'utilisateur 10 pour faire l'inventaire:

[USER10_ACTIF] = IIf(USER10, "OUI", "")

End Sub
Private Sub USER11_Change()

'Je valide ou pas l'utilisateur 11 pour faire l'inventaire:

[USER11_ACTIF] = IIf(USER11, "OUI", "")

End Sub
Private Sub USER12_Change()

'Je valide ou pas l'utilisateur 12 pour faire l'inventaire:

[USER12_ACTIF] = IIf(USER12, "OUI", "")

End Sub
Private Sub USER13_Change()

'Je valide ou pas l'utilisateur 13 pour faire l'inventaire:

[USER13_ACTIF] = IIf(USER13, "OUI", "")

End Sub
Private Sub USER14_Change()

'Je valide ou pas l'utilisateur 1 pour faire l'inventaire:

[USER1_ACTIF] = IIf(USER1, "OUI", "")

End Sub
Private Sub USER15_Change()

'Je valide ou pas l'utilisateur 15 pour faire l'inventaire:

[USER15_ACTIF] = IIf(USER15, "OUI", "")

End Sub
Private Sub USER16_Change()

'Je valide ou pas l'utilisateur 16 pour faire l'inventaire:

[USER16_ACTIF] = IIf(USER16, "OUI", "")

End Sub

Merci.

Bonjour

pour le premier event click

supprimer toute les lignes en commentaire

Private Sub ALL_USERS_Click()

'J'active tous les utilisateurs sauf les cases marquées comme VIDE car grisée au lancement du formulaire:
    Dim i&
    For i = 1 To 16
        Me.Controls("USER" & i).Enabled = Not Range("INV_USER" & i).Value = "VIDE"
    Next
    'If [INV_USER1].Value = "VIDE" Then USER1.Value = False Else USER1.Value = True
    'If [INV_USER2].Value = "VIDE" Then USER2.Value = False Else USER2.Value = True
    ' If [INV_USER3].Value = "VIDE" Then USER3.Value = False Else USER3.Value = True
    'If [INV_USER4].Value = "VIDE" Then USER4.Value = False Else USER4.Value = True
    'If [INV_USER5].Value = "VIDE" Then USER5.Value = False Else USER5.Value = True
    'If [INV_USER6].Value = "VIDE" Then USER6.Value = False Else USER6.Value = True
    'If [INV_USER7].Value = "VIDE" Then USER7.Value = False Else USER7.Value = True
    'If [INV_USER8].Value = "VIDE" Then USER8.Value = False Else USER8.Value = True
    'If [INV_USER9].Value = "VIDE" Then USER9.Value = False Else USER9.Value = True
    'If [INV_USER10].Value = "VIDE" Then USER10.Value = False Else USER10.Value = True
    'If [INV_USER11].Value = "VIDE" Then USER11.Value = False Else USER11.Value = True
    'If [INV_USER12].Value = "VIDE" Then USER12.Value = False Else USER12.Value = True
    'If [INV_USER13].Value = "VIDE" Then USER13.Value = False Else USER13.Value = True
    'If [INV_USER14].Value = "VIDE" Then USER14.Value = False Else USER14.Value = True
    'If [INV_USER15].Value = "VIDE" Then USER15.Value = False Else USER15.Value = True
    'If [INV_USER16].Value = "VIDE" Then USER16.Value = False Else USER16.Value = True

    If ALL_USERS.Value = False Then

        'Je désactive toutes les checkbox
        For i = 1 To 16: Me.Controls("USER" & i).Enabled = False: Next
        'USER1.Value = False
        ' USER2.Value = False
        'USER3.Value = False
        'USER4.Value = False
        'USER5.Value = False
        'USER6.Value = False
        'USER7.Value = False
        'USER8.Value = False
        'USER9.Value = False
        'USER10.Value = False
        'USER11.Value = False
        'USER12.Value = False
        'USER13.Value = False
        'USER14.Value = False
        'USER15.Value = False
        'USER16.Value = False

    End If
End Sub

re re

même punition pour le initialyse

supprime les lignes en commentaire

Private Sub UserForm_Initialize()

'Je nomme les cases à cocher selon le nom des utilisateurs enregistrés dans USER:
    Dim I&
    For I = 1 To 16
        With Me.Controls("USER" & I)
            .Caption = Worksheets("USERS").Range("INV_USER" & I)
            .Value = Range("USER" & I & "_ACTIF").Value = "OUI"
            .Enabled = .Caption <> "VIDE"
        End With
    Next
    'USER1.Caption = Worksheets("USERS").Range("INV_USER1")
    ' USER2.Caption = Worksheets("USERS").Range("INV_USER2")
    ' USER3.Caption = Worksheets("USERS").Range("INV_USER3")
    'USER4.Caption = Worksheets("USERS").Range("INV_USER4")
    'USER5.Caption = Worksheets("USERS").Range("INV_USER5")
    ' USER6.Caption = Worksheets("USERS").Range("INV_USER6")
    'USER7.Caption = Worksheets("USERS").Range("INV_USER7")
    'USER8.Caption = Worksheets("USERS").Range("INV_USER8")
    'USER9.Caption = Worksheets("USERS").Range("INV_USER9")
    'USER10.Caption = Worksheets("USERS").Range("INV_USER10")
    'USER11.Caption = Worksheets("USERS").Range("INV_USER11")
    'USER12.Caption = Worksheets("USERS").Range("INV_USER12")
    'USER13.Caption = Worksheets("USERS").Range("INV_USER13")
    'USER14.Caption = Worksheets("USERS").Range("INV_USER14")
    'USER15.Caption = Worksheets("USERS").Range("INV_USER15")
    'USER16.Caption = Worksheets("USERS").Range("INV_USER16")

    'A l'ouverture du formulaire, je désactive les cases où il n'y a pas d'utilisateur (VIDE):

    'If USER1.Caption = "VIDE" Then USER1.Enabled = False
    'If USER2.Caption = "VIDE" Then USER2.Enabled = False
    'If USER3.Caption = "VIDE" Then USER3.Enabled = False
    'If USER4.Caption = "VIDE" Then USER4.Enabled = False
    'If USER5.Caption = "VIDE" Then USER5.Enabled = False
    'If USER6.Caption = "VIDE" Then USER6.Enabled = False
    'If USER7.Caption = "VIDE" Then USER7.Enabled = False
    'If USER8.Caption = "VIDE" Then USER8.Enabled = False
    'If USER9.Caption = "VIDE" Then USER9.Enabled = False
    'If USER10.Caption = "VIDE" Then USER10.Enabled = False
    'If USER11.Caption = "VIDE" Then USER11.Enabled = False
    'If USER12.Caption = "VIDE" Then USER12.Enabled = False
    'If USER13.Caption = "VIDE" Then USER13.Enabled = False
    'If USER14.Caption = "VIDE" Then USER14.Enabled = False
    'If USER15.Caption = "VIDE" Then USER15.Enabled = False
    'If USER16.Caption = "VIDE" Then USER16.Enabled = False

    'A l'ouverture du formulaire, je récupère les valeurs des utilisateurs atifs pour l'inventaire:

    'If [USER1_ACTIF] = "OUI" Then USER1.Value = True
    'If [USER2_ACTIF] = "OUI" Then USER2.Value = True
    'If [USER3_ACTIF] = "OUI" Then USER3.Value = True
    'If [USER4_ACTIF] = "OUI" Then USER4.Value = True
    'If [USER5_ACTIF] = "OUI" Then USER5.Value = True
    'If [USER6_ACTIF] = "OUI" Then USER6.Value = True
    'If [USER7_ACTIF] = "OUI" Then USER7.Value = True
    'If [USER8_ACTIF] = "OUI" Then USER8.Value = True
    'If [USER9_ACTIF] = "OUI" Then USER9.Value = True
    'If [USER10_ACTIF] = "OUI" Then USER10.Value = True
    'If [USER11_ACTIF] = "OUI" Then USER11.Value = True
    'If [USER12_ACTIF] = "OUI" Then USER12.Value = True
    'If [USER13_ACTIF] = "OUI" Then USER13.Value = True
    'If [USER14_ACTIF] = "OUI" Then USER14.Value = True
    'If [USER15_ACTIF] = "OUI" Then USER15.Value = True
    'If [USER16_ACTIF] = "OUI" Then USER16.Value = True

End Sub

Salut patrickT,

C'est bien cela que je voulais et je n'étais pas si loin du but que ça :)

J'ai juste modifié un paramètre car je me suis mal exprimé: Je voulais cocher ou décocher toutes les cases. J'ai donc changé ENABLE par VALUE et ça fonctionne vraiment bien (voir ci-dessous).

Je te remercie bien pour ton retour et je valide la réponse définitive pour clôturer cette question sur le forum.

Bonne journée.

Patrick.

Dim I&
    For I = 1 To 16
        Me.Controls("USER" & I).Value = Not Range("INV_USER" & I).Value = "VIDE"
    Next
Rechercher des sujets similaires à "checkbox userform"