userform pour lancer macro

Katoch

XLDnaute Junior
Bonsoir Forum et bon w-e à tous !

J'ai réussi à réaliser cette macro avec l'enregistreur et elle fonctionne .
Je souhaiterais utiliser un userform avec 2 listes modifiables :
Liste 1 : contient les choix A ; B ; C ; D par ex.
Liste 2 : contient les noms des mois

L'utilisateur sélectionne son choix dans la liste modifiable 1 , puis sélectionne le mois dans la liste modifiable 2 :

Le choix du mois lance la macro et la macro exécute le code en tenant compte du mois choisi .

Si vous pouviez m'aider à réaliser ce rêve ...!!!
Pouvez vous me construire le userform afin que je comprenne le code nécessaires aux actions demandées ?
Pouvez vous apporter la modification au code de la macro ci-dessous pour que le mois sélectionné soit choisi pour filtrer :
ActiveSheet.Range("$A$5:$R$1048576").AutoFilter Field:=12, Criteria1:= _
xlFilterThisMonth, Operator:=xlFilterDynamic

Merci par avance.

Sub ACHATS()
'
' ACHATS Macro
'

'
Sheets("OPEX").Select
Rows("5:5").Select
Selection.AutoFilter
Selection.AutoFilter
ActiveSheet.Range("$A$5:$R$1048576").AutoFilter Field:=12, Criteria1:= _
xlFilterThisMonth, Operator:=xlFilterDynamic
Application.Run "'Budgets 2011 vf .xlsm'!MacroFiltreNatCptACHATS_050RG1"
Application.Run "'Budgets 2011 vf .xlsm'!MacroImputAUX_ORD"
Range("J4").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Rows("5:5").Select
Selection.AutoFilter
Selection.AutoFilter
ActiveSheet.Range("$A$5:$R$1048576").AutoFilter Field:=12, Criteria1:= _
xlFilterThisMonth, Operator:=xlFilterDynamic
Application.Run "'Budgets TST HTA 2011 vf .xlsm'!MacroFiltreNatCpt050RG1"
ActiveSheet.Range("$A$5:$R$1048576").AutoFilter Field:=4, Criteria1:= _
"=K3272KL", Operator:=xlOr, Criteria2:="=K3272KM"
Range("J4").Select
Selection.Copy
Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("D4").Select
ActiveCell.FormulaR1C1 = "=(R[-2]C-R[-1]C)/1000"
Range("D4").Select
Selection.Copy
Sheets("RésultatsOPEX").Select
Range("F35").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
 

dra72

XLDnaute Occasionnel
Re : userform pour lancer macro

Bonjour Katoch,

Pour ton info, voilà ce qu'est devenue ta procédure MacroOPEXChAff sans utiliser la fonction du filtre.
On devrait ainsi encore gagner en vitesse d'éxécution.

Code:
Sub MacroOPEXChAff()
  
Sheets("RésultatsOPEX").Range("E33") = Evaluate("SumProduct((OPEX!K6:K1048576)*(OPEX!A6:A1048576=" & """704180""))") / 1000
    
End Sub

J'ai commencé par la plus simple mais j'espère pouvoir le faire pour toutes.

Je te tiens au courant de l'évolution.

Bonne journée.
 

Katoch

XLDnaute Junior
Re : userform pour lancer macro

Bonjour Forum,bonjour dra72 !

Je comprends ce que tu cherches à faire par cette autre voie ! Des formules pour chaque cellule de résultat (E33:M33) , donc quasi instantané , et ensuite tu vas créer un code qui calcule par mois et placera le résultat en(B20:M26)...
Trop fort ! bon courage.
 

dra72

XLDnaute Occasionnel
Re : userform pour lancer macro

Katoch,

Peux-tu me dire très approximativement (disons à 10000 près) combien de lignes de données figurent dans ta feuile OPEX?

Actuellement on teste sur l'ensemble de la feuille soit 1048576 lignes ce qui prend pas mal de temps. Le fait d'éviter les filtres n'accélère pratiquement pas le processus contrairement à ce que je pensais.

Par contre, si je teste sur le nombre de lignes actuel (14132), le résultat est pratiquement instantané.
 

dra72

XLDnaute Occasionnel
Re : userform pour lancer macro

Ok.

De toute façon, c'est facile de connaître le nombre exact de lignes par le code VBA. C'était simplement pour savoir si c'était intéressant de le faire.
La question ne se pose plus puisqu'on va, dans le pire des cas, diviser le temps de traitement par 10. (100 000 lignes au lieu de 1 000 000).

A+
 

Discussions similaires

Réponses
2
Affichages
124

Statistiques des forums

Discussions
312 305
Messages
2 087 083
Membres
103 458
dernier inscrit
Vulgaris workshop