Execution Module VBA

Résolu
Vai -  
 Vai -
Bonjour,

Comment associer le click d'un bouton afin d'exécute plusieurs modules sur VBA ?

Merci

5 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Si votre code est dans des Modules, il n'est plus dans ThisWorbook. Donc, si pas d'enchainement par le module precedent

Private Sub CommandButton1_Click()

    Module1.prog1
    Module2.prog2

End Sub


autrement

Private Sub CommandButton1_Click()

    Module1.prog1
    
End Sub
1
Vai
 
Merci beaucoup ! Ceci fonctionne sans problème :)

Merci encore.
0
poupinae Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   18
 
Appuyez sur Ctrl + G dans l'éditeur VBA pour l'ouvrir.
0
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Click droit -> Affecter une macro
0
Vai
 
Merci pour votre réponse poupinae.

En fait, je n'ai pas bien saisie ce qu'il faut faire. Je n'utilisais avant que ce code pour lancer les multiples macros que j'ai écrit. Ceci est collé dans la page Thisworkbook :

Private Sub CommandButton1_Click()

ThisWorkbook.Import_fichiers

End Sub


Le code fait quelques 4000 lignes et j'ai dû l'organiser dans des modules, sauf que je ne parviens pas à réutiliser le même code pour lancer les modules.

Qu'est ce qu'il faut faire dans ce cas ?

Ce qui est bizzare est que je n'ai pas trouvé une solution à ça sur internet, donc fort probablement je cherche dans la mauvaise direction.

Merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Le code fait quelques 4000 lignes
Il n'y a que moi que ça interpelle?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Si tout a ete fait avec l'enregistreur de macro ou code non optimise, pourquoi pas !!!!!

Moi, je pense plus au deroulement des modules si la declaration de variable est pas top
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

Tu as entièrement raison.
Cependant, même si ce n'est pas le but de ce sujet, je penses que tout le code est à revoir...
0
Vai > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 
"Moi, je pense plus au deroulement des modules si la declaration de variable est pas top"

Est ce que vous pouvez développer un peu plus ?

Merci
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Re,

Tout a fait, attendons la suite ......
0
Vai
 
En effet, 4000 lignes semble beaucoup, mais il y a beaucoup de traitement à faire, des champs à calculer et environ 40 tableaux croisés dynamiques à générer... d'ailleurs c'est ce qui consomme le plus de lignes. (77 lignes par TCD x 40 = 3080 déjà). Par la même, si vous avez des idées afin d'optimiser ceci je suis preneur.

Voici le code que j'utilise pour générer le TCD :

Sub Pivot_Tables_Maker_Periode1_Principal()

Dim ws As Worksheet
Dim PvtTbl As PivotTable
Dim wsData As Worksheet
Dim DataRng As Range
Dim PvtTblCache As PivotCache
Dim wsPvtTbl As Worksheet
Dim pvtFld As PivotField
Dim LastCellRowNumber As Long

    Set wsData = Worksheets("0001")
    Sheets.Add
    ActiveSheet.Name = "TCD"
    Set wsPvtTbl = ActiveSheet
   
    wsData.Activate
    LastCellRowNumber = Range("A" & Rows.Count).End(xlUp).Row
    
            For Each PvtTbl In wsPvtTbl.PivotTables
                If MsgBox("Delete existing PivotTable!", vbYesNo) = vbYes Then
                PvtTbl.TableRange2.Clear
                End If
            Next PvtTbl
            
            Set DataRng = wsData.Range("B1:O" & LastCellRowNumber)
            
                ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataRng.Address(, , , True), _
                Version:=xlPivotTableVersion12).CreatePivotTable TableDestination:=wsPvtTbl.Range("A1"), _
                TableName:=("PivotTable1"), DefaultVersion:=xlPivotTableVersion12

               
        Set PvtTbl = wsPvtTbl.PivotTables("PivotTable1")
        
        Set pvtFld = PvtTbl.PivotFields("Catégorie_Impayés")
        pvtFld.Orientation = xlRowField
        
        With PvtTbl.PivotFields("Catégorie_Impayés")
        .Orientation = xlDataField
        .Function = xlCount
        .NumberFormat = "#,##0"
        .Position = 1
    
        End With
        
        With PvtTbl.PivotFields("CRD")
        .Orientation = xlDataField
        .Function = xlSum
        .NumberFormat = "#,##0"
        .Position = 2
        End With
        
        With PvtTbl.PivotFields("MNT_IMPAYE")
        .Orientation = xlDataField
        .Function = xlSum
        .NumberFormat = "#,##0"
        .Position = 3
        End With
        
        With PvtTbl.PivotFields("Total Dû")
        .Orientation = xlDataField
        .Function = xlSum
        .NumberFormat = "#,##0"
        .Position = 4
        End With
        
        With PvtTbl.PivotFields("Provision")
        .Orientation = xlDataField
        .Function = xlSum
        .NumberFormat = "#,##0"
        .Position = 5
        End With
        
        PvtTbl.ManualUpdate = False
        
        PvtTbl.PivotFields("Catégorie_Impayés").PivotFilters.Add Type:=xlCaptionDoesNotBeginWith, Value1:="N"
        
End Sub
0