Actualisation qui lance des Macros sous Excel

Paehon -  
 Utilisateur anonyme -
Bonjour tout le monde !!

Je suis actuellement en train de réaliser un tableau excel qui se met à jour en récupérant des données sur une base mysql.

Je ne serai pas l'utilisateur final de l'application c'est pourquoi je veux la faciliter au maximum.

Bon, trêve de racontage de vie, je vous pose mon problème :

J'ai créé plusieurs macros avec Visual Basic afin de modifier les cellules récupérées (par exemple remplacer un booléen par une valeur string).

J'aimerais que quand l'utilisateur lancera l'actualisation en faisant un clic droit > Actualisation, ces macros se lancent également.

Je n'ai pas trouvé de solutions après de nombreuses recherches, c'est pourquoi je me tourne vers vous.

Merci beaucoup !!

3 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    Suggestion :

    À placer dans un module :
    Option Explicit
    '
    
    Public Compteur As Long
    
    Sub Procedure()
    
        MsgBox "Lupin"
    
    End Sub
    '
    


    À placer derrière la feuille à actualiser

    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        Compteur = (Compteur + 1)
        If (Compteur < 2) Then
            Call Module1.Procedure
        End If
        Application.EnableEvents = True
    End Sub
    '
    


    À placer dans ThisWorkbook

    Option Explicit
    
    Private Sub Workbook_Open()
        Compteur = 0
    End Sub
    '
    


    Cette méthode n'est pas parfaite car on ne sait d'avance le nombre
    de cellules qui seront modifiés par l'actualisation.

    Il serait plus simple d'ajouter une option dans le menu [ Données ],
    [ MiseAJour après actualisation ].

    Savez-vous comment ajouter un appel à une procédure dans le menu?

    Cdt

    Lupin
    0
  2. Paehon
     
    Salut Lupin,

    d'abord merci de ta réponse.

    Mais que veux-tu dire par rajouter une options dans le menu données > Mise à jour après actualisation ?

    Je suis sur Office 2007 et je ne vois rien qui correspondrait à ça.
    0
  3. Utilisateur anonyme
     
    re:

    Malheureusement, je suis sous Office 2003, je ne connais pas la syntaxe
    correcte pour Office 2007, mais voici un exemple fonctionnel sous 2003,
    dont tu pourra t'inspirer.

    Option Explicit 
    Option Private Module 
    ' 
    
    Function InstallMonMenu() As Boolean 
    ' 
    Dim Texte As String 
    Dim i As Integer 
    Dim Flag As Boolean 
    Dim BarreMenu, MaBarre, MonItem As Object 
    
    On Error GoTo Err_Barre 
    
        Flag = EnleveMonMenu 
        Flag = False 
         
        'Création de la barre de menu 
        Set BarreMenu = Application.CommandBars.ActiveMenuBar 
        Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup, temporary:=True) 
         
        MaBarre.Caption = "Système" 
         
        'Insère menu 
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton) 
        With MonItem 
            .Caption = "Modifier BDR" 
            .OnAction = "Modification" 
            .FaceId = 71 
        End With 
             
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton) 
        With MonItem 
            .Caption = "Conception" 
            .OnAction = "AfficheConception" 
            .FaceId = 521 
        End With 
         
        InstallMonMenu = True 
         
    Exit_Barre: 
        Exit Function 
         
    Err_Barre: 
        InstallMonMenu = False 
        Texte = "Erreur dans la routine AjoutBarreMenu" 
        Texte = Texte & vbCrLf & Err.Number 
        Texte = Texte & vbCrLf & Err.Description 
        'MsgBox Texte 
        Resume Exit_Barre 
         
    End Function 
    ' 
    
    Function EnleveMonMenu() As Boolean 
    
        Dim Texte As String 
        Dim Barre As CommandBarControl 
             
        For Each Barre In Application.CommandBars.ActiveMenuBar.Controls 
            If (Barre.Caption = "Système") Then 
                Barre.Delete 
            End If 
        Next Barre 
        EnleveMonMenu = True 
    
    Exit_Close: 
        Exit Function 
    
    Err_Close: 
        Texte = "Erreur dans la routine EnleveMonMenu du classeur Configuration.xls!" 
        Texte = Texte & vbCrLf & Err.Number & " - " & Err.Description 
        'MsgBox Texte 
        EnleveMonMenu = False 
    
    End Function 
    ' 
    


    Ce code permet l'ajout d'un nouveau menu sous Excel. Tu pourras
    aussi t'inspirer d'un classeur de mon cru que tu peux télécharger
    ici : https://www.excel-downloads.com/resources/categories/utilitaires.18/

    Recherche le fichier compressé [ VizioXLA ].

    Regarde les modules [ ScanListeMenu ] et [ ScanListeSousMenu ].

    Cdt

    Lupin
    0