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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. Vai
       
      Merci beaucoup ! Ceci fonctionne sans problème :)

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

    Click droit -> Affecter une macro
    0
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Le code fait quelques 4000 lignes
    Il n'y a que moi que ça interpelle?
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > f894009 Messages postés 17417 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
      2. Vai > f894009 Messages postés 17417 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
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Tout a fait, attendons la suite ......
      0
    3. 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