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 SubMaintenant, 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 SubMerci.
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 Subre 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 SubSalut 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