Bonjour à toutes et à tous,

Je précise que je débute sur VBA et les macros (j'ai réalisé ma première macro la semaine passée).
Ma première macro fonctionne comme je le souhaite, elle applique une série de calculs à une feuille excel et les insère dans un PowerPoint.

Mon problème aujourd'hui est d'optimiser le code de ma macro dans la mesure où les calculs réalisés s'appliquent plusieurs fois à différents "sites" (notre variable). Une bonne partie du code au niveau des calculs est commun à tous les sites et est répété inutilement quelque part. Cependant une partie variable à chaque site intervient aussi dans le code.

Un petit exemple:

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
46
47
48
49
50
51
52
53
54
'On filtre selon les sites (ici Argenteuil)
    ActiveSheet.Range("$A$1:$R$123785").AutoFilter Field:=13, Criteria1:= _
        "=*Argenteuil*", Operator:=xlAnd
       
        
'On filtre selon le SSID
    ActiveSheet.Range("$A$1:$R$123785").AutoFilter Field:=14, Criteria1:= _
        "=DALocal", Operator:=xlOr, Criteria2:="=PRT-Oper"
       
        
'On sélectionne les colonnes SNR et RSSI qu'on copie dans une nouvelle sheet
    Columns("Q:R").Select
    Selection.Copy
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Paste
    Application.CutCopyMode = False
  
 'On applique une formule excel pour obtenir le nombre total de case
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=COUNT(C[-4])"
   
 'On filtre le RSSI
    Columns("A:B").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$B$925492").AutoFilter Field:=2, Criteria1:="<=-73" _
        , Operator:=xlAnd
       
  'On copie les données filtrés dans une sheet2
    Selection.Copy
    Columns("H:H").Select
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Paste
   
    Range("E6").Select
    Application.CutCopyMode = False
   
 'On applique une autre formule avec condition pour savoir sur le nombre de cellule ayant RSSI<-73dBm combien ont un SNR<=20
    ActiveCell.FormulaR1C1 = "=COUNTIF(C[-4],""<=12"")"
    Sheets("Feuil1").Select
    Range("E39:E40").Select
    Range("E40").Activate
    Sheets("Feuil2").Select
    Selection.Copy
    Sheets("Feuil1").Select
    Range("E3").Select
   
 'On copie la valeur obtenue dans la sheet précédante
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G3").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Mauvais"

[etc suite d'instructions dans la même idée]
Ici pour un site précis (Argenteuil) on a une partie de calculs commune à tous les 6 sites et une partie en rouge propre à ce site.

Pour résoudre ceci j'ai pensé à créer autant de structures que de sites avec les informations propres à chaque site contenues dedans. Les informations qui diffèrent selon les sites sont principalement des critères de filtres, des ranges et des feuilles.
Ensuite l'idéal serait d'appliquer une boucle qui parcourt ces structures et les injecte dans le "code commun". Je rappelle que je suis vraiment novice et je ne sait pas si c'est une solution possible, ni comment l'implémenter pour l'instant, quelle syntaxe etc...

Voila je ne sais pas si vous avez des idées pour résoudre ce problème, je recherche des confirmations/infirmations sur une méthode qui marcherait... Quelques pistes seraient vraiment bienvenues.

Je vous remercie de m'avoir lu, et j'espère pouvoir vous lire à mon tour!


[edit] cette discussion a été vu une petite trentaine de fois pour l'instant sans que je reçoive la moindre réponse...
Je voulais savoir si personne n'avait eu d'idées ou de pistes à proposer pour mon problème, ou si je l'ai mal exposé, si vous voulez plus d'informations, de précisions... etc

Merci

Antoine