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 : CommandButtons et callback


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut VBA Excel : CommandButtons et callback
    Bonsoir,

    Je développe une macro dans laquelle je crée un CommandButton au sein d'une feuille Excel.

    Ci-dessous, le code correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim bouton As OLEObject
    With wsExcel.Cells(numeroLigne, UBound(tabIntitules) + 1)
    Set bouton = appExcel.ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
    Left:=.Left + 2, Top:=.Top + 1, Width:=40, Height:=20)
    End With
    Or, j'ai beau avoir défini une sub CommandButton1_Click() pour y coder les traitements que le clic doit déclencher, elle n'est jamais appelée lorsque je clique sur mon CommandButton... Comprends pas...

    Quelqu'un aurait-il une idée ? Y a-t-il un endroit particulier où il faut définir cette sub ? J'ai beau chercher dans l'aide en ligne d'Excel, sur les forums, je ne trouve pas de réponse.

    Merci d'avance.
    Raoul

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonsoir,
    Dans le module du Userform, place ce code.
    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
     
    Option Explicit
    Public WithEvents CKB1 As MSForms.CommandButton
     
    Private Sub UserForm_Initialize()
    Set CKB1 = UserForm1.Controls.Add("Forms.CommandButton.1", "Boutton1", True)
    CKB1.Left = 18
    CKB1.Top = 50
    CKB1.Width = 75
    CKB1.Height = 20
    CKB1.Caption = CKB1.Name
    End Sub
     
    Private Sub CKB1_Click()
    MsgBox "Bonjour"
    End Sub
    Dans un Module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub CréerBouton()
    UserForm1.Show
    End Sub
    jpleroisse

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    si tu ajoutes dynamiquement un bouton dans la feuille active , la procedure "Sub CommandButton1_Click() " doit etre placée au niveau de cette meme feuille ( et pas dans un module standard )

    ta procedure est placée dans la bonne feuille ?


    bonne journée
    michel

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut
    Citation Envoyé par SilkyRoad
    si tu ajoutes dynamiquement un bouton dans la feuille active , la procedure "Sub CommandButton1_Click() " doit etre placée au niveau de cette meme feuille ( et pas dans un module standard )
    ta procedure est placée dans la bonne feuille ?
    Bonjour Michel,
    Merci de ta réponse ! Il est là, le problème.

    Effectivement, la procédure CommandButton1_Click() est placée avec le reste du code, dans un module...

    Mais comment puis-je placer cette procédure dans une feuille que je crée lors de l'exécution de ma macro ?

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut
    Merci de ta réponse, jp.
    Malheureusement, c'est pas exactement ce dont j'ai besoin puisque la feuille Excel, je la crée automatiquement, à partir de ma macro (que j'exécute dans Word... ). A force de vouloir faire court et précis... Mais merci encore pour ta réponse prompte !

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    rebonjour

    cette démo de Denis Michon devrait repondre à ta demande

    http://frederic.sigonneau.free.fr/code/VBE/AjoutBoutonPlusCodeParVBA.txt


    cordialement
    michel

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut
    Citation Envoyé par SilkyRoad
    cette démo de Denis Michon devrait repondre à ta demande
    Ca marche !! Super !!!! D'enfer !

    Mille mercis, Michel.

  8. #8
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut
    Dernière question, en corollaire :
    Comment puis-je appeler une procédure du module, depuis la procédure CommandButton1_Click() ?
    Merci.

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben si ta procedure et publique suffit d'écrire son nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ..
    maprocedure
    ...

  10. #10
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut
    Citation Envoyé par bbil
    ben si ta procedure et publique suffit d'écrire son nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ..
    maprocedure
    ...
    Ben, ça marche pas...

    maprocedure est une procédure publique mais qui est placée dans le module (dans Word... ), et la procédure CommandButton1_Click() est la procédure associée au clic sur le bouton que je crée au sein de la feuille Excel, elle-même, également créée par ma macro Word...

    C'est pas possible, c'est ça ? Il faut que j'écrive dynamiquement le code de maprocedure dans la feuille Excel que je crée ?

  11. #11
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    rebonjour

    pour déclencher une macro Word depuis Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
    Dim wordApp As Object
    Set wordApp = GetObject(, "Word.Application")
    wordApp.Run "maProcedure"
    End Sub

    bon apres midi
    michel

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 89
    Par défaut
    Bonjour,
    j'ai une petite qestion :
    je n'ai pas bien compris ca :
    ' Ecriture du code dans le module de la feuille (fs)
    With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
    NextLine = .CountOfLines + 1
    .InsertLines NextLine, Code
    End With
    Peux tu m'expliquer stp?
    Si j'ai bien compris en fait, c'est le code qui permet d'ecrire le code que l'on a écrit juste avant dans la feuille où l'on a mis le bouton, c bien ca?
    Mais pkoi ai je comme erreur
    Erreur d'exe 1004
    L'accés par programme au projet VB n'est pas fiable
    ??
    D'avance merci pr votre aide

  13. #13
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut
    Citation Envoyé par SilkyRoad
    pour déclencher une macro Word depuis Excel


    Impeccable. Merci Michel.

  14. #14
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut
    Citation Envoyé par ptitsoleil87
    Si j'ai bien compris en fait, c'est le code qui permet d'ecrire le code que l'on a écrit juste avant dans la feuille où l'on a mis le bouton, c bien ca?
    Oui, c'est ça. C'est pour écrire la procédure associée au clic sur le bouton que l'on a créé dans une feuille par programmation.

    Citation Envoyé par ptitsoleil87
    Mais pkoi ai je comme erreur
    Erreur d'exe 1004
    L'accés par programme au projet VB n'est pas fiable
    ??
    Moi, je suis pas bien placé pour t'expliquer, vu que c'est moi qui ai créé ce sujet, et que, donc, j'avais besoin d'aide dessus...

    Maintenant, ce que m'inspire le message d'erreur, c'est que tu as mal défini ta variable ThisWorkbook qui te permet d'accéder au projet VB dans l'instruction :

    ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09
  2. [vba-excel] Le temps de fermeture trop court ?
    Par Damsou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 10h03
  3. [VBA-Excel]
    Par Damsou dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/01/2005, 10h17
  4. [VBA EXCEL] Réduire/Agrandir UserForms
    Par Fench dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2003, 16h02
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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