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:
V2_Recherche Initialisation et copie :
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 Sur fermeture du formulaire :
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
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..
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
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 !
Partager