Bonjour tout le monde, je suis débutant sur Excel.
j'ai créé un formulaire de création de compte utilisateur
je veux boucler sur mes CheckBox en cochant les cases de 1 à 17 en plaçant un "X" dynamiquement dans les cellules concernées de ma feuille "Administrateur" afin d'autoriser l’accès aux feuilles du classeur.
Cependant, j'ai une erreur avec la fonction Me.Controls("CheckBox" & i)
J'ai une autre solution qui consiste a alimenter directement les CheckBox en rajoutant à chaque fois une ligne par CheckBox !
If Me.CheckBox1 = True Then
mais x fois c'est .......................!!!!
Quelqu'un peut il m'éclairer car là, je suis bloqué !
Vous remerciant d'avance pour vos lumières.
Cordialement,
Voila mon code :
Private Sub CdtCreerUnCompte_Click()
'on définit les variables
Dim User As String 'utilisateur
Dim mdp As String 'mot de passe
Dim cnf As String 'confirmation
Dim Coché As Boolean 'case a coché
Dim Derl As Long 'remplissage de la dernière ligne
Dim Ws As Worksheet 'feuille matrice
Set Ws = Sheets("Administrateur") 'selection de la feuille Administrateur
Coché = False 'position de départ de la case (décoché)
'on vérifie que l'utilisateur à rempli tous les champs
If Me.TextBox1 = "" Or Me.TextBox2 = "" Or Me.TextBox3 = "" Then
MsgBox "Veuillez remplir tous les champs" 'message si champ manquant
Exit Sub 'on ferme la boite de dialogue
End If
User = Me.TextBox1 'on attribut les valeurs aux variables
mdp = Me.TextBox2
cnf = Me.TextBox3
For i = 1 To 17 'on crée une boucle de controle
'on vérifie si au moins une case est coché
If Me.Controls("CheckBox" & i) = True Then
Coché = True
End If
Next i 'on passe à létape suivante
If Coché = False Then 'si condition case coché est fausse, on a une alerte
MsgBox "Veuillez cochez au moins une feuille"
Exit Sub 'on ferme la boite de dialogue
End If 'on sort de la condition
'on définit la plage de cellules à remplir en fonction de la derniere ligne
Derl = Ws.Range("A" & Rows.Count).End(xlUp).Row + 1
For Each C In Ws.Range("A2:A" & Derl) 'on créer une boucle de vérification
If C = User Then 'pour les utilisateur que l'on rajoute
MsgBox "Ce nom d'utilisateur est déja utilisé, veuillez saisir un autre"
Exit Sub 'on ferme la boite de dialogue
End If 'on ferme la condition
Next
If mdp <> cnf Then 'pour le mot de passe créé
MsgBox "Les mots de passe ne sont pas identiques"
Me.TextBox2 = "" 'on vide les textbox
Me.TextBox3 = ""
Exit Sub 'on sort du programme
End If
If MsgBox("Voulez vous créer ce compte?", vbYesNo, "Création du compte") = vbYes Then
With Ws
.Range("A" & Derl).Value = User
.Range("B" & Derl).Value = mdp
For i = 1 To 17
If Me.Controls("CheckBox" & i) = True Then
.Cells(Derl, i + 2).Value = "X"
End If
Next i
End With
MsgBox "Ce compte a été créer avec succés"
'on libère l'espace mémoire
End If
Set Ws = Nothing
End Sub
j'ai créé un formulaire de création de compte utilisateur
je veux boucler sur mes CheckBox en cochant les cases de 1 à 17 en plaçant un "X" dynamiquement dans les cellules concernées de ma feuille "Administrateur" afin d'autoriser l’accès aux feuilles du classeur.
Cependant, j'ai une erreur avec la fonction Me.Controls("CheckBox" & i)
J'ai une autre solution qui consiste a alimenter directement les CheckBox en rajoutant à chaque fois une ligne par CheckBox !
If Me.CheckBox1 = True Then
mais x fois c'est .......................!!!!
Quelqu'un peut il m'éclairer car là, je suis bloqué !
Vous remerciant d'avance pour vos lumières.
Cordialement,
Voila mon code :
Private Sub CdtCreerUnCompte_Click()
'on définit les variables
Dim User As String 'utilisateur
Dim mdp As String 'mot de passe
Dim cnf As String 'confirmation
Dim Coché As Boolean 'case a coché
Dim Derl As Long 'remplissage de la dernière ligne
Dim Ws As Worksheet 'feuille matrice
Set Ws = Sheets("Administrateur") 'selection de la feuille Administrateur
Coché = False 'position de départ de la case (décoché)
'on vérifie que l'utilisateur à rempli tous les champs
If Me.TextBox1 = "" Or Me.TextBox2 = "" Or Me.TextBox3 = "" Then
MsgBox "Veuillez remplir tous les champs" 'message si champ manquant
Exit Sub 'on ferme la boite de dialogue
End If
User = Me.TextBox1 'on attribut les valeurs aux variables
mdp = Me.TextBox2
cnf = Me.TextBox3
For i = 1 To 17 'on crée une boucle de controle
'on vérifie si au moins une case est coché
If Me.Controls("CheckBox" & i) = True Then
Coché = True
End If
Next i 'on passe à létape suivante
If Coché = False Then 'si condition case coché est fausse, on a une alerte
MsgBox "Veuillez cochez au moins une feuille"
Exit Sub 'on ferme la boite de dialogue
End If 'on sort de la condition
'on définit la plage de cellules à remplir en fonction de la derniere ligne
Derl = Ws.Range("A" & Rows.Count).End(xlUp).Row + 1
For Each C In Ws.Range("A2:A" & Derl) 'on créer une boucle de vérification
If C = User Then 'pour les utilisateur que l'on rajoute
MsgBox "Ce nom d'utilisateur est déja utilisé, veuillez saisir un autre"
Exit Sub 'on ferme la boite de dialogue
End If 'on ferme la condition
Next
If mdp <> cnf Then 'pour le mot de passe créé
MsgBox "Les mots de passe ne sont pas identiques"
Me.TextBox2 = "" 'on vide les textbox
Me.TextBox3 = ""
Exit Sub 'on sort du programme
End If
If MsgBox("Voulez vous créer ce compte?", vbYesNo, "Création du compte") = vbYes Then
With Ws
.Range("A" & Derl).Value = User
.Range("B" & Derl).Value = mdp
For i = 1 To 17
If Me.Controls("CheckBox" & i) = True Then
.Cells(Derl, i + 2).Value = "X"
End If
Next i
End With
MsgBox "Ce compte a été créer avec succés"
'on libère l'espace mémoire
End If
Set Ws = Nothing
End Sub