macro et advanced filter

fabien

XLDnaute Nouveau
Bonjour,

je dois préparer un projet sous excel 2010 avec comme point de départ 1 tableau à 6 colonnes et 16 lignes maxi.
Je désirerais créer une macro en advanced filter pour que le tableau de départ se scinde en 2 en fonction de deux valeurs possibles dans le tableau initial. L'ensemble doit se trouver sur le même fichier mais pas sous le même onglet pour plus de clarté. Pour une raison qui m'est inconnue, l'advanced filter ne marche pas correctement en cliquant sur la macro.:confused:

Détails de la procédure utilisée:
je me positionne sur le worksheet d'arrivée
Enregistrement de la macro
nom
pas de shortcut
je vais sous l'onglet data, clique sur advanced filter
sélectionne "copier sur une autre location"
sélection de la base de données initiale ( avec les titres) sur worksheet 1
sélection du critère
sélection du positionnement d'arrivée sur work sheet 2
je valide
je stoppe macro
l'attribue sur la touche créée à cet effet à côté du tableau initial

Je remplis mon tableau initial
clique sur run macro
et là rien ne va, pas de msg d'erreur type illegal field. en revanche le résultat souhaité n'est pas obtenu. la macro ne prenant que les titres...

Y -t-il une erreur dans mon raisonnement? un bug connu des macros sous advanced filter?

Merci de votre aide. si nécessaire, j'uploaderai mon fichier.

Fabien

PS:version excel 2010 d'origine
 

Softmama

XLDnaute Accro
Re : macro et advanced filter

Bonjour,

peux tu nous donner copie de ton fichier ou au moins de la macro qui a été enregistrée ?

[Edit] Ha le fichier est apparu entre temps,maisq par contre, je ne peux lire les fichiers .xlsm
 
Dernière édition:

fabien

XLDnaute Nouveau
Re : macro et advanced filter

Pas très propre, j'espère que cela te sera lisible


' Food_beverage Macro
'

