Aller au contenu

pb initialisation avec bouton précédent


Messages recommandés

Posté(e)

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 Sub

End Sub

 

Y-a-t-il un moyen :question:

 

Gawel

 

Posté(e)

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.dll

Public 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 Long

Public Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long

Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Public 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

Posté(e)

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 Sub

End 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

 

Posté(e)

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

Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité