Erreur sur un code VBA (AutoFilter)

Résolu
Ippo -  
 Ippo -
Bonjour à tous,

J'ai une erreur sur le code ( encore merci à Lepingou d'ailleur) suivant ( sur la ligne en gras) :

'Option Explicit
Sub RecupValeurNouvCla()
Dim chemso As String, chemci As String
Dim nomso As String, nomci As String
Dim shco As String, shci As String
Dim chxcol As String, datref As Date, liginfo As Integer
liginfo = Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("sheet1").Select
chemso = Range("B2"): chemci = Range("C2")
nomso = Range("B3") & "." & Range("b4"): nomci = Range("C3") & "_" & liginfo - 14 & "." & Range("C4")
shso = Range("B5")
chxcol = Range(Range("B6") & 1).Column: datref = Range("B7")
Application.ScreenUpdating = False
'   Récupère les valeurs selon date de référence
Workbooks.Open (chemso & "\" & nomso)
<bold>Range("A1").AutoFilter Field:=chxcol, Criteria1:="<" & CLng(datref)</bold>Cells.SpecialCells(xlCellTypeVisible).Copy Destination:=Workbooks("Ippo_ccm_CmdeRecupv2.xlsm").Sheets("RecupDuJour").Cells(2, 1)

Workbooks(nomso).Close SaveChanges:=False

'

End Sub


c'est une erreur de type 1004 : erreur d'éxécution la méthode autofilter de la classe range a échoué.

Savez-vous d'ou cela peut il venir ?

Merci

EDIT : Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.

Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Peux tu tester ceci ?
    'Option Explicit
    Sub RecupValeurNouvCla()
    Dim chemso As String
    Dim chemci As String
    Dim nomso As String
    Dim nomci As String
    Dim shco As String
    Dim shci As String
    Dim chxcol As String
    Dim datref As Date
    Dim liginfo As Integer
    
    Dim critere As String
    
    liginfo = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Sheets("sheet1").Select
    chemso = Range("B2"): chemci = Range("C2")
    nomso = Range("B3") & "." & Range("b4"): nomci = Range("C3") & "_" & liginfo - 14 & "." & Range("C4")
    shso = Range("B5")
    chxcol = Range(Range("B6") & 1).Column: datref = Range("B7")
    Application.ScreenUpdating = False
    ' Récupère les valeurs selon date de référence
    Workbooks.Open (chemso & "\" & nomso)
    
    critere = "<" & CLng(datref)
    
    Range("A1").AutoFilter Field:=chxcol, Criteria1:=critere
    Cells.SpecialCells(xlCellTypeVisible).Copy Destination:=Workbooks("Ippo_ccm_CmdeRecupv2.xlsm").Sheets("RecupDuJour").Cells(2, 1)
    
    Workbooks(nomso).Close SaveChanges:=False
    
    End Sub
    


    PS: Tu as bien des entêtes de colonne ?
    PS2 : Tu n'as pas de cellules vides (dans ta ligne de colonnes) ?
    0
  2. Ippo
     
    Bonjour,

    Merci pour ta réponse le problème venait en effet de mon entête de colonne qui n'était plus en A1.

    Par contre j'ai eu une erreur sur la ligne du dessous :

    Cells.SpecialCells(xlCellTypeVisible).Copy Destination:=Workbooks("Ippo_ccm_CmdeRecupv2.xlsm").Sheets("RecupDuJour").Cells(2, 1)


    erreur 57121 : erreur définie par l'application ou par 'lobjet.

    As tu une idée d'ou elle vient ?

    Merci pour ton aide
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Le classeur Ippo_ccm_CmdeRecupv2.xlsm existe et est ouvert ?
      La feuille RecupDuJour existe ?

      Dans la ligne de code....La syntaxe du nom du classeur et celui de la feuille sont bien rigoureusement identiques à ce que tu as ?
      0
  3. Ippo
     
    Oui j'ai vérifié plusieurs fois, c'est bien les mêmes noms. Le classeur Ippo_ccm_CmdeRecupv2.xlsm est ouvert car c'est celui ou il y a le module.

    D'autres piste ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Sub copyFiltre()
      
      Dim Fsource As Worksheet
      Dim Fcible  As Worksheet
      Dim WkbCible As Workbook
      
      Set Fsource = ActiveSheet
      Set WkbCible = Workbooks("Ippo_ccm_CmdeRecupv2.xlsm")
      Set Fcible = WkbCible.Sheets("RecupDuJour")
      
      Fsource.Cells.SpecialCells(xlCellTypeVisible).Copy Destination:=Fcible.Cells(2, 1)
      
      End Sub
      
      0
    2. Ippo > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      C'est à copier à quel niveau ?

      Merci
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Ippo
       
      Tu colles
      'Déclaration des variables
      Dim Fsource As Worksheet
      Dim Fcible  As Worksheet
      Dim WkbCible As Workbook
      
      'Initialisation des variables
      Set Fsource = ActiveSheet
      Set WkbCible = Workbooks("Ippo_ccm_CmdeRecupv2.xlsm")
      Set Fcible = WkbCible.Sheets("RecupDuJour")
      
      'Copy des cellules visibles
      Fsource.Cells.SpecialCells(xlCellTypeVisible).Copy Destination:=Fcible.Cells(2, 1)
      
      

      A la place de ta ligne de code qui pose problème...

      (l'ideal.. serait quand même de placer les déclarations de variables au début de ton script...)
      0
    4. Ippo
       
      Ca marche merci pour ton aide.

      Par contre je crois qu'il y a trop de ligne à copier l'ordi à planté. Tu penses que le code est trop lourd ?
      0
    5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Le code n'est pas spécialement lourd...
      Par contre ça dépend du nombre de lignes à copier bien sûr.
      0