'
Range("Init").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets( _
"Initial Data").Range("B23:B24"), CopyToRange:=Range("A1:F11"), Unique:= _
False
Range("R1").Select
Range("Init").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets( _
"Initial Data").Range("C23:C24"), CopyToRange:=Range("R1:W6"), Unique:= _
False
Sheets("Initial Data").Select
ChDir "G:\Mes Docs\IMHI\Business Computing"
ActiveWorkbook.SaveAs Filename:= _
"G:\Mes Docs\IMHI\Business Computing\project macro.xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Sheets("Presentation").Select
Range("B7").Select
Selection.ClearContents
Range("F18").Select
Sheets("Initial Data").Select
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select
Selection.OnAction = "Food_beverage"
Range("C2").Select
ActiveCell.FormulaR1C1 = "tertt"
Range("C3").Select
ActiveCell.FormulaR1C1 = "teq"
Range("C4").Select
ActiveCell.FormulaR1C1 = "rtyuk"
Range("C5").Select
ActiveCell.FormulaR1C1 = "suiijk"
Range("C6").Select
ActiveCell.FormulaR1C1 = "dyikj"
Range("C7").Select
ActiveCell.FormulaR1C1 = "dfiikj"
Range("C8").Select
ActiveCell.FormulaR1C1 = "ofojkfhjk"
Range("C9").Select
ActiveCell.FormulaR1C1 = "oufgiofk"
Range("C10").Select
ActiveCell.FormulaR1C1 = "fdus"
Range("C11").Select
ActiveCell.FormulaR1C1 = "suu"
Range("D2").Select
ActiveCell.FormulaR1C1 = "10"
Range("D3").Select
ActiveCell.FormulaR1C1 = "11"
Range("D4").Select
ActiveCell.FormulaR1C1 = "12"
Range("D5").Select
ActiveCell.FormulaR1C1 = "13"
Range("D6").Select
ActiveCell.FormulaR1C1 = "14"
Range("D7").Select
ActiveCell.FormulaR1C1 = "15"
Range("D8").Select
ActiveCell.FormulaR1C1 = "16"
Range("D9").Select
ActiveCell.FormulaR1C1 = "17"
Range("D10").Select
ActiveCell.FormulaR1C1 = "18"
Range("D11").Select
ActiveCell.FormulaR1C1 = "19"
Range("E2").Select
ActiveCell.FormulaR1C1 = "20"
Range("E3").Select
ActiveCell.FormulaR1C1 = "21"
Range("E4").Select
ActiveCell.FormulaR1C1 = "22"
Range("E5").Select
ActiveCell.FormulaR1C1 = "23"
Range("E6").Select
ActiveCell.FormulaR1C1 = "24"
Range("E7").Select
ActiveCell.FormulaR1C1 = "25"
Range("E8").Select
ActiveCell.FormulaR1C1 = "26"
Range("E9").Select
ActiveCell.FormulaR1C1 = "27"
Range("E10").Select
ActiveCell.FormulaR1C1 = "28"
Range("E11").Select
ActiveCell.FormulaR1C1 = "29"
Range("F2").Select
ActiveCell.FormulaR1C1 = "110"
Range("F3").Select
ActiveCell.FormulaR1C1 = "120"
Range("F4").Select
ActiveCell.FormulaR1C1 = "130"
Range("F5").Select
ActiveCell.FormulaR1C1 = "140"
Range("F6").Select
ActiveCell.FormulaR1C1 = "150"
Range("F7").Select
ActiveCell.FormulaR1C1 = "160"
Range("F8").Select
ActiveCell.FormulaR1C1 = "170"
Range("F9").Select
ActiveCell.FormulaR1C1 = "180"
Range("F10").Select
ActiveCell.FormulaR1C1 = "190"
Range("F11").Select
ActiveCell.FormulaR1C1 = "200"
Range("F12").Select
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"advanced filter"
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 15). _
ParagraphFormat
.FirstLineIndent = 0
.Alignment = msoAlignCenter
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 8).Font
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorLight1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 11
.Name = "+mn-lt"
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(9, 7).Font
.BaselineOffset = 0
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorLight1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 11
.Name = "+mn-lt"
End With
Range("N12").Select
Application.WindowState = xlMinimized
Application.WindowState = xlNormal
Sheets("Presentation").Select
ActiveWindow.SmallScroll Down:=-12
Range("B4").Select
Selection.ClearContents
Range("F7").Select
Sheets("Model Area + Graghs").Select
ActiveWindow.SmallScroll Down:=-27
Range("E3").Select
ActiveWorkbook.Save
End Sub


merci
 

Philippe Tulliez

XLDnaute Nouveau
Re : macro et advanced filter

Bonsoir,
Premier problème que je rencontre d'après ce que tu as écrit.
Il faut absolument préciser la filiation complète de l'objet Range sinon tout se passe dans la feuille active

En reprenant tes explications.
  1. La zone des données est une plage nommée Init et est de portabilité classeur.
  2. La zone des critères est dans les cellules B23:B24 d'une feuille dont on ignore le nom et que j'ai nommé pour l'exemple Data (Il faut donc que tu changes son nom)
  3. La zone d'exportation, se trouve sur une feuille dont on ignore également le nom et que j'ai nommé Export de la cellule A1 à F11. Cela signifie que les cellules A1:F11 de cette feuille contiennent les étiquettes de colonnes avec une orthographe identique à celles de la zone data. Sinon, il suffit d'adresser seulement la cellule A1 et celle-ci doit alors être vide.


Exemple qui fonctionne si ce que j'ai décrit plus haut est respecté.
Code:
Sub Export()
 Dim areaCriteria As Range, areaExport As Range
 With ThisWorkbook
  Set areaCriteria = .Worksheets("Data").Range("B23:B24") ' Zone des critères
  Set areaExport = .Worksheets("Export").Range("A1:F11") ' Etiquette de lignes
 End With
 Range("Init").AdvancedFilter xlFilterCopy, areaCriteria, areaExport
 Set areaCriteria = Nothing: Set areaExport = Nothing
End Sub
 
Dernière édition:

Discussions similaires

Réponses
15
Affichages
568

Statistiques des forums

Discussions
312 677
Messages
2 090 821
Membres
104 677
dernier inscrit
soufiane12