Stocker variable InputBox

Résolu
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -  
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai écrit le code

Private Sub CheckBox1_Click() 
    Dim reponse as integer 
    If Userform1.CheckBox1.Value = true then 
            reponse=1 
            else 
                reponse=0 
   End If
End Sub

Puis dans mon bouton de validation :

Private Sub Label1_Click()

MsgBox(reponse)

End Sub


Quand je lance mon Userform, que je coche la case et que je valide, ma MsgBox est vide...

Merci de votre aide.

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Essaies en déclarant repose comme variable globale

    Dim reponse as integer 

    Private Sub CheckBox1_Click()
    If Userform1.CheckBox1.Value = true then
    reponse=1
    else
    reponse=0
    End If
    End Sub

    Private Sub Label1_Click()
    MsgBox(reponse)
    End Sub

    Cdlmnt
    0
    1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      Effectivement, ça marche. Merci. Je me perd souvent avec les variables globales. On est d'accord que ce sont les mêmes que les variables publiques?
      0
    2. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      En utilisant exactement le même raisonnement, pourquoi ce genre de code m'affiche une MsgBox vide alors que j'ai coché une case?

      Dim TYPE_PALETTE_DP608 As String
      Dim TYPE_PALETTE_DP610 As String
      Dim TYPE_PALETTE_PRO80 As String
      Dim TYPE_PALETTE_PR100 As String
      
      
      Private Sub CheckBox1_Click()
      If UserForm1.CheckBox1.Value = True Then
        TYPE_PALETTE_PRO608 = "DP608"
      Else
      TYPE_PALETTE_PRO608 = ""
      End If
      End Sub
      
      Private Sub CheckBox2_Click()
      If UserForm1.CheckBox1.Value = True Then
        TYPE_PALETTE_DP610 = "DP610"
      Else
      TYPE_PALETTE_PRO610 = ""
      End If
      End Sub
      
      Private Sub CheckBox3_Click()
      If UserForm1.CheckBox1.Value = True Then
        TYPE_PALETTE_PRO80 = "PRO80"
      Else
      TYPE_PALETTE_PRO80 = ""
      End If
      End Sub
      
      Private Sub CheckBox4_Click()
      If UserForm1.CheckBox1.Value = True Then
        TYPE_PALETTE_PR100 = "PR100"
      Else
      TYPE_PALETTE_PR100 = ""
      End If
      End Sub
      
      Private Sub CommandButton1_Click()
      
      Dim TYPE_PALETTE As String
      
      If TYPE_PALETTE_DP608 <> "" Then TYPE_PALETTE = TYPE_PALETTE_DP608
      If TYPE_PALETTE_DP610 <> "" Then TYPE_PALETTE = TYPE_PALETTE_DP610
      If TYPE_PALETTE_PRO80 <> "" Then TYPE_PALETTE = TYPE_PALETTE_PRO80
      If TYPE_PALETTE_PR100 <> "" Then TYPE_PALETTE = TYPE_PALETTE_PR100
      
      MsgBox (TYPE_PALETTE)
      
      End Sub
      0
    3. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      Rohlala je suis vraiment trop bête, pardon pour cette question....

      j'ai mis UserForm1.CheckBox1.Value à chaque fois, ça ne risquait pas de marcher...
      0
  2. Maurice
     
    Bonjour

    tu melange beaucoup de chose
    efface tous les CheckBox_Click
    Private Sub CommandButton1_Click()
    Dim TYPE_PALETTE As String
       If CheckBox1 = True Then TYPE_PALETTE = "DP608"
       If CheckBox2 = True Then TYPE_PALETTE = "DP610"
       If CheckBox3 = True Then TYPE_PALETTE = "PRO80"
       If CheckBox4 = True Then TYPE_PALETTE = "PR100"
    MsgBox (TYPE_PALETTE)
    End Sub
    

    A+
    Maurice
    0
    1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      Je venais de le faire juste avant effectivement. Inutile de coder dans chaque checkbox.

      Merci.
      0