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 :

Command_Button s'exécutant sans cliquer dessus


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 55
    Par défaut Command_Button s'exécutant sans cliquer dessus
    Bonjour,
    J'ai un probleme avec mes command_button qui s'executent tout seuls. Je m'explique:
    Dans ma macro, je lance un userform. Lors de son lancement, si je ne met pas de MsgBox avant, il y a un clique de fait (ou un appuie sur la touche ENTER qui du coup désactive mon userform). J'ai un Application.screenUpdating tout au long de mon programme que je désactive au moment de l'affichage du userform. Est ce que cela peut poser probleme?
    Voici les codes:

    Pour le commandButton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
        TypedActif = Me.ComboBox1.Value
        Limite = Me.TextBox1.Value
        Unload Me
    End Sub
    Lors du lancement de mon userform:
    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
        Application.ScreenUpdating = True
     
        MsgBox ""
        MsgBox ""
     
        With Sheets("ClasseActif")
            For Ctr20 = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
                UserForm1.ComboBox1.AddItem .Cells(Ctr20, 1).Text
            Next
        End With
     
        ParMethodeAvecTypedActif = False
     
        UserForm2.Show
     
        Application.ScreenUpdating = False
    Les 2 MsgBox servent a palier ce probleme car du coup ils sont désactivés par le ENTER mystérieux.
    Un peu avant dans ma procédure, je supprime des feuilles de la facon suivante (pour supprimer les anciennes feuilles, je recree juste apres la feuille ClasseActif pour le remplissage de ma ComboBox):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            On Error Resume Next
            SendKeys ("{ENTER}")
            Sheets("ClasseActif").Delete
    Est ce que cela peut avoir une influence dessus?

    D'autre part, ces bouts de codes sont dans une boucle, lors du premier passage de la boucle, la deuxieme MsgBox apparait, mais pas lors des passages suivants.

    Si vous avez une idée, je suis preneur!
    Merci d'avance!
    Terim

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Heu... Tu sais ce que fait Sendkeys quand on lui pousse un {"Enter"} ?

    Est-ce que par le plus grand des hasard le bouton CommandButton1 de ton UserFrom2 serait :
    • soit le seul bouton de cette Form,
    • soit le bouton par défaut (propriété Defalt à True)


    Tu vérifies et tu nous dis ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Dans le code que tu donnes, je vois la ligne
    Si ton commandbutton à le focus à ce moment-là ou que la valeur de sa propriété DEFAULT est à True, cette ligne... clique dessus.

    Il faudrait voir quel est le contrôle qui a le focus à l'ouverture du userform. C'est celui qui a la propriété TabIndex à 0 (zéro). Au besoin, il conviendra de modifier l'ordre de parcours, éventuellement passer la propriété Default du commandbutton à False...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 55
    Par défaut
    Bonjour, merci pour vos reponses!
    Mais (evidement il y a un mais) je n'ai pas tou compris.
    Je ne sais pas trop ce que fait le SendKeys, je pensais que ca envoyait ENTER juste a la ligne ou on l'ecrivait (en cas d'erreur si la page que je veux supprimer n'existe pas)!

    Y aurait il un moyen de le désactiver juste apres dans ce cas? (une fois la page supprimée?)

    Le bouton CommandButton1 est en effet le seul bouton de mon userform1 qui se lance apres le 2 (j'avais programmé le Userform2 apres le 1 pour une extention du prog) Dans le userform2, il y a deux boutons radios pour des choix.

    Pierre Fauconnier -> j'ai pas tout compris avec ce que tu veux dire par "si ton commandbutton a le focus"..?

    Je viens de vérifier, la propriété Default est a False

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    simule la pression de la touche ENTER. Comme ton bouton est le seul du formulaire, presser la touche ENTER revient à cliquer sur ledit bouton...

    Pour un contrôle, Avoir le focus signifie être actif.

    Je suppose que tu as recopié du code "sans trop savoir"... Je ne suis pas dans ton code pour savoir si cette ligne est utile ou pas!

    A ce stade, je pense que tu devrais:
    - t'inspirer des tutoriels sur VBA.
    - expliquer un peu plus en détails ce que tu souhaites réaliser
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 55
    Par défaut
    La partie de code avec le SendKeys est en effet recopié.
    Je voulais juste appuyer sur ENTER pour confirmer la suppression de la feuille qui est une feuille de calcul intermédiaire. Apparement, si j'ai bien compris, mon bouton ENTER reste enclenché tout au long de la procédure (qui est relativement longue). Entre le moment ou j'envoie le ENTER et le moment ou je lance ma procédure, j'effectue d'autres opérations sur d'autres feuilles.
    Cette procédure fait ensuite appel a un userform contenant une combobox, une textbox et un commandbutton (qui est donc enclenché par le sendkeys).

    Je voulais donc savoir s'il était possible de désactiver le sendkeys apres la suppression de ma feuille afin d'éviter le probleme avec mon commandbutton de mon userform?
    Si non, est ce qu'en changeant une propriété du commandbutton, je pourrais quand meme m'en sortir?

    Merci beaucoup!

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

    Informations professionnelles :
    Activité : Engineering

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

    En lisant en diagonal, si j'ai bien compris, le SendKeys est utilisé pour simuler le click sur "OK" lorsque Excel demande la confirmation de suppression de la feuille.

    Pour éviter cette confirmation, enlève ce SendKeys et procède comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("ClasseActif").Delete
    Application.DisplayAlerts = True

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/08/2011, 16h18
  2. Réponses: 4
    Dernier message: 01/02/2010, 09h50
  3. Exécuter une fonction onClick sans cliquer
    Par Le Touriste dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/06/2009, 00h13
  4. Comment fermer une Popup sans cliquer dessus
    Par jackm dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 27/12/2008, 01h45
  5. recuperer un composant sans cliquer dessus
    Par christianf dans le forum AWT/Swing
    Réponses: 26
    Dernier message: 14/09/2007, 15h07

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