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 :
  1. 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
  2. Résultat : Là où la liste filtrée sera collée.
  3. 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 :

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
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.

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