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 :

stopper une procédure en cours


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Par défaut stopper une procédure en cours
    Bonjour

    J'ai le code suivant mais je n arrive pas à stopper la procédure une fois lancée
    j ai créé un bouton stop mais je n ai pas la possibilité de l'actionner
    merci pour votre aide
    cordialement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub Bouton16_Clic()
    sstop = True
     
    End Sub
    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
     
    Private Sub CommandButton3_Click()
    Dim f As Worksheet, ln%, lgn%, n%, i%, a%, j%
        Set f = Worksheets("Feuil2")
        sstop = False
        f.Range("A1").CurrentRegion.Offset(2).Clear
        lgn = 3
        Application.ScreenUpdating = False
        With Me
            For ln = 3 To .Range("A" & .Rows.Count).End(xlUp).Row
                 a = Year(.Range("D" & ln)): n = Year(.Range("G" & ln)) - a
                .Range("A" & ln & ":AE" & ln).Copy f.Range("A" & lgn & ":A" & lgn + n)
                For i = 0 To n
                f.Range("O" & lgn + i) = a + i
                Next i
                lgn = lgn + n + 1
                    DoEvents
                    If sstop Then
                    MsgBox "arrêt": Exit Sub
                    End If
            Next ln
        End With
        f.Activate
     
    End Sub

  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,

    quel est le but exact ?

    car tu as une variable au niveau du module : OK
    ton bouton, au clic, met cette variable en position où on pourra détecter l'arrêt : OK
    dans la procédure que tu nous montres, tu commences d'emblée par remettre la variable à False ... donc jamais elle ne pourra stopper quoi que ce soit


    et au passage, le bouton n'est pas la bonne solution. Ta variable doit "détecter" dans la procédure la condition qui la fera changer de valeur pour devenir un vrai moteur d'arrêt.

    Un exemple parfaitement futile (pas besoin de variable Stop pour faire ça), mais juste pour comprendre ce que j'explique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test_Toto()
    Dim LaChaine As String, LaCellule As Range
    Dim Sstop As Boolean
    LaChaine = "CeQueJeCherche"
     
    Set LaCellule = Feuil1.UsedRange.Columns(1).Find(LaChaine)
    If LaCellule Is Nothing Then Sstop = True
    If Sstop Then Exit Sub
     
    MsgBox "On a trouvé quelque chose"
     
    End Sub

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Par défaut
    merci pour votre réponse
    je souhaite simplement me donner la possibilité d'arrêter la procédure si besoin...

    cordialement

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    tu commences d'emblée par remettre la variable à False ... donc jamais elle ne pourra stopper quoi que ce soit
    D'autant plus que rien n'indique que tu l'aies déclarée globale ou publique.

    Mais il me semble que tu avais démarré cette question ailleurs. Pourquoi ne pas avoir continué au même endroit ? Le helper se serait fait un plaisir de répondre.
    eric

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    J'observe que tu as deux boucles imbriquées et qu'aucune arrêt n'est prévue dans celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 0 To n
         f.Range("O" & lgn + i) = a + i
      Next i

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = True

Discussions similaires

  1. [XL-2007] Stopper une macro en cours d'execution avec un boutton
    Par pastis.vi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/07/2013, 15h20
  2. Stopper une procédure dans le code
    Par Sylv3D dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/10/2011, 10h11
  3. [AC-2007] Stopper une procédure Automation
    Par lelensois16 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/08/2011, 18h35
  4. comment faire pour stopper une action en cours ?
    Par zabdaniel dans le forum C#
    Réponses: 1
    Dernier message: 15/01/2009, 16h07
  5. Stopper une fonction en cours d'execution
    Par eponyme dans le forum C
    Réponses: 14
    Dernier message: 10/01/2008, 09h43

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