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 :

Bouton identique sur plusieurs feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Bouton identique sur plusieurs feuilles
    Bonjour
    je ne suis pas développeur et ma question va peut être vous sembler bête...

    j'ai 5 feuilles.
    Dans mes 5 feuilles, j'ai 5 boutons dont le code est identique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
    Dim FEUILLE As String
    FEUILLE = ActiveSheet.Name
    UserForm1.ComboBox1.Value = Sheets(FEUILLE).Range("K3").Value 'REGION
    UserForm1.ComboBox7.Value = Sheets(FEUILLE).Range("K4").Value 'SUB-REGION
    (...)
    UserForm1.Show
    End Sub
    Y a t il un moyen pour avoir une seule procédure pour mes 5 boutons?
    merci d'avance

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    à mon avis oui en mettant ton code dans un module (ex : que tu appelle test) et en appelant ce code avec ton bouton (call test) et en spécifiant avant call test > feuille = activesheet.name

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    bonjour
    j'ai essayé mais il me dit "l'indice n'appartient pas à la sélection"

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    A quelle ligne ? parce moi j'ai été vite pour te répondre et peut-être trop imprécis

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    ok, j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Dim FEUILLE As String
    FEUILLE = ActiveSheet.Name
    UserForm1.ComboBox1.Value = Sheets(FEUILLE).Range("K3").Value 'REGION
    UserForm1.ComboBox7.Value = Sheets(FEUILLE).Range("K4").Value 'SUB-REGION
    (...)
    UserForm1.Show
    End Sub
    puis dans private, un call test
    cela marche

    par contre, j'avais mis avant un application.run("ma_procedure"), et là, cela ne marchait pas. Pourquoi?

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Si ça marche comme ça, c'est bien mais pour

    par contre, j'avais mis avant un application.run("ma_procedure"), et là, cela ne marchait pas. Pourquoi?
    Je ne saurais te répondre

  7. #7
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run ("MaMacro")
    fonctionne au même titre que
    ou tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaMacro 'Call étant facultatif dans ce cas
    Application.Run est principalement utilisé pour appeler une procédure située dans un autre classeur

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    merci pour ces conseils.

    relisant mon code, je souhaiterais l'optimiser au maximum :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
    Call valeur_societe
    End Sub
    Private Sub CommandButton2_Click()
    Call valeur_societe
    End Sub
    Private Sub CommandButton3_Click()
    Call valeur_societe
    End Sub
    Private Sub CommandButton4_Click()
    Call valeur_societe
    End Sub
    y a t il moyen de dire que le bouton 1, 2, 3, 4 font appel à la même prodécure?

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Ca m'étonnerais, étant donné que chaque bouton est sur une feuille distincte

    avec une déclaration private sub, en résumé pour moi c'est non mais on en apprends tous les jours, à voir les réponses éventuelles

    Mais comme l'a dit fring, tu peux te contenter de mettre valeur_societe plutot que call valeur_societe

    A +

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    ok merci
    pour finir sur call, dans quel est ce nécessaire?

  11. #11
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    pour finir sur call, dans quel est ce nécessaire?
    Je ne sais pas mais il suffit pet etre de consulter la FAQ


    a+

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Comment avez-vous créé vos boutons sur chaque feuille car vous pouvez avoir le même nom pour chaque bouton créé sur chaque feuille.

  13. #13
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir Jacques_jean

    Je vais d'essayer, tu as raison, si jeanmanu insere un bouton "formulaire" avec le meme nom "commandebutton1", le même code peut servir en mettant dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub valeur_société()
    Dim FEUILLE As String
    FEUILLE = ActiveSheet.Name
    UserForm1.ComboBox1.Value = Sheets(FEUILLE).Range("K3").Value 'REGION
    UserForm1.ComboBox7.Value = Sheets(FEUILLE).Range("K4").Value 'SUB-REGION
    (...)
    UserForm1.Show
    End Sub
    ________________________________________________________________
    Sub CommandButton1_Click()
    valeur_societe
    End Sub
    a +

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    merci pour cette piste, mais si je renomme mon bouton commandbutton2 en commandbutton1, il n'aime pas et me remets le nom initial.
    J'ai essayé le mettre dans un même module, sans succès. Je m'y prends surement mal.

  15. #15
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Non mais à mon avis, dans ta feuille tu choisis la boite à outils "formulaire" (avant excel 2007) et tu mets le bouton de commande en lui attribuant la macro valeur_société que tu aura mis dans un module avec "sub" et non "private sub"

  16. #16
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Une autre solution, se créer une petite barre de menu avec le bouton qui s'affichera à l'ouverture du classeur et se supprimera à sa fermeture.

    Code à insérer dans un module standard : 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 creation_barre()
    Dim Cbar As CommandBar, Cbut As CommandBarButton
     
    Set Cbar = CommandBars.Add(Name:="MaBarre", Position:=msoBarTop, Temporary:=True)
    Set Cbut = Cbar.Controls.Add(msoControlButton)
    With Cbut
        .FaceId = 52 '<-- icône du bouton
        .Caption = "Valeur Société" '<-- texte du bouton
        .Style = msoButtonIconAndCaption '<-- style du bouton
        .OnAction = "valeur_societe" '<-- procédure à exécuter
    End With
    Cbar.Visible = True
     
    End Sub
     
    Sub suppression_barre()
    On Error Resume Next
    CommandBars("MaBarre").Delete
    End Sub
    Code à insérer dans ThisWorkbook : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    suppression_barre
    End Sub
     
    Private Sub Workbook_Open()
    creation_barre
    End Sub

    Pour plus de détails sur la création d'une barre de menus et de boutons :
    Création d'une barre de menus personalisée
    .

  17. #17
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir Fring,
    Ce que tu propose, c'est bien pour apprendre à manipuler autrement VBA et je vais encore mettre ces conseils dans mon escarcelle, mais j'espère que je ne me suis pas trompé en conseillant à jeanmanu de mettre un bouton "formulaire"

    Bonne soirée

    Dominique

  18. #18
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Oui ce que tu as proposé fonctionne mais perso je n'utilise pas les contrôles issus du menu formulaire, contrôles qui n'acceptent quasi aucune propriété.

    Mais je n'ai pas dis qu'il ne fallait pas opter pour cette solution , je proposais juste une autre possibilité sans avoir de bouton à positionner sur la feuille.

  19. #19
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    moi j'abonde dans le sens de fring. On ne doit pas utiliser les contrôles formulaires sauf lorsque l'accès direct est primordial, ce qui recouvre assez peu de cas

  20. #20
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Pour ma part, j'évite aussi pour les autres controles que je ne sais pas gérer mais les boutons, ce n'est pas méchant

    à bientôt

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] bouton identique sur plusieurs lignes
    Par vincent59139 dans le forum Excel
    Réponses: 0
    Dernier message: 11/10/2013, 11h09
  2. [VBA-E] Données identiques sur plusieurs feuilles
    Par pm2036 dans le forum Macros et VBA Excel
    Réponses: 42
    Dernier message: 09/05/2007, 15h05
  3. Bouton radio sur plusieur ligne avec Border layout
    Par Bason_sensei dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 03/05/2006, 16h03
  4. excel VBA comment recopier sur plusieurs feuilles
    Par floflo2006 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/11/2005, 15h56
  5. [excel] même code sur plusieurs feuilles
    Par sabotage dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/11/2005, 12h23

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