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 :

UserForm et macro d'un CommandButton


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut UserForm et macro d'un CommandButton
    Bonjour,

    J'espère que vous allez pouvoir m'éclairer.
    J'ai créer un CommandButton dans la feuille1 qui exécute une macro
    En cliquant dessus au début elle fait un test et si vrai, elle ouvre un userform(1 bouton confirmer et 1 bouton annuler)
    confirmer= poursuivre la macro
    annuler= sortir de la macro

    Problème, je n'arrive pas à lier le choix de l'userform avec la macro du commandbutton.

    Est ce que vous pouvez m'aiguiller ??

    MERCI BEAUCOUP

  2. #2
    Membre actif Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Points : 237
    Points
    237
    Par défaut
    Bonsoir le forum,

    Voici un exemple que j'ai créé avec une MSGBOX mais tu peux l'adapter à ton userform.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim vReponse
     
    vReponse = MsgBox("BLABLA", vbCritical + vbOKCancel, "TITRE")
     
    If vReponse = 2 Then 'si clic sur bouton "ANNULER" de la BOX
       Exit Sub
    End If
    Bon courage à toi.

  3. #3
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Citation Envoyé par charlesbruno Voir le message

    Problème, je n'arrive pas à lier le choix de l'userform avec la macro du commandbutton.

    Qu'est ce que t'entends par " lier le choix " ?


    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If cells(1, 1) = "toto" Then 
    Userform.show  'Affiche le userform
    Else
    exit sub
    end if
    cela dit sans ton code et sans expliciter ton problème de manière claire, tu ne pourras pas avoir une réponse pertinente.

    Bon courage

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Voici la macro qui s'exécute quand je clique sur le bouton de commande mis la feuille "Import"

    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
    Sub CommandButton1_Click()
     
    Dim T As Variant
    For Each T In [Liste!A6:A100]
    If T = [Import!C3] And Sheets("Liste").Range(T.Cells(1, 2), T.Cells(1, 2)) <> "" Then
    Load UserForm2         'le test est vrai donc il charge l'userform'
    UserForm2.Show
    End If
    Next
     
    ' et là je voudrais qu'en cliquant sur le bouton NON contenu dans l'userform , qu'on sorte de la macro' 
     
    If ActionCmdNON = True Then   
    Exit Sub
    End If
     
    'si bouton OK alors on continue la macro'
     
    If ActionCmdOK = True Then
    .....
     
    'ci dessous un bout de la macro qui suit, elle fonctionne parfaitement'
     
    Dim A As Variant
    Dim i As Integer
    Dim C As Range
    For i = 1 To 48
    For Each A In [Import!B21:B130]
    For Each C In Sheets(B(i)).Range("A1:A100")
    If A.Value = B(i) And C = [Import!C3] Then
    Range(A.Cells(1, 2), A.Cells(1, 9)).Copy
    Sheets(B(i)).Range(C.Cells(1, 2), C.Cells(1, 2)).PasteSpecial Paste:=xlPasteValues
    End If

    A noter que l'userform apparait bien selon la condition du test et disparait bien quand je clique sur l'un ou l'autre bouton de l'userform
    ci dessous code dans l'userform, mais sans succès !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub CmdNON_Click()
    ActionCmdNON = True
    Unload UserForm2
    End Sub
     
    Private Sub CmdOK_Click()
    ActionCmdOK = True
    Unload UserForm2
    End Sub
    J'espère que c'est plus clair comme ça !!!
    MERCI

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu déclare une variable boolean globale Flag
    sur OK de l'USF, elle prend Flag=True
    sur Cancel, elle prend Flage=Flase


    dans ta macro, tu vas donc tester sur Flag
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public Falg as boolean  'en tête de module
    Sub CommandButton1_Click()
     
    Dim T As Variant
    For Each T In[Liste!A6:A100]
    If T = [Import!C3] And Sheets("Liste").Range(T.Cells(1, 2), T.Cells(1, 2)) <> "" Then
    Load UserForm2 'le test est vrai donc il charge l'userform'
    UserForm2.Show
    End If
    if Not Flag Then Exit Sub
    Next
    ...La suite de ton code
    à tester

    EDIT: C'est ce que tu as fais en partie, il faut juste déclarer tes variables boolean en Public

    EDIT 2:
    le test sur Flag doit être après le End If

    Question, pourquoi passer par un userform alors qu'un simple MsgBox fera largement l'affaire?
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci mercatog pour ton aide, et effectivement j'ai cherché à compliquer les choses, un simple msgBox fait l'affaire !!
    J'ai quand même voulu essayer avec l'userform en prenant en compte tes indications, mais sans succès...
    et avec un msgbox, le problème a été résolu en 5min !!

    MERCI à TOUS

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

Discussions similaires

  1. [XL-2007] Ajouter un bouton dans un userform par macro
    Par mimidodo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/11/2015, 13h31
  2. [XL-2003] Clignotement Bouton Userform pendant macro
    Par MarcelG dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/04/2013, 10h05
  3. [OL-2010] transformer un userform en macro
    Par ptibaz dans le forum Outlook
    Réponses: 0
    Dernier message: 28/03/2013, 15h49
  4. Userform et macro plusieurs parametres
    Par obie78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/09/2010, 09h06
  5. supprimer un userform sans macro
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/02/2008, 10h17

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