Bonjour
J'ai besoin de produire régulièrement des "états d'avancement", à partir d'une base de données d'actions.
La base contient 58 colonnes et plus de 200 lignes.
Besoins relatifs aux "états d'avancement"
- ils ne contiennent que 6 colonnes disposées dans un ordre différent de celui de la base d'actions
- ils sont le résultat d'un filtre sur un des champs de la base d'actions
- les résutats sont exportés dans un fichier séparé (pour être envoyé aux différentes parties prenantes, par la suite)
J'ai trouvé exactement la solution qu'il me faut dans un forum mais je rencontre un problème de mise en oeuvre.
- la macro est placée dans le fichier de la base d'actions
Base d'actions (fichier source):
- la base d'actions occupe 200 lignes, mais je lui en ai affecté 1000 --> plage (A1:BF1000)
- le critère du filtre se trouve dans la plage (BJ1:BJ2) --> BJ1 contient l'intitulé de l'en-tête de colonne et BJ2 contient la valeur du filtre
Etat (fichier cible):
- Intitulé du fichier: ImportFiltre.xls
- Intitulé de l'onglet : Cible
- Les en-têtes sont prédéfinies dans la plage A1:F1
Problème:
- Erreur d’exécution 1001 « ImportFiltre.xls est introuvable. Vérifier l’orthographe du nom du classeur et la validité de l’emplacement. »
- la ligne surlignée en jaune est : Worbooks.Open ("ImportFiltr.xls")
L’orthographe du nom du fichier est correcte, mais la macro ne précise pas l’emplacement du fichier.
Celui ce trouve dans le même répertoire que celui de la base d’action.
Question : comment indiquer l'emplacement du fichier ? (cf. code de la macro actuelle)
D'avance merci pour votre aide !
Marino
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Sub Macro3() ' ' Filtre avancé et extraction dans un autre classeur ' le classeur cible existe : "ImportFiltre.xls" ' le classeur cible contient les en-têtes de colonne à extraire en A1:F1 ' la Macro est placée dans le fichier source nf = ActiveWorkbook.Name ChDir ActiveWorkbook.Path Application.DisplayAlerts = False Workbooks.Open ("ImportFiltre.xls") Windows(nf).Activate Range("A1:BF1000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("BJ1:BJ2"), CopyToRange:=Workbooks("ImportFiltre.xls").Sheets("Cible").Range("A1:F1"), Unique:=False ' End Sub
Partager