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 :

croix UserForm : arreter l'execution au lieu de fermer l'UserForm


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Par défaut croix UserForm : arreter l'execution au lieu de fermer l'UserForm
    Bonjour,

    J'ai lu cette discussion.

    Je sais que le post a pris de l'âge, mais suite au commentaire de decondelite, je souhaiterais avoir plus de détails sur la façon de "renvoyer une valeur au programme principal où mettre un exit sub".

    Voici mon problème: j'ai plusieurs onglets et je travaille sur le dernier (les autres me servent d'archive). Lorsque je clique sur la croix pour fermer le userform et mettre un terme à ma macro,
    - en utilisant un "Unload Me" le userform se ferme bien mais ma macro continue jusqu'au bout
    - en utilisant un "End" la macro se termine bien (et le userform se ferme), mais c'est le premier onglet qui est sélectionné. Or je voudrais que le dernier reste actif.

    Auriez-vous une solution?

    Je vous remercie vivement!

    Cordialement

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    sans voir la procédure qui tourne durant l'affichage du userform et qui persiste après sa fermeture, c'est compliqué de te proposer la meilleure solution (y'en a quantité)

    donc, pour la seconde éventualité, si tu veux continuer à utiliser End, il te suffit, dans les procédures où tu l'utilises, de précéder l'instruction par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    On Error Resume Next ' au cas où la feuille soit masquée
        With ThisWorkbook
            .Worksheets(.Worksheets.Count).Select ' sélection de la dernière feuille du classeur hôte
        End With
    On Error GoTo 0

    dans le cadre de l'utilisation d'un Unload Me, il faudra, si tu cherches l'envoi d'une "instruction" au programme principale pour qu'il s'arrête , s'assurer que les procédures évènementielle Userform_QueryClose et Userform_Terminate n'auront pas des instructions parasitant "l'instruction", car ces deux procédures vont s'enclencher avant de revenir à ton programme principal.


    Hors de portée de ta problématique, tu indiques que toutes les feuilles sont des archives et que tu travailles sur la dernière feuille. Ce qui signifie qu'en tant qu'utilisateurs, tu agit "manuellement" sur cette dernière feuille uniquement ?
    Or, si tu te retrouves sur la première feuille en pleine exécution d'une procédure, cela signifie que cette dernière (ou une autre) sélectionne la feuille.
    Chose parfaitement inutile dans une procédure VBA, et gourmande en temps de traitement.
    Si des procédures ont des Select ou Activate .... sache qu'on peut tout faire sans aller physiquement sur la feuille (ou n'importe quel objet)

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Par défaut
    Bonjour joe,

    Merci pour ta réponse.

    En fait j'ai mis en place pour mon équipe un cahier de tâches. Une fois que tout le monde a renseigné ce cahier de tâches (le dernier onglet du classeur), on clique sur un bouton pour l'envoyer par mail. Et une fois qu'on a cliqué, un menu s'affiche (mon userform) qui liste les destinataires de ce mail (on clique ou déclique le nom de chacun des destinataires).

    Les feuilles d'archives dont je parlais correspondent aux tâches des jours passés.

    Et j'ai compris pourquoi quand j'utilise un "End" (à la fermeture du USF par croix) je revenais au premier onglet: le USF utilise et envoie des données sur un onglet "Liste_destinataires" qui est masqué et situé en tant que... premier onglet. Je l'ai masqué et surtout mis en dernier onglet et le souci est résolu.

    J'imagine qu'utiliser le Unload Me est plus élégant et moins dangereux que le End, mais vu que je n'ai plus le souci de retour au premier onglet maintenant (et que je n'ai pas bcp de temps pour faire une instruction pour arrêter le reste de la macro principale, càd l'envoi de mail), je me contenterais du End dans un premier temps.

    Merci encore joe !

    A +

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

Discussions similaires

  1. croix UserForm : arreter l'execution au lieu de fermer l'UserForm
    Par manouk dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/11/2008, 14h36
  2. [VBA-E] Désactiver la croix pour fermer un userform
    Par $p00ky dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2006, 10h51
  3. arreter l'execution du javascript
    Par elendrim dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/03/2006, 11h17
  4. Arreter l'execution d'une requete ?
    Par Olv_m dans le forum ASP
    Réponses: 2
    Dernier message: 13/10/2005, 22h57
  5. [netbeans] Arreter une éxécution
    Par Kaor dans le forum NetBeans
    Réponses: 1
    Dernier message: 11/02/2005, 15h27

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