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 :

Intercepter un clic dans un userform pendant l'exécution d'une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    Par défaut Intercepter un clic dans un userform pendant l'exécution d'une macro
    Dans un userform j'ai une procédure assez longue que je souhaiterais pouvoir interrompre à l'aide d'un clic de souris quand j'ai obtenu un certain résultat, mais pas nécessairement, pouvant souhaiter que la procédure se poursuive.
    Un test sur le résultat en question qui interromprait la procédure n'est pas possible, ce résultat n'étant pas connu à l'avance.
    Seul l'oeil peut dire au bon moment "j'arrête !" ou "j'arrête pas !"
    J'ai pensé le faire en interceptant la frappe d'une touche mais j'ai le souvenir d'un code assez lourd et peu fiable, faisant appel entre autres à GetAsyncKeyState, Addressof, SetTimer et autres amusant KillTimer (qui, lui, fonctionnait une fois sur deux)
    Bref, ça fonctionne parfois mais cépaça.
    En fait, ce que je veux, c'est pouvoir interrompre une macro quand je veux mais conserver les résultats déjà obtenus.

    Il y a peut-être quelque chose à faire avec EnableEvents mais je ne vois pas
    Si quelqu'un avait une idée, je serais très content
    Par avance, merci.

  2. #2
    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
    Salut Ousk,

    Jette un oeil sur le fichier joint si ce petit bout de code répond à tes attentes.

    Pièce jointe 28098

  3. #3
    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
    Par défaut
    Merci, Fring,
    Ça y est, je me suis levé bien réveillé et j'ai trouvé !
    J'avais essayé ta solution mais elle ne fonctionnait pas parce que je voulais utiliser le même bouton. Or j'avais mis le code dans l'événement Click si bien que le bouton restait inaccessible ("enfoncé")
    La solution ? Passer le code dans MouseUp. Le bouton conserve le focus mais répond aux événements.
    C'est tout à fait ce qui me convient.
    Ainsi je peux utiliser le même bouton qui passe de "Lancer la macro" à "Interrompre la macro" selon que le boolean est true ou false.
    Merci beaucoup, c'est bien ta solution qui m'a conduit à voir un peu plus loin que le click d'un bouton

    Si ça t'intéresse de savoir ce que j'en ai fait, regarde l'userform, ici

  4. #4
    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
    Joli

    Mais j'ai un bug au survol de la souris, sur cette ligne
    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
    Public Function ChercherPartout(PathRep As String, NomFich As String, Optional SousRep As Boolean = True) As Boolean
    Dim fs, f, NomRep, RepFich As Variant
    Set fs = CreateObject("Scripting.FileSystemObject")
        If Not Go Then Exit Function
        Me.Label1.Caption = "Recherche dans le répertoire " & vbCr & PathRep
        DoEvents
        PathRep = PathRep & "\"
        If Dir(PathRep & NomFich) <> "" Then   <---
            Me.ListBox1.AddItem PathRep
        End If
        If SousRep Then
            For Each RepFich In fs.GetFolder(PathRep).SubFolders
                PathRep = RepFich.shortpath
                ChercherPartout = ChercherPartout + ChercherPartout(PathRep, NomFich, SousRep)
            Next RepFich
        End If
        ChercherPartout = ListBox1.ListCount > 0
    End Function
    Je verrais bien aussi 2 Combo's, une qui permettrait de sélectionner la partition (à l'initialisation du Usf un check serait fait pour vérifier les partitions existantes) et l'autre qui permettrait de sélectionner le type de fichier (choix de l'extension via une liste déroulante) avec pour cette dernière une possibilité "autre" qui laisserait l'utilisateur introduire l'extension manuellement afin de se limiter à faire une liste d"extensions courantes

  5. #5
    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
    Par défaut
    Citation Envoyé par fring
    Mais j'ai un bug au survol de la souris, sur cette ligne
    Là, je ne comprends pas, je n'ai aucun test sur un événement mousemove dans l'userform. Seuls s'affichent les ControlTipText mais là, je ne comprendrais pas une interaction...
    Tu peux préciser les conditions ?
    Pour une liste des volumes, j'y ai pensé mais ce sera pour une prochaine version. Au départ, je voulais compter les fichiers d'un répertoire... Et puis je me suis dit...
    pour les extensions, je pourrais carrément les supprimer du test. Mais je devrai alors les ajouter dans la listbox. C'est faisable. On verra ça dans "V.0.2" s'il s'avère que mon bidule intéresse les gens
    Tu me dis pour le passage de la souris ?
    Merci
    A+

  6. #6
    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
    Citation Envoyé par ouskel'n'or Voir le message
    Tu peux préciser les conditions ?
    • Température : 8°C
    • Vent : 19km/h, orientation Ouest
    • Pression : 1010 millibars
    • Humidité : 93%


    Edit : Apparement le lien vers l'autre post n'est plus valide
    ReEdit : même si je le laisse terminer sa recherche, il bug sur cette même ligne lorqu'elle est terminée

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

Discussions similaires

  1. [VBA-E] Rafraichir le Userform pendant l'exec d'une macro
    Par amalane dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/04/2020, 15h54
  2. Naviguer dans les feuilles pendant l'execution d'une macro
    Par scons dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/04/2011, 15h33
  3. [XL-2003] Afficher un message d'attente pendant l'exécution d'une macro
    Par demongin dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/06/2009, 20h54
  4. [XL-2003] Masquer l'ouverture de fichiers pendant l'exécution d'une macro
    Par thibane dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/04/2009, 08h10
  5. Affichage d'un message d'attente pendant l'exécution d'une macro
    Par shadok6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/10/2008, 14h49

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