Code vba ne fonctionne pas

Résolu

Bonjour,

le code ne s'exécute pas à l'ouverture du classeur. 

Voici le code:

Private Sub Workbook_Open()
    Dim todayDate As Date
    todayDate = Date
    
    ' Vérifier si la date est entre le 5 et le 15 de chaque mois
             If Day(todayDate) >= 5 And Day(todayDate) <= 15 Then
             Dim lastRow As Long
            lastRow = Cells(Rows.Count, "A").End(xlUp).Row
        
        ' Vérifier si l'opération n'a pas déjà été enregistrée pour ce mois
               If Month(Cells(lastRow, "A").Value) <> Month(todayDate) Then
        ' Ajouter une nouvelle ligne avec les informations
              Cells(lastRow + 1, "A").Value = todayDate
              Cells(lastRow + 1, "C").Value = "hfdhgfhff"
              Cells(lastRow + 1, "D").Value = "plltisqkjs"
              Cells(lastRow + 1, "F").Value = "aamnxfekl"
              Cells(lastRow + 1, "I").Value = "128"
        End If
    End If
End Sub

Merci de votre aide,
Windows / Edge 113.0.1774.35

3 réponses

  1. Le code fonctionne !

    J'ai tout effacé et recommencé, en prenant soin de bien placer le code.

    Merci

    Bonne soirée

    1. Bonjour,

      Les MsgBox fonctionnent, mais le code ne se lance pas à l'ouverture du classeur.

      Je vais arrêter de me prendre la tête et je vais recommencer un autre code.

      Merci pour votre intervention,

      Bon week end

      1. Contributeur

        Le code ne serait-il pas placé au bon endroit?  Dans l'éditeur VBA, il se trouve bien dans le classeur, pas dans un module de code indépendant?

    2. Contributeur

      bonjour,

      et ainsi?

      Option Explicit
      
      Private Sub Workbook_Open()
          Dim todayDate As Date
          todayDate = Date
          ' Vérifier si la date est entre le 5 et le 15 de chaque mois
          If Day(todayDate) >= 5 And Day(todayDate) <= 15 Then
                   Dim lastRow As Long
                  lastRow = Cells(Rows.Count, "A").End(xlUp).Row
              
              ' Vérifier si l'opération n'a pas déjà été enregistrée pour ce mois
              If Month(Cells(lastRow, "A").Value) <> Month(todayDate) Then
              ' Ajouter une nouvelle ligne avec les informations
                    Cells(lastRow + 1, "A").Value = todayDate
                    Cells(lastRow + 1, "C").Value = "hfdhgfhff"
                    Cells(lastRow + 1, "D").Value = "plltisqkjs"
                    Cells(lastRow + 1, "F").Value = "aamnxfekl"
                    Cells(lastRow + 1, "I").Value = "128"
                    MsgBox ("travail fait, voir ligne " + CStr(lastRow + 1))
              Else
                  MsgBox ("deja fait pour ce mois")
              End If
          Else
              MsgBox ("pas le bon jour")
          End If
      End Sub