gawel Posté(e) le 18 août 2004 Posté(e) le 18 août 2004 Bonjour à tous, j'ai un petit problème qui n'est pas bloquant, mais qui est assez gênant dans mon appli. j'utilise une appli VB qui utilise 5 userform. On passe de l'une à l'autre par un bouton suivant. j'ai aussi mis un bouton précédent pour modifier par exemple un choix déjà effectué dans un combobox par exemple. Le souci, c'est que lorsque je fais précédent, il rajoute dans mes combobox tous les item qui étaient déjà présent. En effet, en réactivant la fenêtre précédente, il ré-éxécute ce que je lui demande de faire: mais moi je ne voudrais pas qu'il ré-éxécute ce qu'il a déjà effectué une fois .... :casstet: voici une exemple de ce qu'il éxécute: Private Sub UserForm_Activate()On Error GoTo Erreur ComboBox1.AddItem "1 bague"ComboBox1.AddItem "2 bagues" ComboBox2.AddItem "par l'avant"ComboBox2.AddItem "par l'arrière" Exit SubEnd Sub Y-a-t-il un moyen :question: Gawel
Serge Posté(e) le 18 août 2004 Posté(e) le 18 août 2004 Gawel, Tu peux généralement utiliser cette forme: MaForme1.ComboBox1.Add ... , MaForme2.ComboBox2.Add ... plutôt que simplement écrire ComboBox1.Add ... Alternativement, au lieu d'utiliser des userforms, tu peut envisager l'utilisation d'un PictureBox qui peuvent être le conteneur d'objets et pour lequel tu passe 5 Frames. Il y a une astuce assez longue pour y arriver et il faut user de dll win32 Par exemple:' User32.dllPublic Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As LongPublic Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As LongPublic Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPublic Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As LongPublic Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPublic Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Ceci est une psite que je ne détaillerai pas plus longuement. Ça semble compliqué mais ça vaut la chandelle car tout est drôlement simplifié par la suite. L'idée est de faire que chaque UserForm devienne l'enfant du PictureBox à tour de rôle. Serge
Enael Posté(e) le 18 août 2004 Posté(e) le 18 août 2004 Voila pour ton petit problème que j'ai rencontré aussi c'est pas compliqué au lieu de faire : Private Sub UserForm_Activate()On Error GoTo Erreur ComboBox1.AddItem "1 bague"ComboBox1.AddItem "2 bagues" ComboBox2.AddItem "par l'avant"ComboBox2.AddItem "par l'arrière" Exit SubEnd Sub Tu fais : Private Sub UserForm_Initialize()On Error GoTo Erreur ComboBox1.AddItem "1 bague"ComboBox1.AddItem "2 bagues" ComboBox2.AddItem "par l'avant"ComboBox2.AddItem "par l'arrière" End Sub Et hop toutes les données que tu rentre dans tes combobox ne seront rentrée qu'une et une seule fois peut importe le nombre de fois que tu feras apparaître le userform ou elles sont. C'est un petit truc tout bete mais qui sert beaucoup! Enael
gawel Posté(e) le 19 août 2004 Auteur Posté(e) le 19 août 2004 Ah oui c'est vrai que c'est tout bête ! Mille mercis, à toi aussi serge (je crois que je vais prendre la solution d'enael tout de même, ça me fera moins de modif...) !! Gawel
Enael Posté(e) le 19 août 2004 Posté(e) le 19 août 2004 Perso je ne m'y connais pas encore assez pour tester l'astuce de serge mais je pense que ca peut être très intéressant donc je my pencherai quand j'aurai du temps en espèrant que je comprenne. <acronym class=dict title= Ca a lair compliqué quand on ne connait pas Enael
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant