Filtre avancé avec une macro

bonoboas

XLDnaute Occasionnel
Bonjour,

J'ai un classeur contenant 20 feuilles, chaque feuille contient environ 10 000 lignes, pour pouvoir m'y retrouver et de ne pas devenir dingue, je souhaite faire un filtre avancé

Manuellement ça donne ça :

- je mets le code de l'affaire dans la cellule : A3

- ensuite je selectionne la plage de selection (une par feuille) par la liste déroulante

- ensuite je fais un copier coller valeur uniquement de la cellule O2 à P2
- Dans la cellule P2 je selectionne la plage et je copie
- j'ouvre le filtre avancé (donné-filtre-avancé)
- je colle dans : la plage
- je selectionne : $A$2:$I$3 dans la zone de critères
- copier vers un autre emplacement
- je selectionne la plage : $A$5:$I$56
- et enfin je fais ok
et je copie les valeurs trouvées
et je les colle dans la feuille impressions en sautant une ligne à chaque fois
et comme ça 20 fois

Si quelqu'un aurait un moyen de faire cette manip en 2 petites macro, ca serait trop trop cool, avant que je devienne maboul.
J'ai essayé de faire la première macro mais ça bug, je pense qu'excel ne comprend pas la plage selectionnée par la liste déroulante.

Une petite aide s'il vous plait avant qu'on m'emmene à l'hopital. lol

voici le fichier :

Free - Envoyez vos documents
 

Staple1600

XLDnaute Barbatruc
Re : Filtre avancé avec une macro

Re

Certaines actions sont néanmoins enregistrables non ?

Je suis déjà assez maboul comme cela pour me risquer à tester quoique ce soit, surtout quand je vois que la PJ n'est pas jointe directement dans la discussion sur XLD ;)

Et pourquoi cela me diras-tu ?

Réponse dans la charte du forum ;)

PS; Désole, j'avais zappé cette phrase de ton premier message.
J'ai essayé de faire la première macro mais ça bug, je pense qu'excel ne comprend pas la plage selectionnée par la liste déroulante.
 

bonoboas

XLDnaute Occasionnel
Re : Filtre avancé avec une macro

OK Staple1600, tu as raison, j'ai diminué la taille du fichier...lol

La macro donne ça :

Sub Macro5()
'
' Macro5 Macro
Range("O2").Select
Selection.Copy
Range("P2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Paste
Application.CutCopyMode = False
Range("O2").Select
Selection.Copy
Range("P2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("10").Range("A1:I23").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A2:I3"), CopyToRange:=Range("A5:I30"), Unique:= _
False
End Sub


En fait Sheets("10").Range("A1:I23") est la valeur d'une cellule : P2
En gros c'est ma variable, et je n'arrive pas à la faire varier dans ma macro.

Une idée ?
 

Pièces jointes

  • BONOBOAS.xlsm
    33.1 KB · Affichages: 63

Staple1600

XLDnaute Barbatruc
Re : Filtre avancé avec une macro

Re;

Merci d'avoir pris ma remarque en considération.

Bon maintenant, attaquons nous d'abord à ces vilains Select.
Code:
Sub Macro5()
'Macro5 Macro
    Range("P2").Value=Range("O2").Value
    Sheets("10").Range("A1:I23").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A2:I3"), CopyToRange:=Range("A5:I30"), Unique:= _
        False
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Filtre avancé avec une macro

Re


Avec ce petit code cracra, cela semble le faire ;)
(à lancer quand la feuille RECAP est la feuille active)
Code:
Sub a()
Dim arrF, i%
arrF = Array(10, 11, 12)
Application.ScreenUpdating = False
Range("A2:I3").Select
For i = 0 To 2
With Worksheets(CStr(arrF(i)))
    .Range("A1:I23").AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=Range("A2:I3"), _
    CopyToRange:=Range("A65536").End(xlUp)(2), _
    Unique:=False
End With
Next i
Range("A6").AutoFilter Field:=1, Criteria1:="Code chantier"
[_FilterDataBase].SpecialCells(12).Delete Shift:=xlUp
End Sub
 

bonoboas

XLDnaute Occasionnel
Re : Filtre avancé avec une macro

C'est presque ça, la selection par la liste déroulante ne fonctionne pas, les résultats des 3 feuilles sont confondus dans les résultats du filtre, d'ou l'importance de la colonne J.
Le triage doit se faire suivant ces étapes:
- code de l'affaire
- selection de la feuille
- clic sur le bouton --> résultat--->la colonne J se remplit par la recherchev
--->copie et collage manuel sur la feuille impression

Macro 2 :
Génération automatique de la macro 1 c'est à dire de la feuille 10 à 30 et bien entendu le copiage et collage sur la feuille impression lol

Pour la macro 2 ca serait le must. Parce que je dois faire ca pour 20 feuilles et pour 50 affaires environs soit environ 1000 copier coller a faire.

Merci beaucoup pour ce que vous avez déjà fait.

Très cordialement
Anthony
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
389