Salut Jean P., salut le forum.
Je pense que pour éviter tout problème tu dois, dans la première ligne d’un module (pas d’une Feuille ou d’un UserForm), écrire “Option Explicit”. Cette ligne t’obligera á déclarer toutes tes variables et t’interdira les confusions.
Les variables déclarées Dim dans une procédure perdent leur portée à la fin de cette procédure. Cela veut dire que si dans plusieurs procédures différentes tu as une boucle à faire tu peux déclarer [Dim i as Byte] et utiliser [For i = 1 To …] sans qu’il n’y ait de problème tant que i se trouve dans des procédures différentes et qu’aucune d’elle fait appel à l’autre. Tu ne seras pas obligé de changé de nom de variable.
Les variable déclarées Private au niveau Module (avant toute procédure) ont une portée dans tout le module, donc dans toutes les procédures de ce module. Si, par exemple, tu as 3 procédures dans le Module 1 et tu déclares [Private i as byte]
Si dans chaque procédure tu as une boucle à faire, tu n’auras pas besoin de déclarer dans chacune d’entre elles [Dim i as Byte] puisque tu l’as déclaré au début. Tu pourras utiliser directement [For i = 1 To …]
Les variable déclarée Public au niveau Module (avant toute procédure) ont une portée dans tout le projet VBA. Tu pourras les utiliser n’importe où dans ton projet (pense quand même à les définir…). Par exemple [Public Const f As String = "ma_feuille_a_un_nom_trop_long"] te permettra de sélectionner cette feuille par [Sheets(f).Select] n’importe où dans ton projet.
Lis dans l’aide VBA la rubrique [Portée et visibilité]…
À plus,
Robert