IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Créer un bouton pour activer des procédure dans d'autres feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Juillet 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2024
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Créer un bouton pour activer des procédure dans d'autres feuilles
    Bonjour,
    débutant en vba, je n'arrive pas à créer un bouton qui active toutes les procédures de toutes les feuilles du fichier.
    Mon fichier contient plusieurs feuilles qui contiennent les mêmes procédures (j'ai déjà basculé les procédures de privateSub à Sub).
    Chaque feuille est donc à présent construite comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub Worksheet_Activate()
       ThisWorkbook.RefreshAll
    End Sub
     
    Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Dim chemin As String
     
    chemin = "'" & ThisWorkbook.Path & "\[marges et prix pour mise à jour tarifs.xlsx]tableau cmup marges'!C1:AN222"
     
     
    For i = 12 To 45
     
    Cells(i, 12).Formula = "=iferror(vlookup((A" & i & "), " & chemin & ",30,false),"""")"
    Cells(i, 12).Value = Cells(i, 12).Value
     
    Next i
     
    End Sub

    A présent, je voudrais dans la "Feuil1 (page de garde)" créer un bouton qui fasse tourner /active /rafraîchisse toutes les procédures de toutes les feuilles.
    J'ai donc créé un bouton dans la "Feuil1 (page de garde)"
    Et j'ai entré le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Bouton1_Cliquer()
     
    Call Feuil6.Worksheet_Activate
    Call Feuil7.Worksheet_Activate
     
    Call Feuil6.Worksheet_SelectionChange
     
    End Sub
    Pour les procédures Worksheet_Activate, pas de souci, ça fonctionne il semble.
    Par contre pour la procédure Worksheet_SelectionChange, il me met une erreur : "Erreur de complilation: Argument non facultatif".

    Sauriez-vous me dire comment appeler et activer ce genre de procédure ??

    Merci d'avance pour vos lumières !

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 940
    Points : 28 938
    Points
    28 938
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a deux types de boutons, les boutons formulaires et les boutons ActiveX. Un bouton ActiveX a son propre événement depuis lequel on peut invoquer des procédures présentes dans les modules de la feuille ou des procédures présentes dans un module standard. Le bouton formulaire peut invoquer une procédure présente dans un module standard.
    Si le même événement doit être intercepté sur plusieurs feuilles, il est préférable d'utiliser les procédures événementielles du classeur. Celles qui sont préfixées Worksheet

    Si vous souhaitez effectuer des actions sur plusieurs feuilles, j'utiliserais la procédure d'un module standard que j'invoquerais depuis la feuille "Accueil" (page de garde). Procédure qui pourrait agir sur les différentes feuilles

    A lire, pour en savoir plus sur les procédures événementielles


    [EDIT]
    Worksheet_SelectionChange, il me met une erreur : "Erreur de complilation: Argument non facultatif".
    En principe, une procédure événementielle est là pour intercepter un événement pas d'être invoquée directement depuis une autre procédure et effectivement cette procédure a un argument obligatoire, nommé Target. Le message d'erreur est donc normal
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Candidat au Club
    Femme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Juillet 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2024
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci Philippe pour le retour rapide !

    Tout cela est un peu complexe à première vue, car je ne suis familière avec rien en vba !
    Mais je vais approfondir ça, avec les liens que vous me donnez, et si besoin de reposerai des questions (j'en aurai pour sûr &#128517.

    En tout cas un grand merci pour cette première réponse !

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 940
    Points : 28 938
    Points
    28 938
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si vous souhaitez effectuer une actualisation complète des tableaux croisés dynamiques et des requêtes Power Query, il suffit de le faire à l'ouverture du classeur et pas à l'activation des feuilles.
    La méthode RefreshAll de l'objet Workbook , actualise toutes les plages de données externes et les rapports de tableau croisé dynamique dans le classeur spécifié soit dans votre cas ThisWorkbook
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [AC-2013] Code VBA pour activer des filtres dans un formulaire
    Par bricoreur dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/04/2016, 20h05
  2. Réponses: 5
    Dernier message: 28/01/2015, 14h42
  3. [XL-2007] Créer une macro pour supprimer des onglets dans un autre classeur
    Par nicosd54 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 10h01
  4. Réponses: 2
    Dernier message: 04/06/2009, 14h49
  5. Réponses: 9
    Dernier message: 20/02/2009, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo