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 :

Procédure d'annulation d'une macro [XL-2003]


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
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Par défaut Procédure d'annulation d'une macro
    Bonjour,

    J'ai créé une macro. Celle-ci commence par un remplissage d'une userform puis, dans un deuxième temps, toute une série d'actions sont effectuées.

    J'ai ajouté un bouton "annuler" dans le formulaire. Celui-ci est sencé arreter la procédure. Cependant il n'arrete que la userform et effectue le reste de la macro qui évidemment plante. Voici le code pour mon bouton annuler. pourriez-vous jetter un oeil et me dire ou ca coince?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Annuler_Click()
     
        Dim Comfirm As Single
        Confirm = MsgBox("Si vous annulez la procédure, vous perdrez toutes les données entrées." _
       & "Etes-vous sur de vouloir annuler ?", vbYesNo + vbCritical, "Abandon de la procédure")
        If Confirm = vbNo Then
                Exit Sub
            End If
    'Résultal final, pas de prise en compte des données entrées
        result = False
     
        Unload Me
    End Sub
    Peut etre que le probleme se situe lors de l'appel du userform. Je joint donc aussi la structure de la macro.

    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
     
    Sub OE()
     
    Call ClearContents
     
    'Lancement du Userform
    UserForm1.Show
    UserForm1.Hide
     
     
    Call Toit
    Call Mur
    Call Sol
    Call Vitrage
    Call Solveur
    Call Presentation
     
     
    Sheets("Présentation").Select
     
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Tu affiche l'UserForm et tu le cache dans la foulée, comment font les utilisateur pour pouvoir cliquer sur le bouton Annuler ? Il est sur une feuille ?
    Pour pouvoir annuler les procédures lancées, il te faut contrôler la valeur d'une variable entre chacune d'elles ou à l'intérieur de chacune d'elles. Une piste :
    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
     
    Private Sub BtnAnnuler_Click()
        Continuer = False
    End Sub
     
    Sub OE()
     
    Call ClearContents
     
    Continuer = True
     
    'Lancement du Userform
    UserForm1.Show
    UserForm1.Hide
     
    If Continuer = False Then Exit Sub
    Call Toit
    If Continuer = False Then Exit Sub
    Call Mur
    If Continuer = False Then Exit Sub
    Call Sol
    If Continuer = False Then Exit Sub
    Call Vitrage
    If Continuer = False Then Exit Sub
    Call Solveur
    If Continuer = False Then Exit Sub
    Call Presentation
     
     
    Sheets("Présentation").Select
     
    End Sub
    Dans un module standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public Continuer As Boolean
    Hervé.

  3. #3
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Ca ne serait pas plutot un VBYES là ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Confirm = vbYes Then
                Exit Sub
            End If
    tu souhaites bien arrêter la macro avant les call ci-dessous? dans ce cas mets les call dans ton bouton de formulaire dans la condition s'il n'arrête pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Call Toit
    Call Mur
    Call Sol
    Call Vitrage
    Call Solveur
    Call Presentation
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Par défaut
    bonjour Theze,

    J'ai un bouton sur une des page excel qui apelle ma macro OE et commence par ouvrir le userform. celui-ci possede les 2 bouton basique annuler valider. Cependant, le problème réside dans le fait que si je clique sur annuler le userform se ferme et ne prends pas en compte les données éventuellement introduites et lance la suite des opérations qui ne fonctionnement pas vu qu'elles ont besoin des valeurs du userform.

    Je souhaite donc que lorsque qu'on quitte le userform par e bouton annuler la suite de la macro OE ne soit pas éffectuée.

    Oliv-, ce n'est pas VBYes le problème (je ne peut pas expliquer pourquoi) je vais essayer de placer les call dans le userform.

    Merci beaucoup a vous deux

    Bon, j'ai testé tout de suite ce fonctionne correctement, merci Ovil-.

    Mais j'ai une autre question. Je ne sais pas si c'est faisable mais je tente quand même.

    Lorsqu’on clique sur le bouton raccourcis lié à la macro pour la première fois, lance le formulaire vide.
    Si on remplit le formulaire, et qu'on clique sur valider, la macro s'effectue normalement et propose un résultat.
    Une fois ce résultat obtenu on peut recliquer sur le bouton qui lance la macro et on se retrouve dans le même formulaire mais cette fois les valeurs introduites sont restées en mémoire.
    On peut changer ce qu'on veut et recliquer sur valider ca marche parfaitement.

    Si on clique sur annuler la macro s'arrête (super) mais les données qu'on avait introduite avant ne sont plus gardées en mémoire. Serait-il possibles qu’elles le restent?

    Merci et bon appétit.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    Il te faut boucler sur tes contrôles et stocker leurs valeurs dans une feuille que tu peux cachée et récupérer ces valeurs à l'ouverture de ta Form.

    Hervé.

  6. #6
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Theze Voir le message
    Re,

    Il te faut boucler sur tes contrôles et stocker leurs valeurs dans une feuille que tu peux cachée et récupérer ces valeurs à l'ouverture de ta Form.

    Hervé.
    Pas mieux !
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Par défaut
    ok, merci beaucoup pour votre aide.

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

Discussions similaires

  1. [AC-2010] Lancer une procédure événementielle à partir d'une macro
    Par JLDunkerque dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/02/2015, 14h14
  2. Accèder aux procédures d'une macro protégée
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/10/2008, 19h14
  3. Comment annuler les effets d'une macro sur les feuilles?
    Par jolzeviking dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/06/2008, 14h29
  4. Annuler l'action d'une macro
    Par GnarlyYoyo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/11/2007, 13h09
  5. newline dans une macro procédure
    Par Puyi dans le forum C
    Réponses: 9
    Dernier message: 19/04/2006, 16h01

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