Bonjour à tous,
Je suis débutant en programmation.
Mon expérience consiste à enregistrer des macros et à les modifier par la suite. Je ne sais pas « écrire » une macro de A à Z.
Je vous donne un peu le contexte :
Chaque semaine, je reçois une liste de tous les produits que nous avons dans l’entreprise. Afin d’analyser cette liste, je dois filtrer certaines colonnes.
J’ai plusieurs onglets :
- Liste : là où je colle la nouvelle liste chaque semaine.
- Colonne A : Entrepôt où est situé le produit (« Entrepôt A » ou « Entrepôt B »)
- Colonne G : Date de fin de vente
- Résultat : Là où la liste filtrée sera collée.
- Tableau de bord : Menu principal. Il y a dans cet onglet :
- Case E2 : Je mets par quel entrepôt je veux filtrer (« Entrepôt A » ou « Entrepôt B »)
- Case E4 : Je mets par quelle date je veux filtrer (Varie en fonction de mes besoin)
- Un bouton pour déclencher la macro
Voici la Macro :
Quand j’utilise les filtres de cette manière, la macro enregistre la valeur de la case copiée mais si je change la valeur de la case et que j’exécute la macro, il garde la valeur d’origine.
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 Sub Trie() ' Trie Macro 'Copier la case E2 du Tableau de Bord Range("E2").Select ActiveCell.FormulaR1C1 = "Entrepôt 2" 'Mettre les filtres dans l'onglet Liste Sheets("Liste").Select Range("A1").Select Selection.AutoFilter 'Filtrer par la case copier ActiveSheet.Range("$A$1:$G$100").AutoFilter Field:=1, Criteria1:= _ "Entrepôt 2" 'Copier la case E4 du Tableau de Bord Sheets("Tableau de bord").Select Range("E4").Select 'Filtrer par la case copier (inférieur ou égale à la date) ActiveCell.FormulaR1C1 = "7/1/2015" Sheets("Liste").Select ActiveSheet.Range("$A$1:$G$100").AutoFilter Field:=7, Criteria1:= _ "<=2015-07-01", Operator:=xlAnd 'Selectionner et copier la liste obtenue Columns("A:G").Select Selection.Copy 'Coller dans l'onglet résultat Sheets("Résultat").Select Columns("A:A").Select ActiveSheet.Paste 'Enlever les filtres dans l'onglet Liste Sheets("Liste").Select Range("A1").Select Application.CutCopyMode = False Selection.AutoFilter Sheets("Résultat").Select End Sub
J’ai déjà cherché sur des forums comment filtrer par variable mais je n’ai pas l’impression que ces cas correspondent au mien.
Est-ce quelqu’un aurait une solution à me proposer pour faire cela ?
Si j'ai oublié des informations ou que vous voulez des renseignements supplémentaires, n'hésitez pas
Merci à vous et bonne journée,
Arhis
Partager