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

Excel Discussion :

Regrouper les procédure pour appeler des boutons


Sujet :

Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 41
    Points
    41
    Par défaut Regrouper les procédure pour appeler des boutons
    Bonjour,
    J'ai un fichier excel dans lequel j'ai 34 boutons servants à ouvrir 34 feuilles différentes dans un autre classeur. Mon problème est que je souhaiterais regrouper les procédures d'appel de ces feuilles dans une seule procédure (éviter d'avoir 34 sub...). De cette manière je n'aurais qu'un seul sub pour tous les boutons.
    Merci de m'aider

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Citation Envoyé par Nanit6
    Bonjour,
    J'ai un fichier excel dans lequel j'ai 34 boutons servants à ouvrir 34 feuilles différentes dans un autre classeur. Mon problème est que je souhaiterais regrouper les procédures d'appel de ces feuilles dans une seule procédure (éviter d'avoir 34 sub...). De cette manière je n'aurais qu'un seul sub pour tous les boutons.
    Merci de m'aider
    Salut
    Si tes boutons sont issus de la barre formulaire, tu les nommes comme tes feuilles et tu un code du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbook_2.activate
    sheets(Application.Caller).activate
    Pour tester crée une macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test_Bouton()
    msgbox (application.caller)
    end sub
    et affecte-la à tes boutons.
    Chaque clic sur un bouton ouvre une boite de dialogue avec le nom du bouton
    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 41
    Points
    41
    Par défaut
    Je comprends pas !
    Je débute juste dans VB mais ce que je souhaiterais faire c'est un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub Bouton_n()
    Sheets("feuille_n").Select
    end sub
    avec n la valeur du bouton (de 1 à 34) et le fait qu'il n'y ait que cette procédure.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Citation Envoyé par Nanit6
    Je comprends pas !
    Je débute juste dans VB mais ce que je souhaiterais faire c'est un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub Bouton_n()
    Sheets("feuille_n").Select
    end sub
    avec n la valeur du bouton (de 1 à 34) et le fait qu'il n'y ait que cette procédure.
    Salut
    À ma connaissance, ce n'est pas possible.
    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Bonjour Nanit6,

    Tu peux créer, dans un module de code, une macro du style :

    Sub Affiche(n As Integer)
    Workbooks("ClasseurX").Sheets(n).Activate
    End Sub


    ensuite, dans l'événement 'Click' de chaque bouton, tu appelles cette procédure en indiquant le numéro 'n' de la feuille que tu veux activer.

    Private Sub CommandButton1_Click()
    Affiche 1
    End Sub


    Espérant avoir répondu.

    Cordialement.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Citation Envoyé par Papou93
    Bonjour Nanit6,

    Tu peux créer, dans un module de code, une macro du style :

    Sub Affiche(n As Integer)
    Workbooks("ClasseurX").Sheets(n).Activate
    End Sub

    ensuite, dans l'événement 'Click' de chaque bouton, tu appelles cette procédure en indiquant le numéro 'n' de la feuille que tu veux activer.

    Private Sub CommandButton1_Click()
    Affiche 1
    End Sub

    Espérant avoir répondu.

    Cordialement.
    Salut le forum
    Salut Papou93.
    Dans ce cas, tu te retrouves avec 34 procédures. Autant renvoyer directement à la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub test()
    Dim X As Integer
    X = CInt(Right(Replace(Application.Caller, "_", " "), 2))
    WorkBook_2.Activate
    Sheets("feuille_" & X).Activate
    End Sub
    Juste quelques précisions Nanit6 : Bien qu'Excel puisse faire un tas de manips de manière automatique, il ne fait que ce qu'on lui dit et pas ce qu'on veut.
    Si tu veux de l'aide dans un forum, il faut donner tous les renseignements se référant à ton problème : par exemple ici le nom exact d'un bouton de numéro inférieur à 10 et un supérieur à 10, le nom du 2me classeur
    Ou, mieux, envoyer un fichier d'essai, ne contenant que ce qui a trait à ton problème (sans données perso, bien évidemment)

    Mais le but d'un forum, n'est pas de faire le travail, seulement d'aider de sorte que tu puisses le faire. Dans la plupart des cas, il faudra que tu adaptes les réponses à ta problème.
    Et n'espère pas qu'Excel fera du café. Des années que j'essaie, sans résultat. Alors utilise ses possibilités, et quand on t'en donne une, tente de l'exploiter, attend pas que la fonction miraculeuse apparaisse magiquement dans Excel (ou donne la recette, ça m'interesse)
    A+

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 41
    Points
    41
    Par défaut
    En gros ce n'est pas possible car il faut un commandbuttonX_click par bouton donc ce n'est pas intéressant.
    Merci quand même pour vos réponses.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Re-bonjour Nanit6, Gorfael,

    C'est une évidence qu'il faille un événement click par bouton, Excel ne sait pas (encore) lire dans les pensées !
    Même si le gain de lignes de codes n'est pas flagrant dans ce cas précis, il prend tout son sens pour des procédures plus complexes, et surtout dans le cas d'une modification ultérieure de ces procédures (ça évite de manipuler 34 événements 'Click' avec tous les risques d'erreurs ou d'omissions).

    Cordialement.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut Ooooups
    Citation Envoyé par Nanit6
    En gros ce n'est pas possible car il faut un commandbuttonX_click par bouton donc ce n'est pas intéressant.
    Merci quand même pour vos réponses.
    Salut
    En gros, c'est possible, mais pas avec un bouton issu de la barre "boîte à outils contrôles", uniquement avec ceux issus de la barre "Formulaire", comme déjà affirmer précédemment.
    A+
    Voir pièce jointe à tester

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Si, c'est possible aussi bien avec les boutons de la barre d'outils Controles que Formulaires.

    Cordialement.

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Citation Envoyé par Papou93
    Si, c'est possible aussi bien avec les boutons de la barre d'outils Controles que Formulaires.

    Cordialement.
    Salut à tous
    C'est possible avec une unique macro, même avec les contrôles ?
    Comment tu affectes directement une macro globale en cliquant sur le contrôle ?
    ça m'interesse, par ce que je n'ai pas réussi (hormis avce un call dans _click)
    A+

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Autant pour moi, Gorfael, j'avais mal interprété ta réponse.
    Je parlais pour ma solution, pour la tienne c'est effectivement impossible.

    Cordialement.

Discussions similaires

  1. [XL-2007] Utilisation d'une variable pour appel à des procédures
    Par Tetaye dans le forum Excel
    Réponses: 1
    Dernier message: 16/04/2015, 11h48
  2. Réponses: 9
    Dernier message: 20/10/2010, 11h42
  3. Utiliser les Namespace pour appeler des fonctions
    Par Flamby38 dans le forum VB.NET
    Réponses: 2
    Dernier message: 30/01/2008, 17h27
  4. utiliser des morceaux d'une image pour faire des boutons
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 14/12/2005, 00h05
  5. Réponses: 3
    Dernier message: 27/07/2004, 12h01

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