Bonjour et bonne année...
Dans mon appli Excel, chaque module ou macro commence par quelque chose
comme :
Dim S1 as Worksheet
Dim S2 as Worksheet
Set S1 = Application.Worksheets("feuil1")
Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois.
Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de
manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et
à être sur (juste pour la beauté de la chose et la facilité de debuggage) que
S1, S2, etc représentent toujours la même feuille?
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
michdenis
Bonjour Pantagruel92,
Tu utilises un module standard que tu renommes avec un nom significatif en rapport avec sa fonction.
Dans le haut de ce module du déclare tes variables comme Public Exemple pour les variables objet.
Public Rg as Range Public F as Worksheet
Et pour les instancier, toujours dans le même module, tu crées une procédure à cet effet qui sera exécutée à l'ouverture du classeur en utilisant l'événement "Private Sub Workbook_Activate()" situé dans le ThisWorkbook.
Sub InstantiationDesVariables() Set Rg = Worksheets("Feuil1").Range("A5:G10") 'Il est préférable d'utiliser la propriété Name de l'objet VBA Set Rg = Feuil1.Range("A5:G10")
Set F = Feuil3 End Sub
Et dans le ThisWorkbook de Ton Classeur '--------------- Private Sub Workbook_Activate() InstantiationDesVariables End Sub
'------------------ Private Sub Workbook_Deactivate() Set Rg = Noghing Set F = Nothing End Sub '------------------
Pour les variables de type String, integer, double...l'utilisation de variable Public peut devenir problématique si plus d'un classeur utilise le même nom d'une même variable déclarée Public....
Le principe de base avec les variables est de limitée leur champ d'action le plus possible d'abord au niveau de la procédure, du module où elle se trouve et finalement "Public".
Ce n'est pas une bonne idée de déclarer des variables "Public" ou au niveau du module seulement pour sauver quelques lignes de code en début de procédure !
Salutations!
"Pantagruel92" a écrit dans le message de news:
Bonjour et bonne année... Dans mon appli Excel, chaque module ou macro commence par quelque chose comme :
Dim S1 as Worksheet Dim S2 as Worksheet Set S1 = Application.Worksheets("feuil1") Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois. Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et à être sur (juste pour la beauté de la chose et la facilité de debuggage) que S1, S2, etc représentent toujours la même feuille?
Merci de m'aider. Jacques
Bonjour Pantagruel92,
Tu utilises un module standard que tu renommes avec un nom significatif en rapport
avec sa fonction.
Dans le haut de ce module du déclare tes variables comme Public
Exemple pour les variables objet.
Public Rg as Range
Public F as Worksheet
Et pour les instancier, toujours dans le même module, tu crées une procédure
à cet effet qui sera exécutée à l'ouverture du classeur en utilisant l'événement
"Private Sub Workbook_Activate()" situé dans le ThisWorkbook.
Sub InstantiationDesVariables()
Set Rg = Worksheets("Feuil1").Range("A5:G10")
'Il est préférable d'utiliser la propriété Name de l'objet VBA
Set Rg = Feuil1.Range("A5:G10")
Set F = Feuil3
End Sub
Et dans le ThisWorkbook de Ton Classeur
'---------------
Private Sub Workbook_Activate()
InstantiationDesVariables
End Sub
'------------------
Private Sub Workbook_Deactivate()
Set Rg = Noghing
Set F = Nothing
End Sub
'------------------
Pour les variables de type String, integer, double...l'utilisation de variable Public peut devenir
problématique si plus d'un classeur utilise le même nom d'une même variable déclarée Public....
Le principe de base avec les variables est de limitée leur champ d'action le plus possible
d'abord au niveau de la procédure, du module où elle se trouve et finalement "Public".
Ce n'est pas une bonne idée de déclarer des variables "Public" ou au niveau du module
seulement pour sauver quelques lignes de code en début de procédure !
Salutations!
"Pantagruel92" <Pantagruel92@discussions.microsoft.com> a écrit dans le message de news:
21BD5E34-8F38-42CD-934F-3258F265672D@microsoft.com...
Bonjour et bonne année...
Dans mon appli Excel, chaque module ou macro commence par quelque chose
comme :
Dim S1 as Worksheet
Dim S2 as Worksheet
Set S1 = Application.Worksheets("feuil1")
Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois.
Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de
manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et
à être sur (juste pour la beauté de la chose et la facilité de debuggage) que
S1, S2, etc représentent toujours la même feuille?
Tu utilises un module standard que tu renommes avec un nom significatif en rapport avec sa fonction.
Dans le haut de ce module du déclare tes variables comme Public Exemple pour les variables objet.
Public Rg as Range Public F as Worksheet
Et pour les instancier, toujours dans le même module, tu crées une procédure à cet effet qui sera exécutée à l'ouverture du classeur en utilisant l'événement "Private Sub Workbook_Activate()" situé dans le ThisWorkbook.
Sub InstantiationDesVariables() Set Rg = Worksheets("Feuil1").Range("A5:G10") 'Il est préférable d'utiliser la propriété Name de l'objet VBA Set Rg = Feuil1.Range("A5:G10")
Set F = Feuil3 End Sub
Et dans le ThisWorkbook de Ton Classeur '--------------- Private Sub Workbook_Activate() InstantiationDesVariables End Sub
'------------------ Private Sub Workbook_Deactivate() Set Rg = Noghing Set F = Nothing End Sub '------------------
Pour les variables de type String, integer, double...l'utilisation de variable Public peut devenir problématique si plus d'un classeur utilise le même nom d'une même variable déclarée Public....
Le principe de base avec les variables est de limitée leur champ d'action le plus possible d'abord au niveau de la procédure, du module où elle se trouve et finalement "Public".
Ce n'est pas une bonne idée de déclarer des variables "Public" ou au niveau du module seulement pour sauver quelques lignes de code en début de procédure !
Salutations!
"Pantagruel92" a écrit dans le message de news:
Bonjour et bonne année... Dans mon appli Excel, chaque module ou macro commence par quelque chose comme :
Dim S1 as Worksheet Dim S2 as Worksheet Set S1 = Application.Worksheets("feuil1") Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois. Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et à être sur (juste pour la beauté de la chose et la facilité de debuggage) que S1, S2, etc représentent toujours la même feuille?
Merci de m'aider. Jacques
Pantagruel92
Merci, Michdenis, ça c'est une réponse détaillée! A partir du moment où j'aurai instancié ces variables objet publiques (F et Rg dans ton exemple), je pourrais les nommer dans chaque Sub de chaque module, et dans chaque macro de l'application : elles garderont leur valeur (tant que je n'aurai pas exécuté une instruction Set Rg =...., bien sûr). C'est bien ça?
Merci encore.
Bonjour Pantagruel92,
Tu utilises un module standard que tu renommes avec un nom significatif en rapport avec sa fonction.
Dans le haut de ce module du déclare tes variables comme Public Exemple pour les variables objet.
Public Rg as Range Public F as Worksheet
Et pour les instancier, toujours dans le même module, tu crées une procédure à cet effet qui sera exécutée à l'ouverture du classeur en utilisant l'événement "Private Sub Workbook_Activate()" situé dans le ThisWorkbook.
Sub InstantiationDesVariables() Set Rg = Worksheets("Feuil1").Range("A5:G10") 'Il est préférable d'utiliser la propriété Name de l'objet VBA Set Rg = Feuil1.Range("A5:G10")
Set F = Feuil3 End Sub
Et dans le ThisWorkbook de Ton Classeur '--------------- Private Sub Workbook_Activate() InstantiationDesVariables End Sub
'------------------ Private Sub Workbook_Deactivate() Set Rg = Noghing Set F = Nothing End Sub '------------------
Pour les variables de type String, integer, double...l'utilisation de variable Public peut devenir problématique si plus d'un classeur utilise le même nom d'une même variable déclarée Public....
Le principe de base avec les variables est de limitée leur champ d'action le plus possible d'abord au niveau de la procédure, du module où elle se trouve et finalement "Public".
Ce n'est pas une bonne idée de déclarer des variables "Public" ou au niveau du module seulement pour sauver quelques lignes de code en début de procédure !
Salutations!
"Pantagruel92" a écrit dans le message de news:
Bonjour et bonne année... Dans mon appli Excel, chaque module ou macro commence par quelque chose comme :
Dim S1 as Worksheet Dim S2 as Worksheet Set S1 = Application.Worksheets("feuil1") Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois. Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et à être sur (juste pour la beauté de la chose et la facilité de debuggage) que S1, S2, etc représentent toujours la même feuille?
Merci de m'aider. Jacques
Merci, Michdenis, ça c'est une réponse détaillée!
A partir du moment où j'aurai instancié ces variables objet publiques (F et
Rg dans ton exemple), je pourrais les nommer dans chaque Sub de chaque
module, et dans chaque macro de l'application : elles garderont leur valeur
(tant que je n'aurai pas exécuté une instruction Set Rg =...., bien sûr).
C'est bien ça?
Merci encore.
Bonjour Pantagruel92,
Tu utilises un module standard que tu renommes avec un nom significatif en rapport
avec sa fonction.
Dans le haut de ce module du déclare tes variables comme Public
Exemple pour les variables objet.
Public Rg as Range
Public F as Worksheet
Et pour les instancier, toujours dans le même module, tu crées une procédure
à cet effet qui sera exécutée à l'ouverture du classeur en utilisant l'événement
"Private Sub Workbook_Activate()" situé dans le ThisWorkbook.
Sub InstantiationDesVariables()
Set Rg = Worksheets("Feuil1").Range("A5:G10")
'Il est préférable d'utiliser la propriété Name de l'objet VBA
Set Rg = Feuil1.Range("A5:G10")
Set F = Feuil3
End Sub
Et dans le ThisWorkbook de Ton Classeur
'---------------
Private Sub Workbook_Activate()
InstantiationDesVariables
End Sub
'------------------
Private Sub Workbook_Deactivate()
Set Rg = Noghing
Set F = Nothing
End Sub
'------------------
Pour les variables de type String, integer, double...l'utilisation de variable Public peut devenir
problématique si plus d'un classeur utilise le même nom d'une même variable déclarée Public....
Le principe de base avec les variables est de limitée leur champ d'action le plus possible
d'abord au niveau de la procédure, du module où elle se trouve et finalement "Public".
Ce n'est pas une bonne idée de déclarer des variables "Public" ou au niveau du module
seulement pour sauver quelques lignes de code en début de procédure !
Salutations!
"Pantagruel92" <Pantagruel92@discussions.microsoft.com> a écrit dans le message de news:
21BD5E34-8F38-42CD-934F-3258F265672D@microsoft.com...
Bonjour et bonne année...
Dans mon appli Excel, chaque module ou macro commence par quelque chose
comme :
Dim S1 as Worksheet
Dim S2 as Worksheet
Set S1 = Application.Worksheets("feuil1")
Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois.
Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de
manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et
à être sur (juste pour la beauté de la chose et la facilité de debuggage) que
S1, S2, etc représentent toujours la même feuille?
Merci, Michdenis, ça c'est une réponse détaillée! A partir du moment où j'aurai instancié ces variables objet publiques (F et Rg dans ton exemple), je pourrais les nommer dans chaque Sub de chaque module, et dans chaque macro de l'application : elles garderont leur valeur (tant que je n'aurai pas exécuté une instruction Set Rg =...., bien sûr). C'est bien ça?
Merci encore.
Bonjour Pantagruel92,
Tu utilises un module standard que tu renommes avec un nom significatif en rapport avec sa fonction.
Dans le haut de ce module du déclare tes variables comme Public Exemple pour les variables objet.
Public Rg as Range Public F as Worksheet
Et pour les instancier, toujours dans le même module, tu crées une procédure à cet effet qui sera exécutée à l'ouverture du classeur en utilisant l'événement "Private Sub Workbook_Activate()" situé dans le ThisWorkbook.
Sub InstantiationDesVariables() Set Rg = Worksheets("Feuil1").Range("A5:G10") 'Il est préférable d'utiliser la propriété Name de l'objet VBA Set Rg = Feuil1.Range("A5:G10")
Set F = Feuil3 End Sub
Et dans le ThisWorkbook de Ton Classeur '--------------- Private Sub Workbook_Activate() InstantiationDesVariables End Sub
'------------------ Private Sub Workbook_Deactivate() Set Rg = Noghing Set F = Nothing End Sub '------------------
Pour les variables de type String, integer, double...l'utilisation de variable Public peut devenir problématique si plus d'un classeur utilise le même nom d'une même variable déclarée Public....
Le principe de base avec les variables est de limitée leur champ d'action le plus possible d'abord au niveau de la procédure, du module où elle se trouve et finalement "Public".
Ce n'est pas une bonne idée de déclarer des variables "Public" ou au niveau du module seulement pour sauver quelques lignes de code en début de procédure !
Salutations!
"Pantagruel92" a écrit dans le message de news:
Bonjour et bonne année... Dans mon appli Excel, chaque module ou macro commence par quelque chose comme :
Dim S1 as Worksheet Dim S2 as Worksheet Set S1 = Application.Worksheets("feuil1") Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois. Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et à être sur (juste pour la beauté de la chose et la facilité de debuggage) que S1, S2, etc représentent toujours la même feuille?
Merci de m'aider. Jacques
michdenis
Bonjour Pantagruel92,
Si tu appliques mon exemple, tu n'auras pas besoin de déclarer tes variables au niveau de chacune des procédures. Une fois c'est assez.
Cependant, ce que j'exprimais est qu'il ne faut pas abuser de cela (déclaration des variables au niveau du module ou comme "Public) si le but recherché en est strictement un d'économie de quelques lignes de code pour déclarer les variables localement (au niveau de la procédure)
Quand les applications requiert des codes plus élaborés, il devient alors difficile d'effectuer le suivi de tous ces variables dans les diverses procédures. La lecture du code est plus difficile, le temps de "debuggage" est plus long ....et l'espace mémoire utilisé est plus important. Alors, aussi bien que leur présence soit justifiée.
Salutations!
"Pantagruel92" a écrit dans le message de news:
Merci, Michdenis, ça c'est une réponse détaillée! A partir du moment où j'aurai instancié ces variables objet publiques (F et Rg dans ton exemple), je pourrais les nommer dans chaque Sub de chaque module, et dans chaque macro de l'application : elles garderont leur valeur (tant que je n'aurai pas exécuté une instruction Set Rg =...., bien sûr). C'est bien ça?
Merci encore.
Bonjour Pantagruel92,
Tu utilises un module standard que tu renommes avec un nom significatif en rapport avec sa fonction.
Dans le haut de ce module du déclare tes variables comme Public Exemple pour les variables objet.
Public Rg as Range Public F as Worksheet
Et pour les instancier, toujours dans le même module, tu crées une procédure à cet effet qui sera exécutée à l'ouverture du classeur en utilisant l'événement "Private Sub Workbook_Activate()" situé dans le ThisWorkbook.
Sub InstantiationDesVariables() Set Rg = Worksheets("Feuil1").Range("A5:G10") 'Il est préférable d'utiliser la propriété Name de l'objet VBA Set Rg = Feuil1.Range("A5:G10")
Set F = Feuil3 End Sub
Et dans le ThisWorkbook de Ton Classeur '--------------- Private Sub Workbook_Activate() InstantiationDesVariables End Sub
'------------------ Private Sub Workbook_Deactivate() Set Rg = Noghing Set F = Nothing End Sub '------------------
Pour les variables de type String, integer, double...l'utilisation de variable Public peut devenir problématique si plus d'un classeur utilise le même nom d'une même variable déclarée Public....
Le principe de base avec les variables est de limitée leur champ d'action le plus possible d'abord au niveau de la procédure, du module où elle se trouve et finalement "Public".
Ce n'est pas une bonne idée de déclarer des variables "Public" ou au niveau du module seulement pour sauver quelques lignes de code en début de procédure !
Salutations!
"Pantagruel92" a écrit dans le message de news:
Bonjour et bonne année... Dans mon appli Excel, chaque module ou macro commence par quelque chose comme :
Dim S1 as Worksheet Dim S2 as Worksheet Set S1 = Application.Worksheets("feuil1") Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois. Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et à être sur (juste pour la beauté de la chose et la facilité de debuggage) que S1, S2, etc représentent toujours la même feuille?
Merci de m'aider. Jacques
Bonjour Pantagruel92,
Si tu appliques mon exemple, tu n'auras pas besoin de déclarer tes
variables au niveau de chacune des procédures. Une fois c'est assez.
Cependant, ce que j'exprimais est qu'il ne faut pas abuser de cela
(déclaration des variables au niveau du module ou comme "Public)
si le but recherché en est strictement un d'économie de quelques
lignes de code pour déclarer les variables localement (au niveau
de la procédure)
Quand les applications requiert des codes plus élaborés, il devient alors
difficile d'effectuer le suivi de tous ces variables dans les diverses
procédures. La lecture du code est plus difficile, le temps de "debuggage"
est plus long ....et l'espace mémoire utilisé est plus important.
Alors, aussi bien que leur présence soit justifiée.
Salutations!
"Pantagruel92" <Pantagruel92@discussions.microsoft.com> a écrit dans le message de news:
65909227-8819-411D-A0C3-BCA3ED0F5A44@microsoft.com...
Merci, Michdenis, ça c'est une réponse détaillée!
A partir du moment où j'aurai instancié ces variables objet publiques (F et
Rg dans ton exemple), je pourrais les nommer dans chaque Sub de chaque
module, et dans chaque macro de l'application : elles garderont leur valeur
(tant que je n'aurai pas exécuté une instruction Set Rg =...., bien sûr).
C'est bien ça?
Merci encore.
Bonjour Pantagruel92,
Tu utilises un module standard que tu renommes avec un nom significatif en rapport
avec sa fonction.
Dans le haut de ce module du déclare tes variables comme Public
Exemple pour les variables objet.
Public Rg as Range
Public F as Worksheet
Et pour les instancier, toujours dans le même module, tu crées une procédure
à cet effet qui sera exécutée à l'ouverture du classeur en utilisant l'événement
"Private Sub Workbook_Activate()" situé dans le ThisWorkbook.
Sub InstantiationDesVariables()
Set Rg = Worksheets("Feuil1").Range("A5:G10")
'Il est préférable d'utiliser la propriété Name de l'objet VBA
Set Rg = Feuil1.Range("A5:G10")
Set F = Feuil3
End Sub
Et dans le ThisWorkbook de Ton Classeur
'---------------
Private Sub Workbook_Activate()
InstantiationDesVariables
End Sub
'------------------
Private Sub Workbook_Deactivate()
Set Rg = Noghing
Set F = Nothing
End Sub
'------------------
Pour les variables de type String, integer, double...l'utilisation de variable Public peut devenir
problématique si plus d'un classeur utilise le même nom d'une même variable déclarée Public....
Le principe de base avec les variables est de limitée leur champ d'action le plus possible
d'abord au niveau de la procédure, du module où elle se trouve et finalement "Public".
Ce n'est pas une bonne idée de déclarer des variables "Public" ou au niveau du module
seulement pour sauver quelques lignes de code en début de procédure !
Salutations!
"Pantagruel92" <Pantagruel92@discussions.microsoft.com> a écrit dans le message de news:
21BD5E34-8F38-42CD-934F-3258F265672D@microsoft.com...
Bonjour et bonne année...
Dans mon appli Excel, chaque module ou macro commence par quelque chose
comme :
Dim S1 as Worksheet
Dim S2 as Worksheet
Set S1 = Application.Worksheets("feuil1")
Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois.
Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de
manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et
à être sur (juste pour la beauté de la chose et la facilité de debuggage) que
S1, S2, etc représentent toujours la même feuille?
Si tu appliques mon exemple, tu n'auras pas besoin de déclarer tes variables au niveau de chacune des procédures. Une fois c'est assez.
Cependant, ce que j'exprimais est qu'il ne faut pas abuser de cela (déclaration des variables au niveau du module ou comme "Public) si le but recherché en est strictement un d'économie de quelques lignes de code pour déclarer les variables localement (au niveau de la procédure)
Quand les applications requiert des codes plus élaborés, il devient alors difficile d'effectuer le suivi de tous ces variables dans les diverses procédures. La lecture du code est plus difficile, le temps de "debuggage" est plus long ....et l'espace mémoire utilisé est plus important. Alors, aussi bien que leur présence soit justifiée.
Salutations!
"Pantagruel92" a écrit dans le message de news:
Merci, Michdenis, ça c'est une réponse détaillée! A partir du moment où j'aurai instancié ces variables objet publiques (F et Rg dans ton exemple), je pourrais les nommer dans chaque Sub de chaque module, et dans chaque macro de l'application : elles garderont leur valeur (tant que je n'aurai pas exécuté une instruction Set Rg =...., bien sûr). C'est bien ça?
Merci encore.
Bonjour Pantagruel92,
Tu utilises un module standard que tu renommes avec un nom significatif en rapport avec sa fonction.
Dans le haut de ce module du déclare tes variables comme Public Exemple pour les variables objet.
Public Rg as Range Public F as Worksheet
Et pour les instancier, toujours dans le même module, tu crées une procédure à cet effet qui sera exécutée à l'ouverture du classeur en utilisant l'événement "Private Sub Workbook_Activate()" situé dans le ThisWorkbook.
Sub InstantiationDesVariables() Set Rg = Worksheets("Feuil1").Range("A5:G10") 'Il est préférable d'utiliser la propriété Name de l'objet VBA Set Rg = Feuil1.Range("A5:G10")
Set F = Feuil3 End Sub
Et dans le ThisWorkbook de Ton Classeur '--------------- Private Sub Workbook_Activate() InstantiationDesVariables End Sub
'------------------ Private Sub Workbook_Deactivate() Set Rg = Noghing Set F = Nothing End Sub '------------------
Pour les variables de type String, integer, double...l'utilisation de variable Public peut devenir problématique si plus d'un classeur utilise le même nom d'une même variable déclarée Public....
Le principe de base avec les variables est de limitée leur champ d'action le plus possible d'abord au niveau de la procédure, du module où elle se trouve et finalement "Public".
Ce n'est pas une bonne idée de déclarer des variables "Public" ou au niveau du module seulement pour sauver quelques lignes de code en début de procédure !
Salutations!
"Pantagruel92" a écrit dans le message de news:
Bonjour et bonne année... Dans mon appli Excel, chaque module ou macro commence par quelque chose comme :
Dim S1 as Worksheet Dim S2 as Worksheet Set S1 = Application.Worksheets("feuil1") Set S2 = Application.Worksheets("feuil2")
En réalité, il y en a 5 ou 6 à chaque fois. Comment et où déclarer ces S1, S2, ... et leur valeur comme Public, de manière à ne pas être obligé de le faire pour chaque Sub ou chaque Macro, et à être sur (juste pour la beauté de la chose et la facilité de debuggage) que S1, S2, etc représentent toujours la même feuille?