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 :

[VBA excel] Probleme sur bouton commande


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 14
    Points : 10
    Points
    10
    Par défaut [VBA excel] Probleme sur bouton commande
    Bonjour, ou plutot bonsoir
    Voila j'ai un probleme en VBA sous EXCEL. En effet, j'ai un bouton dans une feuille du classeur que je veux rendre utilisable. Le probleme c'est que je ne peux pas savauvegarder la macro (Sub) sur la feuille elle meme car elle change tout le temps.
    En fait, je voudrais savoir si il est possible de faire une macro qui écoute un bouton crée sur la feuille précédement. Tout en mettant l'écoute dans un module plutot que sur la feuille.
    Je sais pas si j'ai été clair mais merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Si j'ai bien compris ?, tu peut faire ceci.
    Tu places ta macro dans un module, ensuite sur ta feuille tu places un bouton de la barre d'outils Formulaire et tu lie ta macro.
    Tu peux placer autant de bouton que tu veux sur plusieurs feuille et lier la macro

    jpleroisse

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    En fait je génére mon bouton a chaque fois (la feuille excel étant différente à chaque fois) de la manière suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim oOLE As OLEObject
     
     Set oOLE = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
    , DisplayAsIcon:=False, Left:=184, Top:=314.338235294118, _
    Width:=150, Height:=30)
    'affecte un nom
    oOLE.Name = "boutonOK"
    'affecte une donnée sur le bouton
    oOLE.Object.Caption = "Génération des tableaux"
    le probleme c'est que l'écoute de se boutton (OnClick) se fait sur la feuille du classeur et je voudrais qu'elle se faise lors de la construction de cette feuille

    c'est assez complexe je l'admet.
    Merci d'avance

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par RedBurn
    le probleme c'est que l'écoute de se boutton (OnClick) se fait sur la feuille du classeur et je voudrais qu'elle se faise lors de la construction de cette feuille
    Je n'ai toujours pas compris ce que tu veux dire par "lors de la construction de cette feuille" mais...

    N'est-il pas nettement plus simple de créer une barre d'outil et d'y mettre ton bouton qui sera actif pour (et accessible de) toutes les feuilles?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    La feuille excel dans laquelle se trouve le bouton est généré a chaque fois à partir d'un feuille principale récupéré sur un serveur toutes les semaines (et qui diffère à chaque fois). Le code de création est dans un module à part mais le code d'écoute du bouton, pour que ca marche, je ne trouve pas d'autre facon que le mettre sur ma feuille du classeur mais je voudrais l'en séparer.
    Peut être que ta technique fonctionne mais je ne sais pas la mettre en place.
    Disons que en fait je voudrais faire une écoute indépendement des feuilles du classeur

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ce que tu peux faire, c'est placer la macro dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
     
    End Sub
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
     
    End Sub
    ou...

    avec un test sur la feuille active

    Si tu places un bouton sur chaque feuille, arrange-toi pour qu'ils aient tous le même nom, ex CommandButton1
    Ensuite, c'est le bouton de la feuille "détectée active" que tu testes.
    J'ai fait ça mais je ne sais plus dans quelle appli. Si je retrouve, je te mets ça.

    A+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonjour,
    Je crois que la solution de AlainTech est la meilleure, dans ta barre d'outils existante tu crées un nouveau menu qui lance la macro sur la feuille active quelle quelle soit.

    jpleroisse

  8. #8
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Et donc, la mettre dans le Perso.xls...

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ou créer un modèle adapté...

  10. #10
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Oui! N'empêche que le perso.xls, il est fait pour ça.

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui, et tu passes ton perso à tous les utilisateurs... avec une barre d'outil encombrée d'un tas de trucs inutiles beurk beurk beurk !

    Le mieux est de se créer une barre en dynamique avec des boutons en dynamique, qui lancent les macros qui vont bien...

    Au fait, RedBurn, j'ai le code qui fait ça. Ça te dit

    A+

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonjour,
    ouskel'or, quentend-tu par tu passes ton perso à tous les utilisitateurs?
    Quand à la barre d'outils, ce n'est pas un menu en plus qui va l'encombrer.
    Si on veux, on peut placer un sous menu dans le menu Outils ou autres.

    jpleroisse

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello leroissejp,

    Je pense qu'une appli est faite pour être distribuée (toujours est-il que c'est le cas chez moi) Or, si je mets un bouton dans mon perso, les autres ne l'auront pas. En faisant une barre d'outil pour un bouton, que je place là où je veux qu'elle soit, et que j'efface en sortie, je peux distribuer mon fichier sans problème.

    Quant à placer un sous-menu (ce qui a été ma première idée) je me suis vite dit que l'utilisateur lambda allait devoir être informé de la position... Or moins tu as à en dire, plus mieux c'est simple, moins plus c'est compliqué...

    A+

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir ouskel'n'or
    J'ai déjà posté, mais apparament celà n'a pas marcher.
    Tout celà pour te dire que je suis d'accords avec toi sur certain point.
    Mon code fait exactement comme tu dis, je détruit le menu (ou le sous-menu) en quittant l'application et l'-orsque l'utilisateur ouvre ce classeur uniquement le menu se crée.
    Pour ce qui est du nom du menu, il n'appartient à aucun nom de menu Excel, donc l'utilisateur ne doit pas avoir de mal à le repérer.
    Si tu veux, je place mon code ici, tu pourras l'essayer et me dire ce que tu en pense?

    jpleroisse

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello,

    J'ai là une macros pour installer un bouton sur une barre d'outils

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_AddinInstall()
        Application.CommandBars.Add(Name:="ConversionFrancsEuros").Visible = True
        Set MaBarre = CommandBars("ConversionFrancsEuros")
            MaBarre.Visible = True
        Set MonBouton = MaBarre.Controls.Add(Type:=msoControlButton)
            MonBouton.FaceId = 0
            MonBouton.Caption = "Convertit le contenu de la plage en Euros"
            MonBouton.OnAction = "'EuroPaf.xla'!TransformeEnEuros"
            MonBouton.PasteFace
    End Sub
    MonBouton.OnAction = "'EuroPaf.xla'!TransformeEnEuros"
    où "TransformeEnEuros" désigne la macro que tu veux lancer à l'aide ton bouton et "'EuroPaf.xla'! est nom du fichier dans lequel elle se trouve.

    MonBouton.PasteFace
    Il s'agit là de l'icône que je colle sur le bouton (dans cet exemple, l'icône se trouvait dans une feuille de calcul de 'EuroPaf.xla') icône que je prenais le soins de copier avant de lancer la macro.
    Mais on doit pouvoir affecter directement une icône au bouton en donnant nom et adresse. (à essayer)
    Je regarde si j'ai ça... dans l'aide...

    A+

  16. #16
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Dans la série "J'ai un code", en voici un autre.

    Il crée une feuille, la nomme, y place 2 boutons et fait les liens des boutons vers leurs macros respectives.
    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 CreateSheet(sMonth As String)
      Dim i As Byte
      Dim cmdNew As Variant
      Worksheets.Add after:=Sheets(Worksheets.Count)
      ActiveSheet.Name = sMonth
      Rows(1).RowHeight = 50
      Rows(2).RowHeight = 28
      For i = 1 To 7
        Columns(i).ColumnWidth = 11
      Next i
      Columns(4).ColumnWidth = 65
      Set cmdNew = ActiveSheet.Buttons.Add(Left:=63, Top:=1, Width:=60, Height:=49)
      cmdNew.Caption = "Start Log"
      cmdNew.OnAction = "ShowForm"
      Set cmdNew = ActiveSheet.Buttons.Add(Left:=125, Top:=1, Width:=60, Height:=49)
      cmdNew.Caption = "Stop Log"
      cmdNew.OnAction = "ActionStop"
      ...
    End Sub
    ShowForm et ActionStop sont 2 macros présentes dans un module.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello Alain,

    Hi hi ! Les boutons directement dans la feuille de calcul !
    le probleme c'est que l'écoute de se boutton (OnClick) se fait sur la feuille du classeur et je voudrais qu'elle se faise lors de la construction de cette feuille
    J'ai mal décodé ou quoi ?

    A+

    NB - N'empêche que RedBurn, "y répond pas", olors va savoir...

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonjour,
    ouskel'n'or, voici le code que j'utilise pour créer un menu et sous-menus
    Une fois la macro lancée, placer dans WorkBook.open(AjouterNouveauMenu) et dans WorkBook.Deactivate(DeleteMenu)
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    Sub AjouterNouveauMenu()
    Dim HelpIndex As Integer
    Dim NewMenu As CommandBarPopup
    Dim MenuItem As CommandBarControl
    'Supprimer le menu s'il existe déjà
    Call DeleteMenu
    'Obtenir l'index du menu Fichier
    HelpIndex = CommandBars(1).Controls("Fichier").Index
     
    'Créer le menu
    Set NewMenu = CommandBars(1).Controls.Add _
    (Type:=msoControlPopup, _
    Before:=HelpIndex, Temporary:=True)
     
    'Ajouter une légende
    NewMenu.Caption = "&Mon menu"
     
    'Premier élément de menu
    Set MenuItem = NewMenu.Controls.Add _
    (Type:=msoControlButton)
    With MenuItem
        .Caption = "&Aperçu avant impression"
        .FaceId = 160
        .OnAction = "MaMacro"
    End With
    'Deuxième élément de menu
    Set MenuItem = NewMenu.Controls.Add _
    (Type:=msoControlButton)
    With MenuItem
        .Caption = "&Lancer la procédure"
        .FaceId = 590
        .OnAction = "MaMacro1"
    End With
    End Sub
     
    Sub DeleteMenu()
    On Error Resume Next
    CommandBars(1).Controls("Mon menu").Delete
    End Sub
     
    Sub MaMacro1()
    MsgBox "Bonjour"
    End Sub
     
    Sub MaMacro()
    ActiveWindow.SelectedSheets.PrintPreview
    End Sub
    jpleroisse

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ben ouais, moi aussi Megashell j'ai ça... Mais après, je compte sur toi pour l'effacer... j'ai vu que tu savais faire...

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Sub CréationMenuGraphes()
    Set MonControl = CommandBars("Worksheet Menu Bar").Controls _
        .Add(Type:=msoControlPopup)
        With MonControl
            .Caption = "Mise en forme des graphes"
            Set MonMenu = MonControl.Controls.Add(msoControlButton)
                With MonMenu
                    .Caption = "Barregraphe Dépenses"
                    .OnAction = "BarregrapheDépenses"
                End With
            Set MonMenu = Nothing
            Set MonMenu = MonControl.Controls.Add(msoControlButton)
                With MonMenu
                    .Caption = "Camembert Dépenses"
                    .OnAction = "GrapheDépensesAnnée"
                End With
            Set MonMenu = Nothing
            Set MonMenu = MonControl.Controls.Add(msoControlButton)
                With MonMenu
                    .Caption = "Barregraphe recettes"
                    .OnAction = "Barregrapherecettes"
                End With
            Set MonMenu = Nothing
            Set MonMenu = MonControl.Controls.Add(msoControlButton)
                With MonMenu
                    .Caption = "Camembert recettes"
                    .OnAction = "CamembertDépensesAnnuelles"
                End With
            Set MonMenu = Nothing
        End With
        Set MonControl = Nothing
    End Sub
    Hé, Megaxel, tu es sûr qu'on répond à la question ?

    A+

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Re boujour ouskel'n'or
    Etant donné que RedBurn n'a plus l'air intéressé par son problème, autant continuer notre petite conversation.
    Voilà, j'ai essayer ton code, mais celà ne fonctionne pas chez moi, y a t'il des bibiothèques a charger ?? en plus comme tu ne déclare aucune variable, c'est pas facile.

    jpleroisse

Discussions similaires

  1. {VBA Excel}Probleme sur macro mauvaise lecture de feuille excel
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 15h38
  2. {VBA Excel}Probleme de code sur l'export Excel à Word
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 21/06/2007, 10h59
  3. [VBA][Excel] Nom d'une command bouton
    Par ecirb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2007, 11h29
  4. [VBA][Excel]Mettre un bouton d'aide sur un userform
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/01/2006, 18h30
  5. [VBA][EXCEL]PB avec la commande WorksheetFunction.VLookup
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/11/2005, 16h41

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