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 Sub

A 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 With

Je 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 Sub

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

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

Rechercher des sujets similaires à "perte variable entre module formulaire"