Initialiser un CheckBox à l'ouverture d'un Userform

poups

XLDnaute Occasionnel
Bonjour a tous,
J'ai créé un UserForm avec 3 case a coché, un bouton OK et un annulé
Quand je coche les casses ou pas cela écrit les informations correspondant (vrai / faux) dans des cellules
Jusque la cela fonctionne bien

Maintenant j'aimerais qu'a l'ouverture de mon Userform (Initialize), cela cherche les infos disponible dans les mêmes céllules et que cela coche les casses ou pas

Mon code si dessous ne marche pas évidement ...
Merci de votre aide


Private Sub UserForm_Initialize()
'A l'ouverture de l'userform ecrit des valeurs dans les textbox
Dim ESS1 As String
Dim ESS2 As String
Dim ESS3 As String

Sheets("Feuil1").Range("G4").Value = ESS1
Sheets("Feuil1").Range("G5").Value = ESS2
Sheets("Feuil1").Range("G6").Value = ESS3
CheckBox1 = ESS1
CheckBox2 = ESS2
CheckBox3 = ESS3

End Sub


Private Sub Annule_Click()

Unload Me

End Sub

Private Sub OK_Click()
'Bouton OK valide l'userform
Dim ESS1 As String
Dim ESS2 As String
Dim ESS3 As String

ESS1 = CheckBox1.Value
ESS2 = CheckBox2.Value
ESS3 = CheckBox3.Value

Sheets("Feuil1").Range("G4").Value = ESS1
Sheets("Feuil1").Range("G5").Value = ESS2
Sheets("Feuil1").Range("G6").Value = ESS3

Unload Me

End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Initialiser un CheckBox à l'ouverture d'un Userform

Bonsoir.
Maintenant j'aimerais qu'a l'ouverture de mon Userform (Initialize), cela cherche les infos disponible dans les mêmes cellules et que cela coche les casses ou pas
Dans ce cas pourquoi affectez vous aux Value des cellules des variables non initialisées et de surcroit déclarées As String au lieu de As Boolean ? Affectez simplement au contraire directement les Value des cellules aux CheckBox. Dans les cellules, VRAI et FAUX apparaissant en majuscules ne sont pas des textes mais des valeurs logiques.
 

Staple1600

XLDnaute Barbatruc
Re : Initialiser un CheckBox à l'ouverture d'un Userform

Bonsoir à tous


Même piste que Dranreb
Et ci-dessous ma façon de réécrire ton code
(j'ai donc ajouter un CommandButton sur ton userform)
Code:
Private Sub CommandButton1_Click()
With Sheets("Feuil1").Range("G4")
    .Value = CheckBox1.Value
    .Offset(1) = CheckBox2.Value
    .Offset(2) = CheckBox3.Value
End With
Me.Hide
End Sub

PS: Pourquoi tu parles de TextBox dans la lgne de commentaires alors qu'il s'agit de CheckBox ?

Code:
Private Sub UserForm_Initialize()
'A l'ouverture de l'userform ecrit des valeurs dans les textbox
With Sheets("Feuil1").Range("G4")
    CheckBox1 = .Value
    CheckBox2 = .Offset(1)
    CheckBox3 = .Offset(2)
End With
End Sub
 

poups

XLDnaute Occasionnel
Re : Initialiser un CheckBox à l'ouverture d'un Userform

Bonjour Dranred, Bonjour Staple,
Merci pour vos réponces

J'ai dcripté le post de Dranred, et je suis arrivé à cela et cela semble fonctionel comme je le voulais

Private Sub UserForm_Initialize()
'A l'ouverture de l'userform ecrit des valeurs dans les Checkbox

Dim ESS1 As Boolean
Dim ESS2 As Boolean
Dim ESS3 As Boolean

ESS1 = Sheets("Feuil1").Range("G4").Value
ESS2 = Sheets("Feuil1").Range("G5").Value
ESS3 = Sheets("Feuil1").Range("G6").Value

CheckBox1 = ESS1
CheckBox2 = ESS2
CheckBox3 = ESS3

End Sub



Private Sub CommandButton9_Click()
'Bouton Annule de l'userform
Unload Me

End Sub

Private Sub CommandButton8_Click()
'Bouton OK valide l'userform
Dim ESS1 As String
Dim ESS2 As String
Dim ESS3 As String

ESS1 = CheckBox1.Value
ESS2 = CheckBox2.Value
ESS3 = CheckBox3.Value

Sheets("Feuil1").Range("G4").Value = ESS1
Sheets("Feuil1").Range("G5").Value = ESS2
Sheets("Feuil1").Range("G6").Value = ESS3

Unload Me

End Sub


Je testerais le code de Staple en fin de semaine
J'avoue quand première aproche mon niveau en VB ne ma permis de tous comprendre mais bon ...
Pourrais tu m'espliquer le code ?

je vais tenter quand même
 

Dranreb

XLDnaute Barbatruc
Re : Initialiser un CheckBox à l'ouverture d'un Userform

Bonjour.
Vous avez très bien décrypté mes explications.
La proposition de Staple illustre surtout le fait que vous n'avez pas besoin de variables intermédiaires.
Vous pouvez directement effectuer des affectations dans les deux sens entre les CheckBox et les Value de cellules.
Elle évite en outre deux recherches de feuille dans la collection Sheets du classeur.
Vous pouvez aussi l'éviter par des expressions de la forme Feuil1.[G4].Value si toutefois Feuil1 est bien le nom VBA de la feuille nommée "Feuil1" pour Excel (Vérifier dans l'explorateur de projets, rubrique "Microsoft Excel Objets").
 

Staple1600

XLDnaute Barbatruc
Re : Initialiser un CheckBox à l'ouverture d'un Userform

Bonsoir à tous

Je testerais le code de Staple en fin de semaine
J'avoue quand première aproche mon niveau en VB ne ma permis de tous comprendre mais bon ...
Pourrais tu m'espliquer le code ?
je vais tenter quand même
Quelles sont les lignes de code que tu ne comprends pas?
L'utilisation de With/End With? de Offset ?
 

Si...

XLDnaute Barbatruc
Re : Initialiser un CheckBox à l'ouverture d'un Userform

salut

sans With ni Offset (n'est-ce pas Staple ;))
Code:
Private Sub UserForm_Initialize()
 For n = 1 To 3
    Me("CheckBox" & n) = Sheets("Feuil1").Cells(3 + n, "G") 
  Next
End Sub
Private Sub CommandButton1_Click()
  For n = 1 To 3
    Sheets("Feuil1").Cells(3 + n, "G") = Me("CheckBox" & n)
  Next
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 247
Messages
2 086 591
Membres
103 248
dernier inscrit
Happycat