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

jordane45 Messages postés 40050 Statut Modérateur 4 757
 
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
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
jordane45 Messages postés 40050 Statut Modérateur 4 757
 
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
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
jordane45 Messages postés 40050 Statut Modérateur 4 757
 
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
Ippo > jordane45 Messages postés 40050 Statut Modérateur
 
C'est à copier à quel niveau ?

Merci
0
jordane45 Messages postés 40050 Statut Modérateur 4 757 > 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
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
jordane45 Messages postés 40050 Statut Modérateur 4 757
 
Le code n'est pas spécialement lourd...
Par contre ça dépend du nombre de lignes à copier bien sûr.
0