Bonjour à tous !

Ca fait longtemps que je m'aide de ce forum pour résoudre mes problèmes en codage VBA et à chaque fois j'ai trouvé la réponse ! Mais aujourd'hui bin... je n’ai pas trouvé ^^

Voici mon souci :

Je possède un formulaire de "Menu principal" à partir duquel j'ouvre d'autres formulaire qui correspondent à l'action désirée (saisie, modification...). Tous fonctionnent, je peux les ouvrir en cliquant sur un bouton puis les fermer via la "petite croix en haut à gauche" pour revenir au menu aucuns soucis. Sauf qu'il y a un vilain petit canard dans le lot !

Le vilain petit canard:

C'est un formulaire de recherche qui est simplement composé d'une SpreadSheet. Lors de la première ouverture tout va bien il copie les données de la base sans soucis (cette action de copie est contenu dans le UserForm_Initialize). On peut faire son travail puis le fermer pour revenir au menu principal.
Mais la si depuis le menu on veut le ré-ouvrir une deuxième fois.. Aucune procédure ne s'exécute et le formulaire s'affiche comme "figé" (en plus la copie ne s'est pas faite et tout est vide) et je ne peux même plus le fermer via la petite croix. Après l'après-midi d'hier consacrée a chercher toutes les méthodes différentes pour l'ouvrir a chaque fois comme si c'était la première fois.. Je n'ai toujours pas trouvé de solution. Je vous joins trois bouts de code qui permettent la navigation entre les formulaires. (Je suis très limité en diffusion et je ne peux pas tout vous montrer...)

V2_Menu Clic sur bouton du formulaire de recherche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Private Sub CommandButton2_Click()
    Me.Hide
    V2_Recherche.Show
End Sub
V2_Recherche Initialisation et copie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
Public Sub UserForm_Initialize()
Spreadsheet1.Sheets("Feuille1").Range("A1:IV65536").ClearContents
'Recopie les enregistrements de la base dans la spreadsheet de recherche
Sheets("Base").Activate
N = WorksheetFunction.CountA(Range(Cells(1, 10), Cells(65536, 10)))
For Ligne = 1 To N + 1
 If Sheets("Base").Cells(Ligne, 25) = False Then
    Spreadsheet1.Cells(Ligne, 1) = Sheets("Base").Cells(Ligne, 16)
    Spreadsheet1.Cells(Ligne, 2) = Sheets("Base").Cells(Ligne, 17)
    Spreadsheet1.Cells(Ligne, 3) = Sheets("Base").Cells(Ligne, 18)
 
    Spreadsheet1.Cells(Ligne, 4) = Sheets("Base").Cells(Ligne, 10)
    Spreadsheet1.Cells(Ligne, 5) = Sheets("Base").Cells(Ligne, 11)
    Spreadsheet1.Cells(Ligne, 6) = Sheets("Base").Cells(Ligne, 12)
    Spreadsheet1.Cells(Ligne, 7) = Sheets("Base").Cells(Ligne, 13)
    Spreadsheet1.Cells(Ligne, 8) = Sheets("Base").Cells(Ligne, 14)
    Spreadsheet1.Cells(Ligne, 9) = Sheets("Base").Cells(Ligne, 15)
    Spreadsheet1.Range("J1").Value = "Date d'acceptation"
    If Sheets("Base").Cells(Ligne, 3) <> "" And Ligne > 1 Then
    Spreadsheet1.Cells(Ligne, 10) = CStr(Sheets("Base").Cells(Ligne, 3))
    End If
  End If
Next Ligne
 
Spreadsheet1.Worksheets("Feuille1").Columns.AutoFit
Spreadsheet1.Worksheets("Feuille1").Range("A1:IV1").Font.Bold = True
 
End Sub
V2_Recherche Sur fermeture du formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Private Sub UserForm_Terminate()
V2_Menu.Show
Unload V2_Recherche
End Sub
Le pire c'est que j'ai pratiquement le même code pour tous les formulaires et ca fonctionne mais pas là. Peut être est-ce dû au SpreadSheet qui est un contrôle ActiveX ... J'en ai aucune idée..

Voilà si vous avez une idée elle sera la bienvenue ! Même les trucs les plus débiles, j'ai peut-être oublié un truc tout con mais la je vois pas ^^

Merci à ceux qui auront pris le temps de lire et de répondre !

Eltinquen

P.S: Super ce forum c'est une vraie mine d'infos !