Erreur sur un code VBA (AutoFilter)

[Résolu/Fermé]
Signaler
-
 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

Messages postés
33489
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2021
3 721
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) ?
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
Messages postés
33489
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2021
3 721
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 ?
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 ?
>
Messages postés
33489
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2021

C'est à copier à quel niveau ?

Merci
Messages postés
33489
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2021
3 721 > 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...)
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 ?
Messages postés
33489
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2021
3 721
Le code n'est pas spécialement lourd...
Par contre ça dépend du nombre de lignes à copier bien sûr.
Une centaine et encore avec le filtre il devrait y en avoir moins.