Execution procedure sous condition de la précedente

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

iStarOSX

XLDnaute Junior
Bonjour

Voila cela fait un moment que je cherche une solution a ce problème.

Très souvent dans mes macros, en début de procédure, j'écris du code qui sert a faire des vérifications sur des données. Lorsqu'une donné n'est pas acceptable, l’exécution de la macro est arrêtée.

Or souvent, ce code de vérification est le même pour plusieurs macros d'un même projet.

J'aimerai pouvoir écrire une procédure "Teste" en dehors de toutes les autres procédure devant faire appel a cette macro "Teste" et que si elle échoue, la macro faisant appel ne soit pas exécutée.

Mais je ne vois pas comment faire !

J'ai tenté ceci :
Code:
Sub Verif_Liste_Plans()

Dim VerifListePlan As Boolean


'---------------------------------------------------------
'Vérifie les données :
'---------------------------------------------------------
   If Sheets("NumPlanMoteur").Range("AI3") = 0 Then
       Message = MsgBox("Spécialité : Sélectionner une spécialité !", vbOKOnly, "Erreur : Spécialité")
       If Message = vbOKOnly Then Unload Message
        Exit Sub
   End If

   If Sheets("Liste Plans").Range("D25") > Sheets("NumPlanMoteur").Range("AF25") Then
     
      If Sheets("NumPlanMoteur").Range("AF2") = 1 Or Sheets("NumPlanMoteur").Range("AF2") = 3 Then
        
        Message = MsgBox("Vous avez atteint la limite du mode de nuémrotation de plan !" & Chr(10) & _
    " " & Chr(10) & _
    "Vous ne pouvez pas avoir plus de 19 plans pour cette Spécialité." & Chr(10) & _
    "Choisissez la spécialité AUTRE, pour continuer votre liste de plans" & Chr(10) & _
    " ", vbOKOnly, "Limitation de la numérotation de plan :")
        If Message = vbOKOnly Then Unload Message
        Exit Sub
        
        
    Else
    
        Message = MsgBox("Vous avez atteint la limite du mode de numérotation de plan !" & Chr(10) & _
    " " & Chr(10) & _
    "Vous ne pouvez pas avoir plus de 99 plans pour cette Spécialité." & Chr(10) & _
    "Choisissez la spécialité AUTRE, pour continuer votre liste de plans" & Chr(10) & _
    " ", vbOKOnly, "Limitation de la numérotation de plan :")
        If Message = vbOKOnly Then Unload Message
        Exit Sub
          
    End If
    End If
      


VerifListePlan = True

End Sub


Puis en début des macros faisant appel a la macro de teste :

Code:
Verif_Liste_Plans 'exection de la macro teste

If VerifListePlan = True Then 'si la variable "VerifListePlan" est vrai execution du reste da la macro. si non fin de la macro.

Mais cela ne fonctionne pas.

Si un spécialiste du VBA pouvait m'aider, merci.
 
Re : Execution procedure sous condition de la précedente

Bonjour,
Bonjour PierreJean🙂

un exemple ci-dessous avec une fonction :
Code:
Option Explicit
Sub mamacro()
MsgBox verif
End Sub

Function verif() As Boolean
verif = Range("A1").Value = "x"
End Function

Espérant que tu puisses l'adapter à ton projet.

bon après midi
@+
 
Re : Execution procedure sous condition de la précedente

Bonjour Pierre Jean

Bonjour Pierrot.

Merci a vous deux d'avoir pris le temps de me répondre.

J'ai tenté d'utiliser vos réponses.

Pour la réponse de pierre Jean, cela ne change pas le fonctionnement actuel de mes macros.

La réponse de Pierrot fonctionne, car elle stock la valeur de la variable dans une cellule. Mais j'aurai aimé faire cela sans allé écrire dans une cellule.

Il n'y a pas de solution pour conserver la valeur de ma variable en mémoire ?
 
Re : Execution procedure sous condition de la précedente

Re,

La réponse de Pierrot fonctionne, car elle stock la valeur de la variable dans une cellule. Mais j'aurai aimé faire cela sans allé écrire dans une cellule.

bah... en l'état vérifie le contenu d'une cellule mais rien ne t'empêche de vérififier la valeur d'une variable....

Il n'y a pas de solution pour conserver la valeur de ma variable en mémoire ?

peut être la déclarer "public" en tête de module....
 
Re : Execution procedure sous condition de la précedente

Re

Salut Pierrot 😀

J'avais précisé ne pas avoir vérifié et évidemment j'aurais du !!

Une fonction doit renvoyer un résultat
Il faut t'assurer que ton ex sub devenue fonction renvoie False s'il y a un souci non résolu et True dans le cas contraire
Par exemple avant Exit sub l’état de VerifListePlan doit être specifié
 
Re : Execution procedure sous condition de la précedente

Re
Par exemple avant Exit sub l’état de VerifListePlan doit être specifié

C'est ce qui est fait a la fin de mon code Sub Verif_Liste_Plans() que j'ai modifié en
Function Verif_Liste_Plans()

Code:
VerifListePlan = True

et je rappel la valeur de la variable dans la macro qui lance la procedure de verification :

Code:
If VerifListePlan = True Then

Si la valeur et "TRUE" alors le reste de la macro s’exécute, si non elle va a la fin du code.

Sauf que cela ne fonctionne pas !
 
Re : Execution procedure sous condition de la précedente

Re

Qu'est-ce qui ne fonctionne pas ?
As-tu modifié dans la nouvelle fonction:
Exit Sub en Exit function
Et surtout juste avant VerifListePlan = false (eventuellement true mais je ne peux pas en decider c'est a toi de voir !!)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
489
Réponses
7
Affichages
108
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
258
Retour