Execution Module VBA

Résolu/Fermé
Vai - 31 déc. 2014 à 11:06
 Vai - 2 janv. 2015 à 10:25
Bonjour,

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

Merci

5 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
31 déc. 2014 à 13:54
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.
0
poupinae Messages postés 161 Date d'inscription dimanche 30 novembre 2014 Statut Membre Dernière intervention 6 mars 2016 18
31 déc. 2014 à 11:08
Appuyez sur Ctrl + G dans l'éditeur VBA pour l'ouvrir.
0
DGVDR Messages postés 158 Date d'inscription vendredi 10 août 2012 Statut Membre Dernière intervention 20 juillet 2015
31 déc. 2014 à 11:13
Bonjour,

Click droit -> Affecter une macro
0
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
31 déc. 2014 à 13:57
Bonjour,

Le code fait quelques 4000 lignes
Il n'y a que moi que ça interpelle?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
31 déc. 2014 à 14:03
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
31 déc. 2014 à 14:16
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
2 janv. 2015 à 10:25
"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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
31 déc. 2014 à 16:06
Re,

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