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 :

Reprendre le code après une instruction stop


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Points : 116
    Points
    116
    Par défaut Reprendre le code après une instruction stop
    Re-bonjour,

    Est-ce qu'il y a moyen de reprendre le code après une instruction stop. Je m'explique, le code suivant fait un ensemble de vérifications. Si les tests sont négatifs alors il s'arrête pour laisser l'utilisateur corriger ces erreurs.
    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
    Public Sub check()
     
    Dim NbCol As Integer
     
    If ActiveSheet.[C9].Value < "" Then
        MsgBox ("La cellule C9 doit contenir le nom de la société")
        Stop
    End If
    If ActiveSheet.[C11].Value < "" Then
        MsgBox ("La cellule C11 doit contenir le type de prestation")
        Stop
    End If
    'Contrôle sur le nombre de colonnes
    NbCol = Range("A15").End(xlToRight).Column
    If NbCol > 8 Then
        MsgBox ("Le format de ce reporting n'est pas bon! Veuillez revoir le nombre de colonnes.")
        Stop
    End If
    End Sub
    Est-ce que depuis Excel (et non l'environnement VBA), on peut faire repartir le code une fois les corrections effectuées? Sinon je pensais à une macro événementielle du type double click mais c'est la syntaxe stop qui pose problème...Est-ce que qqn en connaît une autre?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 265
    Points
    34 265
    Par défaut
    salut,
    je serais passé sur du exit sub à la place du stop, mais suite à quoi lances-tu check ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre habitué Avatar de scully2501
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 148
    Points
    148
    Par défaut
    oui le mieux est de mettre exit sub et que l'utilisateur reface ok apres avoir corrigé l'erreur
    C'est tout un art de savoir programmer. Passant des heures à chercher une solution avec plaisir et joie.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Points : 116
    Points
    116
    Par défaut
    check est à l'intérieur d'une autre macro, je peux donc faire une boucle. Mais je ne vois pas comment mon code va arrêter de tourner pour que les corrections se fassent, et clicker sur OK pour faire repartir le code.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 265
    Points
    34 265
    Par défaut
    et la macro appelante de check, tu la lances comment ?... quel est le premier évèenement qui lance ton code ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Points : 116
    Points
    116
    Par défaut
    Pour l'instant c'est à la "main" mais sinon il y a un bouton qui est affecté.

  7. #7
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu pourrais faire ça depuis un userform dont la propriété showModal serait à False.
    Pour tester, c'est simple, tu places ce code dans un userform
    [CODE]
    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 UserForm_Activate()
    'Laisse le temps à l'userform de s'afficher
    Application.Wait (Now() + TimeValue("00:00:01"))
    Dim VerifTerminee As Boolean
        Do
            'Ton code de vérif
            DoEvents
            'Do While Marche 'Arrête la macro (!)
                'DoEvents
            'Loop
            'VerifTerminee = Condition requises pour sortir de la vérif
        Loop While Not VerifTerminee
    End Sub
    La macro ci-dessus simule la vérification. Si showmodal de l'userform = False alors tu peux accéder à ta feuille de calculs.
    Par contre, il semble que la vérification se poursuit pendant la saisie. A vérifier en situation.

    J'ai testé en ajoutant un bouton faisant passer le boolean Marche (déclaré en public) à True afin d'empêcher la vérification de se poursuivre pendant la saisie (boucle mise en remarque) mais ça arrête complètement la macro.
    Je n'ai rien de mieux

  8. #8
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Points : 116
    Points
    116
    Par défaut
    Merci Ouskel c'est déjà beaucoup! Je vais tester ça et voir si je peux y remédier. Pour l'instant je vais laisser le post en suspens car j'ai d'autres impératifs. Mais je donnearai des nouvelles, promis.

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

Discussions similaires

  1. [XL-2003] Reprendre le code après un form.show sans fermer le form
    Par -Naek- dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/06/2009, 00h53
  2. Changer le code apres une migration HF ->mysql
    Par phebus29 dans le forum WinDev
    Réponses: 1
    Dernier message: 23/06/2006, 19h20
  3. Réponses: 15
    Dernier message: 22/04/2006, 14h59
  4. Réponses: 13
    Dernier message: 27/12/2005, 09h17
  5. Réponses: 4
    Dernier message: 15/12/2005, 18h28

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