UserForm ne marche pas

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,

En voulant répondre à un message du forum, je me suis confronté à un problème que j'avoue ne pas bien comprendre.

Mon code sur le UserForm :

Public Sub CommandButton1_Click()

MOIS_BOX = ComboBox1.Value

Application.Run ("Code")

Unload Me

End Sub

Private Sub UserForm_Initialize()

With Me.ComboBox1
            .AddItem "01"
            .AddItem "02"
            .AddItem "03"
            .AddItem "04"
            .AddItem "05"
            .AddItem "06"
            .AddItem "07"
            .AddItem "08"
            .AddItem "09"
            .AddItem "10"
            .AddItem "11"
            .AddItem "12"
      End With

End Sub


Mon code sur un module :

Public MOIS_BOX As String

Sub LANCER()

UserForm1.Show

End Sub

Sub Code()

Dim DL As Long
Dim MOT As String
Dim COMPTEUR As Long
Dim MOIS As String

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row

MOT = InputBox("Entrez le mot recherché")

MOIS = MOIS_BOX

For i = 2 To DL 'Changer le 2 pour la ligne où commencent les données

If CStr(Month(CDate(Range("A" & i).Value))) = MOIS Then
    If CStr(Range("B" & i).Value) = MOT Then
          COMPTEUR = COMPTEUR + 1
    End If
End If

Next i

MsgBox (COMPTEUR)

End Sub


Le code s'exécute mais même si j'ai une date par exemple 01/01/2015 en A2, avec le mot BONJOUR, je fais la recherche et le compteur m'indique 0 au lieu de 1...

Une idée?

Cordialement.

1 réponse

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Call Code
suffi, pas besoin de
Application.Run ("Code")



le mois de la cellule sur deux caracteres:
Sub Code()
    Dim DL As Long
    Dim MOT As String
    Dim COMPTEUR As Long
    Dim MOIS As String

    DL = Cells(Application.Rows.Count, 1).End(xlUp).Row
    MOT = InputBox("Entrez le mot recherché")
    MOIS = MOIS_BOX
    For i = 2 To DL 'Changer le 2 pour la ligne où commencent les données
        If CStr(Format(Month(CDate(Range("A" & i).Value)), "00")) = MOIS And CStr(Range("B" & i).Value) = MOT Then
            COMPTEUR = COMPTEUR + 1
        End If
    Next i
    MsgBox (COMPTEUR)
End Sub



Pour tester un code, posez des points d'arrets et quand le programme s'arrete, passez le curseur souris sur les variables et/ou objets pour voir leurs contenus
1
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Super ! Merci beaucoup ! (désolé pour le temps de réponse, j'étais en déplacement).
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Ah juste une chose, je n'arrive pas à maîtriser le système de débugage du VBA excel. Vous dites donc qu'en fait il faut poser des points d'arrêt? Ensuite on lance la macro et elle s'arrête sur le point? Si je passe ma souris sur la variable, excel me dira alors ce qu'elle contient?

Merci pour votre réponse.

Cordialement.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Oui, c'est cela, le debugage sur excel est assez simple par les points d'arret; Il y a aussi l'instruction Debug.Print qui permet d'ecrire dans la fenetre d'execution (menu VBA, affichage, Fenetre d'execution) pour avoir des traces un peu plus complexes
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Ok. Merci beaucoup pour l'info. Bonne journée.
0