Erreur de compilation : Projet ou bibliothèque introuvable

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 pour votre aide !

4 réponses

  1. Bonjour,

    tes variables ne sont pas déclarer dans le code, donc VBA pense que ce sont des fonctions.

    Déclare toute tes variables et cela devrait se résoudre

    Dim nb_ligne as interger (simple exemple) et ainsi de suite avec les autres
    0
    1. Bonjour,

      Merci cela résoud bien mon problème sauf que maintenant la même erreur est sur la ligne en gras:

      Dim nb_ligne As Integer
      nb_ligne = 5

      Dim code As Integer
      code = Range("B" & nb_ligne).Value
      nb_ligne = nb_ligne + 1
      Dim ligne As Integer
      ligne = Range("B" & nb_ligne).Value
      nb_ligne = nb_ligne + 1
      Dim cuve As Integer
      cuve = Range("B" & nb_ligne).Value
      nb_ligne = nb_ligne + 1
      Dim Date_jour As Integer
      Date_jour = CDate(Range("B" & nb_ligne).Value)
      nb_ligne = nb_ligne + 1
      Dim Heure As Integer
      Heure = Range("B" & nb_ligne).Value
      nb_ligne = nb_ligne + 1
      Dim Lot As Integer
      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
      0
      1. c'est toujours le même problème, variable non déclaré.

        Pour que ton code soit plus lisible procède comme suit


        Sub enregistrement()

        'déclaration des variables
        Dim nb_ligne As Integer
        Dim code As Integer
        Dim ligne As Integer
        Dim cuve As Integer
        Dim Date_jour As Integer
        Dim Heure As Integer
        Dim Lot As Integer

        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
        0
        1. Je me demande si ce n'est pas à cause de mon calendrier au final vu qu'il ne fait pas partie de l'équipement standard d'Excel
          0