Perte variable entre module et formulaire
BOnjour le forum
dans le fichier en annexe, lorsque l'on clique sur le bouton Recherche Secteur, je déclare des variables qui me permettent de savoir de quel module je viens, puis je lance le formulaire FA :
Option Explicit
Public Ws As Worksheet
Public WsBase As Worksheet
Public WsListes As Worksheet
Public ligne As Integer
Public NumLigne As Integer
Public modifs As Boolean
Public resecteur As Boolean
Public suivant As Boolean
Public precedent As Boolean
Public Ctrl As Control
Sub RechercheSecteur()
'Ouverture la fenêtre contenant le formulaire pour recherche par secteur
FA.FrmSecteur.Visible = True 'Affiche Box secteur
FA.FrmFA.Visible = False 'Masque Box FA
FA.cmdCréer.Visible = False
FA.CmdModifier.Visible = True
FA.CmdQualité.Visible = False
modifs = True
resecteur = True
suivant = False
precedent = False
FA.Show
End SubA l'arrivée dans ce formulaire, dans UserForm_Initialize(), j'ai déjà perdu mes variables ....
Private Sub UserForm_Initialize()
Dim i As Integer
Dim Plage As Range
'ActiveWorkbook.Save 'Sauvegarde avant ouverture formulaire
Box3.Value = Format(Date, "dd/mm/yyyy")
Set WsBase = Sheets("Base")
'Remplissage Box4 = Secteurs
Set Ws = Sheets("Listes")
If resecteur = True Then
With Me.Box4 'Box secteur
'For i = 10 To Ws.Range("K2").End(xlToRight).Column 'colonne 10 à dernière valeur
' .AddItem Ws.Cells(2, i)
'Next i
For i = 3 To WsBase.Range("D" & Rows.Count).End(xlUp).Row
.AddItem WsBase.Range("D" & i)
Next i
End WithJe pense avoir pigé la déclaration des variables ...
Je sollicite donc votre assistance.
Merci d'avance
Frederic
Bonsoir
Alors il ne faut déclarer tes variables un peu partout
Solution
Tu crées un module dans lequel tu y mets tes déclarations de variables publiques
Et dans tous tes modules tu utilises Option Explicit
Quand tu initialises des contrôles dans un userform, cet userform exécute la procédure Initialise (n'affiche pas l'userform)
Si dans cette procédure tu testes des variables, celles-ci ne seront pas initialisées avec les valeurs que tu veux
Solution
Tu initialises tes variables publiques avant d'initialiser un contrôle de l'userform
Bonjour Banzai,
je me doutais bien que c'étais toi qui allait me répondre...
Banzai64 a écrit :Tu crées un module dans lequel tu y mets tes déclarations de variables publiques
Et dans tous tes modules tu utilises Option Explicit
Juste que là, tout va bien, çà ressemble à çà :
Option Explicit
Public Ws As Worksheet
Public WsBase As Worksheet
Public WsListes As Worksheet
Public ligne As Integer
Public NumLigne As Integer
Public modifs As Boolean
Public resecteur As Boolean
Public suivant As Boolean
Public precedent As Boolean
Public Ctrl As Control
Sub DeclaVariables()
modifs = True
resecteur = True
suivant = False
precedent = False
End SubQuand tu initialises des contrôles dans un userform, cet userform exécute la procédure Initialise (n'affiche pas l'userform)
Si dans cette procédure tu testes des variables, celles-ci ne seront pas initialisées avec les valeurs que tu veux
Solution
Tu initialises tes variables publiques avant d'initialiser un contrôle de l'userform
Là, je ne vois pas trop comment. On ne peut lancer un module depuis une Private Sub!
Encore un petit coup de pouce STP?
Merci d'avance
Frédéric
Bonjour
Modification faites dans le fichier
Regardes les commentaires dans les modules Recherche....
Pas testé à fond
Si des problèmes notes la démarche à suivre pour y arriver
Re bonjour Banzai
Ok pigé cette fois.
Testé et approuvé
Merci encore. Je poursuis mon developpement
Frederic