Execution Module VBA

Résolu
Bonjour,

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

Merci

5 réponses

  1. 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. Merci beaucoup ! Ceci fonctionne sans problème :)

      Merci encore.
  2. 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
    1. Modérateur
      Bonjour,

      Le code fait quelques 4000 lignes
      Il n'y a que moi que ça interpelle?
      1. 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
      2. Modérateur
        @f894009Salut,

        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...
      3. Re,

        Tout a fait, attendons la suite ......
      4. 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
      5. @f894009"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