Ouverture de macro vba sur un nouveau poste

Résolu
Co_nexion Messages postés 333 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,

Je me retrouve bloqué en voulant utilisé mes macros sur un nouveau poste et pourtant les deux sont en excel 2010 et sous seven.

Voici le code et en gras la ligne qui bloque (IF DCLA > 1 then). Le message d'erreur est bibliothèque ou projet introuvable.

Pourriez vous m'aider à comprendre ce blocage ?

'Mettre à jour les cycles  
Dim Derlig As Long, i As Long  
     
    With Sheets("FTP")  
      Derlig = .Range("L" & Rows.Count).End(xlUp).Row  
      For i = 2 To Derlig  
        'If .Range("N" & i) < .Range("W" & i) Then  
        ' ou  
        If .Cells(i, 14) < .Cells(1, 23) Then  
          .Range("L" & i) = .Range("N" & i) + 1  
          ' ou  
          '.Cells(i, 12) = .Cells(i, 14) + 1  
          .Range("N" & i) = .Range("L" & i) + .Range("M" & i)  
          ' ou  
          '.Cells(i, 14) = .Cells(i, 12) + .Cells(i, 13)  
        End If  
      Next i  
    End With  

'Test pour contrat(s) mois en cours  
'pour la dernière ligne de la colonne A  
'DCLA = Worksheets("CDD_Fin_de_Contrat").Range("A" & Rows.Count).End(xlUp).Row  
  If DCLA > 1 Then  
      
'Worksheets("CDD_Fin_de_Contrat").Range("A2:N" & DCLA).ClearContents  
    Worksheets("CDD_Fin_de_Contrat").Range("A2:N29").ClearContents  
  End If  
    
'pour la dernière ligne de la colonne A  
  DCLA = Worksheets("CDD").Range("A" & Rows.Count).End(xlUp).Row  
  ReDim NumLigne(DCLA)  
'Copie donnees pour tri et listbox  
  Worksheets("CDD_Fin_de_Contrat").Range("A2:N" & DCLA) = Worksheets("CDD").Range("A2:N" & DCLA).Value  
'Mois pour test  
  Mois_Courant = Format(Date, "mm")  
'Pointeur pour recherche  
  x = 2  
  Rangee = 2  
  Worksheets("CDD_Fin_de_Contrat").Activate  
  Application.ScreenUpdating = False  
  With Worksheets("CDD_Fin_de_Contrat")  
    Do While .Cells(x, "G") <> ""  
      If Format(CDate(.Cells(x, "G")), "mm") <> Mois_Courant Then  
        Rows(x & ":" & x).Delete xlUp  
        x = x - 1  
      Else  
        NumLigne(x - 2) = Rangee  
      End If  
      x = x + 1  
      Rangee = Rangee + 1  
    Loop  

'pour la dernière ligne de la colonne A  
    DCLA = .Range("A" & Rows.Count).End(xlUp).Row  
'Fin selection  
    If DCLA = 1 And .Range("A2") = "" Then  
      Me.CommandButton9.Enabled = False  
      Exit Sub  
    Else  
      Me.CommandButton9.Enabled = True  
    End If  
  End With  
  Application.ScreenUpdating = True  

End Sub


1 réponse

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Si DCLA est une variable, avant de tester (If DCLA > 1), il te faut :
    1- la déclarer,
    2- lui affecter une valeur.
    Dans ton cas, DCLA est une valeur numérique donc de type Long (le nombre de ligne pouvant en effet être trop important pour une variable de type Integer, surtout depuis les versions > 2007), de plus, tu as laissé l'apostrophe en début de la ligne ou tu affectes une valeur à DCLA, donc essaye (les modifs en gras) :

    'Mettre à jour les cycles   
    Dim Derlig As Long, i As Long, DCLA As Long      
        With Sheets("FTP")   
          Derlig = .Range("L" & Rows.Count).End(xlUp).Row   
          For i = 2 To Derlig   
            'If .Range("N" & i) < .Range("W" & i) Then   
            ' ou   
            If .Cells(i, 14) < .Cells(1, 23) Then   
              .Range("L" & i) = .Range("N" & i) + 1   
              ' ou   
              '.Cells(i, 12) = .Cells(i, 14) + 1   
              .Range("N" & i) = .Range("L" & i) + .Range("M" & i)   
              ' ou   
              '.Cells(i, 14) = .Cells(i, 12) + .Cells(i, 13)   
            End If   
          Next i   
        End With   
    
    'Test pour contrat(s) mois en cours   
    'pour la dernière ligne de la colonne A   
    DCLA = Worksheets("CDD_Fin_de_Contrat").Range("A" & Rows.Count).End(xlUp).Row
         If DCLA > 1 Then   
           
    'Worksheets("CDD_Fin_de_Contrat").Range("A2:N" & DCLA).ClearContents   
        Worksheets("CDD_Fin_de_Contrat").Range("A2:N29").ClearContents   
      End If   
         
    'pour la dernière ligne de la colonne A   
      DCLA = Worksheets("CDD").Range("A" & Rows.Count).End(xlUp).Row   
      ReDim NumLigne(DCLA)   
    'Copie donnees pour tri et listbox   
      Worksheets("CDD_Fin_de_Contrat").Range("A2:N" & DCLA) = Worksheets("CDD").Range("A2:N" & DCLA).Value   
    'Mois pour test   
      Mois_Courant = Format(Date, "mm")   
    'Pointeur pour recherche   
      x = 2   
      Rangee = 2   
      Worksheets("CDD_Fin_de_Contrat").Activate   
      Application.ScreenUpdating = False   
      With Worksheets("CDD_Fin_de_Contrat")   
        Do While .Cells(x, "G") <> ""   
          If Format(CDate(.Cells(x, "G")), "mm") <> Mois_Courant Then   
            Rows(x & ":" & x).Delete xlUp   
            x = x - 1   
          Else   
            NumLigne(x - 2) = Rangee   
          End If   
          x = x + 1   
          Rangee = Rangee + 1   
        Loop   
    
    'pour la dernière ligne de la colonne A   
        DCLA = .Range("A" & Rows.Count).End(xlUp).Row   
    'Fin selection   
        If DCLA = 1 And .Range("A2") = "" Then   
          Me.CommandButton9.Enabled = False   
          Exit Sub   
        Else   
          Me.CommandButton9.Enabled = True   
        End If   
      End With   
      Application.ScreenUpdating = True   
    
    End Sub


    Cordialement,
    Franck P
    0