égalité de Checkbox + Sauvegarde des données à la fermeture fichier

perpitou

XLDnaute Occasionnel
Bonjour à tous,
je cherche à savoir pourquoi lorsque je coche les 2 checkbox la msgbox ne se déclenche pas et lorsque je décoche la msgbox apparait. Je ne vois pas où est mon erreur, voici mon code:

Code:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
CheckBox1.BackColor = vbGreen
CheckBox1.Caption = "Complet"
Else
CheckBox1.BackColor = vbWhite
CheckBox1.Caption = "Complet"
End If

End Sub


Private Sub CheckBox7_Click()
If CheckBox7.Value = True Then
CheckBox7.BackColor = vbRed
CheckBox7.Caption = "Incomplet"
Else
CheckBox7.BackColor = vbWhite
CheckBox7.Caption = "Incomplet"
End If
If CheckBox1.Value = CheckBox7.Value = True Then
MsgBox "Veuillez ne choisir qu'une seule case!", vbExclamation + vbOKOnly, Title = "ATTENTION!"
Else
End If
End Sub
 
Dernière édition:

perpitou

XLDnaute Occasionnel
Re : MsgBox déclenché entre égalité de Checkbox.

Ben c'est là où j'arrive à mon autre problème car je pense que c'est la seule solution pour récupérer les informations (dont ici les checkbox ) de différents userforms dans un seul et même userform. Est ce possible?
 
G

Guest

Guest
Re : MsgBox déclenché entre égalité de Checkbox.

Re,

A priori ce serait oui, mais ta question trop vague pour y répondre plus précisément (comme dans l'autre fil). Nous ne pouvons pas deviner ce que tu veux faire exactement, ni créer les choses à ta place.

A+
 
G

Guest

Guest
Re : MsgBox déclenché entre égalité de Checkbox.

Re,

Pour répondre à la question du post #4

Quand tu cliques sur un checkbox seul l'évènement click correspondant à ce checkbox est exécuté pas l'autre.

Donc si tu tiens absolument à avoir des checkBox, cela pourrait-être du genre:

Avec message
Code:
Private Sub CheckBox1_Click()
    If CheckBox1 Then
        If Checkbox7 Then
            MsgBox "Les deux ne peuvent être cochés en même temps"
            Checkbox7 = False 'cela va déclencher l'évènement CheckBox7_Click
        End If
        CheckBox1.BackColor = vbGreen
        CheckBox1.Caption = "Complet"
    Else
        CheckBox1.BackColor = vbRed
        CheckBox1.Caption = "Incomplet"
    End If
End Sub
Private Sub Checkbox7_Click()
    If Checkbox7 Then
        If CheckBox1 Then
            MsgBox "Les deux ne peuvent être cochés en même temps"
            CheckBox1 = False 'cela va déclencher l'évènement CheckBox1_Click
        End If
        Checkbox7.BackColor = vbGreen
        Checkbox7.Caption = "Complet"
    Else
        Checkbox7.BackColor = vbRed
        Checkbox7.Caption = "Incomplet"
    End If
End Sub

A mon avis le message utilisateur est inutile, il verra que lorsqu'il coche une checkbox l'autre se décoche s'il était également coché.

A+
 
Dernière modification par un modérateur:

perpitou

XLDnaute Occasionnel
Re : égalité de Checkbox + Sauvegarde des données à la fermeture fichier

Bonjour à tous,
J'ai donc modifié et écouté les conseils de Hasco.
J'ai apporté des modifications pour pouvoir récupérer les informations à l'ouverture et fermeture du fichier, car j'aimerai utilisé ces informations dans un autre userform. Pour cela j'ai fait cela :
Private Sub CheckBox1_Click()

Code:
If Range("A1").Value = 1 Then
CheckBox1.Value = True
 Else
 CheckBox7.Value = True
 End If

    If CheckBox1 Then
        If CheckBox7 Then
                  CheckBox7 = False 'cela va déclencher l'évènement CheckBox7_Click
        End If
        CheckBox1.BackColor = vbGreen
        CheckBox1.Caption = "Complet"
             
    Else
        CheckBox1.BackColor = vbWhite
        CheckBox1.Caption = "Complet"
    End If
    
 If CheckBox1.Value = True Then
 Range("A1").Value = 1
 Else
 Range("A1").Value = 0
 End If

End Sub
Private Sub Checkbox7_Click()
    If CheckBox7 Then
        If CheckBox1 Then
              CheckBox1 = False 'cela va déclencher l'évènement CheckBox1_Click
        End If
        CheckBox7.BackColor = vbRed
    
        CheckBox7.Caption = "Incomplet"
    Else
        CheckBox7.BackColor = vbWhite
        CheckBox7.Caption = "Incomplet"
        
    End If
End Sub

Avec ça j'ai mes informations qui se rangent au bon emplacement(A1) mais les checkbox ne les prennent pas en compte à l'ouverture.

Pourquoi?

Merci d'avance
 
G

Guest

Guest
Re : égalité de Checkbox + Sauvegarde des données à la fermeture fichier

Bonsoir,

Utiliser l'évènement UserForm_Initialize()
Code:
Private Sub UserForm_Initialize()
'Déclenchera l'évènement CheckBox1_Click qui changera la valeur du CheckBox7 si besoin
CheckBox1 = Range("A1").Value = 1 ' une double égalité renvoie True ou False (si non vérifiée)
CheckBox7 = not CheckBox1
End Sub

N.B.Checbox1 (tout court) = ChecBox1.Value(la propriété .Value étant la propriété par défaut des CheckBox, comme de la plupart des contrôles de userform)

l'évènement CheckBox1_Click ne contiendra plus que:
Code:
Private Sub CheckBox1_Click()
    If CheckBox1 Then
         If CheckBox7 Then CheckBox7 = False 'cela va déclencher l'évènement CheckBox7_Click
         CheckBox1.BackColor = vbGreen
         CheckBox1.Caption = "Complet"
         Range("A1").Value = 1
     Else
         CheckBox1.BackColor = vbWhite
         CheckBox1.Caption = "Complet"
         Range("A1").Value = 0
     End If
End Sub

P.S. tu devrais suivre un tutoriel sur la programmation évènementielle Exemple
Les meilleurs cours et ressources pour Excel

A+
 

Discussions similaires

Réponses
6
Affichages
262

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet