Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour, Dans le haut d'un module standard, tu déclares une variable comme Public L'emploi du mot Public permet à cette variable d'être valide dans n'importe quel module du projetVBA. Exemple : Public Arrêt As Boolean Dans une des procédures en exécution, lorsque les conditions sont réunies et que tu désires arrêter la procédure, tu écris ceci : Arrêt = True Exit sub Dans la procédure générale qui appelle les procédures secondaires, tu testes la valeur de la variable "arrêt" après chaque appel des procédures secondaires. Si la variable = true, tu mets fin à la procédure principale sans oublier de remettre la variable à False. If arrêt = True then Arrêt = false Exit sub end if MichD
Bonjour,
Dans le haut d'un module standard, tu déclares une variable comme Public
L'emploi du mot Public permet à cette variable d'être valide dans
n'importe quel module du projetVBA.
Exemple : Public Arrêt As Boolean
Dans une des procédures en exécution, lorsque les conditions sont
réunies et que tu désires arrêter la procédure, tu écris ceci :
Arrêt = True
Exit sub
Dans la procédure générale qui appelle les procédures secondaires, tu
testes la valeur de la variable "arrêt" après chaque appel des
procédures secondaires. Si la variable = true, tu mets fin à la
procédure principale sans oublier de remettre la variable à False.
If arrêt = True then
Arrêt = false
Exit sub
end if
Bonjour, Dans le haut d'un module standard, tu déclares une variable comme Public L'emploi du mot Public permet à cette variable d'être valide dans n'importe quel module du projetVBA. Exemple : Public Arrêt As Boolean Dans une des procédures en exécution, lorsque les conditions sont réunies et que tu désires arrêter la procédure, tu écris ceci : Arrêt = True Exit sub Dans la procédure générale qui appelle les procédures secondaires, tu testes la valeur de la variable "arrêt" après chaque appel des procédures secondaires. Si la variable = true, tu mets fin à la procédure principale sans oublier de remettre la variable à False. If arrêt = True then Arrêt = false Exit sub end if MichD
Il y a au moins une autre manière de faire. Au lieu de déclarer une variable comme Public dans le haut du module, tu ajoutes un paramètre à la procédure. Voici un petit exemple : Sub test() 'La procédure principale Dim MyVar As Boolean 'La procédure test1 à un paramètre. Si dans la procédure Test1, tu veux mettre fin à l'exécution, tu passes le paramètre MyVar à true suivi de Exit sub. Call Test1(MyVar) 'Tu peux faire ce test pour chacune des procédures. If MyVar = True Then Exit Sub Call Test2(MyVar) End Sub '------------------------------------- Sub Test1(MyVar As Boolean) MyVar = True Exit Sub MsgBox "toto" End Sub '------------------------------------- Sub Test2(MyVar As Boolean) MyVar = True Exit Sub MsgBox "toto" End Sub '------------------------------------- MichD
Le 17/03/20 à 18:51, Roland Miller a écrit :
Un grand merci. Ça fonctionne parfaitement.
Il y a au moins une autre manière de faire. Au lieu de déclarer une
variable comme Public dans le haut du module, tu ajoutes un paramètre à
la procédure. Voici un petit exemple :
Sub test() 'La procédure principale
Dim MyVar As Boolean
'La procédure test1 à un paramètre. Si dans la procédure Test1, tu veux
mettre fin à l'exécution, tu passes le paramètre MyVar à true suivi de
Exit sub.
Call Test1(MyVar)
'Tu peux faire ce test pour chacune des procédures.
If MyVar = True Then Exit Sub
Call Test2(MyVar)
End Sub
'-------------------------------------
Sub Test1(MyVar As Boolean)
MyVar = True
Exit Sub
MsgBox "toto"
End Sub
'-------------------------------------
Sub Test2(MyVar As Boolean)
MyVar = True
Exit Sub
MsgBox "toto"
End Sub
'-------------------------------------
Il y a au moins une autre manière de faire. Au lieu de déclarer une variable comme Public dans le haut du module, tu ajoutes un paramètre à la procédure. Voici un petit exemple : Sub test() 'La procédure principale Dim MyVar As Boolean 'La procédure test1 à un paramètre. Si dans la procédure Test1, tu veux mettre fin à l'exécution, tu passes le paramètre MyVar à true suivi de Exit sub. Call Test1(MyVar) 'Tu peux faire ce test pour chacune des procédures. If MyVar = True Then Exit Sub Call Test2(MyVar) End Sub '------------------------------------- Sub Test1(MyVar As Boolean) MyVar = True Exit Sub MsgBox "toto" End Sub '------------------------------------- Sub Test2(MyVar As Boolean) MyVar = True Exit Sub MsgBox "toto" End Sub '------------------------------------- MichD
Bonjour Geo, La HIC avec cette commande c'est qu'elle réinitialise toutes les variables du projetVBA, c'est-à-dire que toutes les variables de type numérique sont égales à 0 et celles contenant du texte = "" À plus d'un égard, cela est un comportement gênant! Cela ne signifie pas qu'à l'occasion on ne puisse pas avoir recours à cette commande... MichD
Le 18/03/20 à 02:51, Geo a écrit :
Bonjour
Un
End
n'aurait pas fait l'affaire ?
Bonjour Geo,
La HIC avec cette commande c'est qu'elle réinitialise toutes les
variables du projetVBA, c'est-à-dire que toutes les variables de type
numérique sont égales à 0 et celles contenant du texte = ""
À plus d'un égard, cela est un comportement gênant! Cela ne signifie pas
qu'à l'occasion on ne puisse pas avoir recours à cette commande...
Bonjour Geo, La HIC avec cette commande c'est qu'elle réinitialise toutes les variables du projetVBA, c'est-à-dire que toutes les variables de type numérique sont égales à 0 et celles contenant du texte = "" À plus d'un égard, cela est un comportement gênant! Cela ne signifie pas qu'à l'occasion on ne puisse pas avoir recours à cette commande... MichD
MichD
Le 18/03/20 à 06:19, MichD a écrit :
Le 18/03/20 à 02:51, Geo a écrit :
Bonjour Un End n'aurait pas fait l'affaire ?
Bonjour Geo, La HIC avec cette commande c'est qu'elle réinitialise toutes les variables du projetVBA, c'est-à-dire que toutes les variables de type numérique sont égales à 0 et celles contenant du texte = "" À plus d'un égard, cela est un comportement gênant! Cela ne signifie pas qu'à l'occasion on ne puisse pas avoir recours à cette commande... MichD
Pour être plus précis, la commande "End" réinitialise aussi les variables Objet tels Range, Workbook, worksheet, etc. Elle vide aussi les tableaux (Array) qui ont été définis. Remarque, c'est peut-être une solution sur un fichier ayant une composante VBA très limitée. MichD
Le 18/03/20 à 06:19, MichD a écrit :
Le 18/03/20 à 02:51, Geo a écrit :
Bonjour
Un
End
n'aurait pas fait l'affaire ?
Bonjour Geo,
La HIC avec cette commande c'est qu'elle réinitialise toutes les
variables du projetVBA, c'est-à-dire que toutes les variables de type
numérique sont égales à 0 et celles contenant du texte = ""
À plus d'un égard, cela est un comportement gênant! Cela ne signifie pas
qu'à l'occasion on ne puisse pas avoir recours à cette commande...
MichD
Pour être plus précis, la commande "End" réinitialise aussi les
variables Objet tels Range, Workbook, worksheet, etc. Elle vide aussi
les tableaux (Array) qui ont été définis.
Remarque, c'est peut-être une solution sur un fichier ayant une
composante VBA très limitée.
Bonjour Geo, La HIC avec cette commande c'est qu'elle réinitialise toutes les variables du projetVBA, c'est-à-dire que toutes les variables de type numérique sont égales à 0 et celles contenant du texte = "" À plus d'un égard, cela est un comportement gênant! Cela ne signifie pas qu'à l'occasion on ne puisse pas avoir recours à cette commande... MichD
Pour être plus précis, la commande "End" réinitialise aussi les variables Objet tels Range, Workbook, worksheet, etc. Elle vide aussi les tableaux (Array) qui ont été définis. Remarque, c'est peut-être une solution sur un fichier ayant une composante VBA très limitée. MichD
Geo
Pour être plus précis, la commande "End" réinitialise aussi les variables Objet tels Range, Workbook, worksheet, etc. Elle vide aussi les tableaux (Array) qui ont été définis.
Ok Dans la demande de Roland, il ne semble pas que ce soit un inconvénient. Si on doit continuer dans la première macro, c'est effectivement un problème. Ta solution est plus souple.
Pour être plus précis, la commande "End" réinitialise aussi les variables
Objet tels Range, Workbook, worksheet, etc. Elle vide aussi les tableaux
(Array) qui ont été définis.
Ok
Dans la demande de Roland, il ne semble pas que ce soit un
inconvénient.
Si on doit continuer dans la première macro, c'est effectivement un
problème.
Ta solution est plus souple.
Pour être plus précis, la commande "End" réinitialise aussi les variables Objet tels Range, Workbook, worksheet, etc. Elle vide aussi les tableaux (Array) qui ont été définis.
Ok Dans la demande de Roland, il ne semble pas que ce soit un inconvénient. Si on doit continuer dans la première macro, c'est effectivement un problème. Ta solution est plus souple.