Problème Macro Filtre

g.hayoune

XLDnaute Nouveau
coucou tous le monde!!

voila en fait j'ai récupérer un code pour filtre une feuille puis recopier le contenu sur une autre. sa a l'air de bien fonction lorsque j'active la macro qui me permet d'effacer les données recopiée ainsi que lorsque je choisie la date pour filtrer mais il y un problème lorsque le filtre veut x'executer:

le debogeur se lance et me marque "erreu d'execution 1004"
erreur defini par l'application opu par l'objet


voila mon code

Code:
Public la_date As Variant
Public DerL As Long
Public WS As Worksheet
Sub Macro_OK()
'suppression des filtres existants
For Each WS In Worksheets
If WS.AutoFilterMode = True Then WS.AutoFilterMode = False
Next
Application.ScreenUpdating = False
la_date = Format(Date, "mm/dd/yy")
a_filtre ("GAZ")
a_filtre ("WAN")
a_filtre ("STPS.ELEC")
Sheets("DISPONIBILITE").Columns("A:M").Columns.AutoFit
le_filtre
Application.ScreenUpdating = True
End Sub


Sub efface_agenda()
Sheets("DISPONIBILITE").Range(Cells(2, 1), Cells(200, 20)).Clear
For Each WS In Worksheets
If WS.AutoFilterMode = True Then WS.AutoFilterMode = False
Next
End Sub
Sub a_lademande()
'suppression des filtres existants
For Each WS In Worksheets
If WS.AutoFilterMode = True Then WS.AutoFilterMode = False
Next

Application.ScreenUpdating = False
la_date = Format(InputBox("Saisir la date désirée"), "mm/dd/yy")

a_filtre ("GAZ")
a_filtre ("WAN")
a_filtre ("STPS.ELEC")

Sheets("DISPONIBILITE").Columns("A:M").Columns.AutoFit
le_filtre
Application.ScreenUpdating = True
End Sub

Sub le_filtre()
Dim WS As Worksheet
For Each WS In Worksheets
If WS.AutoFilterMode = True Then WS.ShowAllData
Next
End Sub
Sub a_filtre(feuille As String)
DerL = Sheets("DISPONIBILITE").Cells(65536, 1).End(xlUp).Row + 1
With Worksheets(feuille)
.Range("A1").Copy Sheets("DISPONIBILITE").Range("A" & DerL)
.Range("A2").AutoFilter _
1, ">=" & la_date, xlAnd, "<=" & la_date
[COLOR="Red"][B].AutoFilter.Range.Copy Sheets("DISPONIBILITE").Range("A" & DerL + 1)[/B][/COLOR]
End With
End Sub


la partie rouge est celle remarquer par le debogueur comme mauvaise.

si quelqu'un a une idée je suis tout ouïe!!!:D
 

g.hayoune

XLDnaute Nouveau
Re : Problème Macro Filtre

deja merci saïd et skoobi te m'accorder un peu de temps!!!!

en fait ce qui est très troublant c'est que ce code fonctionne très bien la ou je les pris. je l'ai juste adapter a mon fichier pour pouvoir l'utilise... Donc pour moi sa serai peu etre un problème de syntaxe que je vois pas nan?
 

ernest

XLDnaute Nouveau
Re : Problème Macro Filtre

Peux-tu mettre un fichier exemple avec des données factices sur lesquels joue la macro ?

tu as mis dans le post de départ :

"voila en fait j'ai récupérer un code pour filtre une feuille puis recopier le contenu sur une autre"

or je ne vois pas le nom de l'autre feuille ? Il n'y a d'utiliser dans le code de la macro
que la feuille "DISPONIBILITE", non ?
 
Dernière édition:

ernest

XLDnaute Nouveau
Re : Problème Macro Filtre

Est-ce que dans la feuille DISPONIBILITE tu dois avoir la ligne des champs de chaque feuille - séparé par une ligne blanche ?
ou bien est-ce que les données de chaque feuille doivent se cumuler sous une seule ligne de champs ?

Pour l'instant la macro marche sans s'arrêter (chez moi) = pas de message d'erreur !
 

ernest

XLDnaute Nouveau
Re : Problème Macro Filtre

Sur le fichier source agenda je bugge en recopiant l'agenda parce qu'il y a une cellule fusionnée sur plusieurs cellules en A1, les filtres n'aiment pas cela.

en corrigeant :

Sub a_filtre(feuille As String)
DerL = Sheets("Agenda").Cells(65536, 1).End(xlUp).Row + 1
With Worksheets(feuille)
.Range("A1").Copy Sheets("Agenda").Range("A" & DerL)
en
.Range("A2").Copy Sheets("Agenda").Range("A" & DerL)

cette macro fonctionne.
 

ernest

XLDnaute Nouveau
Re : Problème Macro Filtre

en fait dans DISPONIBILITE la lgigne des champs de chaque feuille est separer par une ligne blache.

et toi la macro fonctionne bien!!:mad: lol moi pa du tout. ve tu le fichier sur d'origine ou jai pomper le code?


Essaye de modifier ta macro :

Sub a_filtre(feuille As String)
DerL = Sheets("DISPONIBILITE").Cells(65536, 1).End(xlUp).Row + 1

With Worksheets(feuille)
.Range("A1").Copy Sheets("DISPONIBILITE").Range("A" & DerL)
.Range("A2").AutoFilter _
1, ">=" & la_date, xlAnd, "<=" & la_date
.AutoFilter.Range.Copy Sheets("DISPONIBILITE").Range("A" & DerL + 1)
End With
End Sub

en ceci

Sub a_filtre(feuille As String)
DerL = Sheets("DISPONIBILITE").Cells(65536, 1).End(xlUp).Row + 1

With Worksheets(feuille)
' cette ligne en remarque .Range("A1").Copy Sheets("DISPONIBILITE").Range("A" & DerL)
' sur la ligne en dessous met A1 au lieu de A2
.Range("A1").AutoFilter _
1, ">=" & la_date, xlAnd, "<=" & la_date
.AutoFilter.Range.Copy Sheets("DISPONIBILITE").Range("A" & DerL + 1)
End With
End Sub

@ te lire

j'essaye de joindre le fichier corrigé (en zip) mais c'est la première fois ;)

Bon, pas trouver comment faire ! doit être trop gros 123 Ko zippé
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
361

Statistiques des forums

Discussions
312 506
Messages
2 089 106
Membres
104 036
dernier inscrit
devdiop