Erreur de compilation sur une macro

Bonjour tout le monde,

J'ai réalisé un fichier avec différentes macros sous excel 2007 ( tout fonctionne bien ) mais en voulant le passer sous Excel 2010 j'ai du modifier plusieurs choses dans mes macros et il y en a une en particulier où je ne vois vraiment pas le problème.
Quand je l'exécute, le debogage me dit que c'est une erreur de compilation et que celle ci provient de nb_ligne !

Sub enregistrement()

nb_ligne = 5

code = Range("B" & nb_ligne).Value
nb_ligne = nb_ligne + 1
ligne = Range("B" & nb_ligne).Value
nb_ligne = nb_ligne + 1
Cuve = Range("B" & nb_ligne).Value
nb_ligne = nb_ligne + 1
Date_jour = CDate(Range("B" & nb_ligne).Value)
nb_ligne = nb_ligne + 1
Heure = Range("B" & nb_ligne).Value
nb_ligne = nb_ligne + 1
Lot = Range("B" & nb_ligne).Value
nb_ligne = nb_ligne + 1

Sheets("Affichage").Activate

With Sheets("Affichage").Columns("B:B")
Set celltrouve = .Find(ligne, lookat:=xlWhole)
End With

num_ligne = celltrouve.Row
Range("D" & num_ligne).Activate

If ActiveCell.Offset(0, 0).Value = Cuve Then
ActiveCell.Offset(0, 1) = Lot
ActiveCell.Offset(0, 3) = code
ActiveCell.Offset(0, 5) = Date_jour
ActiveCell.Offset(0, 6) = Heure
End If

If ActiveCell.Offset(1, 0).Value = Cuve Then
ActiveCell.Offset(1, 1) = Lot
ActiveCell.Offset(1, 3) = code
ActiveCell.Offset(1, 5) = Date_jour
ActiveCell.Offset(1, 6) = Heure
End If
Date_jour = Format(Now, "[jj/mm/aaaa]")

End Sub

Fichier : https://www.cjoint.com/?DFmnct5ydjB

Merci d'avance pour votre aide !

3 réponses

  1. Contributeur
    Bonjour,

    Comme l'on ne peut pas rentrer sans mot de passe, j'ai essayé ta procédure manuellement sous 2010 sans souci.
    Par contre tu devrais définir tes variables dans tous tes modules : cela ne prends pas beaucoup de temps et évite pas mal de soucis ultérieurs.
    0
    1. Bonjour

      modification de ta macro

      Sub enregistrement()
      With Application
      .ScreenUpdating = False
      .Calculation = xlManual
      .EnableEvents = False
      End With

      code = Range("B" & 5).Value
      ligne = Range("B" & 6).Value
      Cuve = Range("B" & 7).Value
      Date_jour = CDate(Range("B" & 8).Value)
      Heure = Range("B" & 9).Value
      Lot = Range("B" & 10).Value
      Feuil5.Activate
      With Sheets(Feuil5.Name).Columns("B:B")
      Set celltrouve = .Find(ligne, lookat:=xlWhole)
      End With
      num_ligne = celltrouve.Row
      Range("D" & num_ligne).Activate

      If ActiveCell.Offset(0, 0).Value = Cuve Then
      ActiveCell.Offset(0, 1) = Lot
      ActiveCell.Offset(0, 3) = code
      ActiveCell.Offset(0, 5) = Date_jour
      ActiveCell.Offset(0, 6) = Heure
      End If

      If ActiveCell.Offset(1, 0).Value = Cuve Then
      ActiveCell.Offset(1, 1) = Lot
      ActiveCell.Offset(1, 3) = code
      ActiveCell.Offset(1, 5) = Date_jour
      ActiveCell.Offset(1, 6) = Heure
      End If
      'Date_jour = Format(Now, "[jj/mm/aaaa]")
      Date_jour = DateValue(Now)
      With Application
      .CutCopyMode = False
      .ScreenUpdating = True
      .Calculation = xlCalculationAutomatic
      .EnableEvents = True
      End With
      End Sub

      pas terrible le mots de passe
      je prefere le faire sur le profil(Login)

      A+
      Maurice
      0
      1. Bonjour, merci pour vos réponses !

        Même après avoir déclaré mes variables j'ai un problème avec la ligne suivante :
        " Set celltrouve = .Find(ligne, lookat:=xlWhole) "

        Je me demande si ça ne viendrait pas du calendar au final, vu qu'il ne fait pas partie de l'équipement d'Excel ?
        0