UserForm ListBox sauvergarder les données et modifier
Résolu
trevsiob
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai une UserForm avec 4 ListBox. Les utilisateurs doivent sélectionner des items dans la première ListBox, appuyer sur un bouton "ADD" et l'item est alors transféré dans la 2ieme ListBox. Ils peuvent aussi sélection un item qui a préalablement été envoyé dans la ListBox 2 et appuyer sur un bouton "REMOVE" pour enlever l'item (en cas d'erreur par exemple). Ils doivent aussi faire la même chose avec la 3ième ListBox qui contient une liste différente d'item et en les sélectionnant ils sont transféré dans la 4ième ListBox sous le même principe décrit un peu plus haut. Ils doivent finalement appuyer sur un bouton "TERMINER" qui ferme la UserForm et transfert la sélection dans deux ListBox différente sur la feuille excel. Sur cette dernière, on retrouve un bouton "MODIFIER" qui permet aux utilisateurs de réouvrir la UserForm qui apparait avec la sélection précédente et peuvent modifier leur travail. Tout ce procédé fonctionne bien mais j'ai deux problèmes. Premièrement, j'aimerais pouvoir sauvegarder les données des ListBox de la feuille excel lors de la fermeture du fichier. Pour ce faire, j'utilise un "range" de cellules dans lequel est transféré le contenu des deux ListBox et j'ai écrit un code dans WorkBook_Open qui va voir dans le range et s'en sert pour remettre les items dans les ListBox sauf que je ne peux pas modifier la sélection lorsque les items proviennent du "range". Deuxièmement, j'aimerais que les utilisateurs ne puissent pas choisir 2 fois le même items dans la userForm. Il faudrait que lorsqu'un item est transféré à l'aide du bouton "ADD", ce même item soit enlever ou invisible ou enabled de la première ListBox et lorsqu'on appuie sur le bouton "REMOVE", l'item revient dans la première ListBox.
J'espère avoir été assez clair!
Merci beaucoup
Alex
j'ai une UserForm avec 4 ListBox. Les utilisateurs doivent sélectionner des items dans la première ListBox, appuyer sur un bouton "ADD" et l'item est alors transféré dans la 2ieme ListBox. Ils peuvent aussi sélection un item qui a préalablement été envoyé dans la ListBox 2 et appuyer sur un bouton "REMOVE" pour enlever l'item (en cas d'erreur par exemple). Ils doivent aussi faire la même chose avec la 3ième ListBox qui contient une liste différente d'item et en les sélectionnant ils sont transféré dans la 4ième ListBox sous le même principe décrit un peu plus haut. Ils doivent finalement appuyer sur un bouton "TERMINER" qui ferme la UserForm et transfert la sélection dans deux ListBox différente sur la feuille excel. Sur cette dernière, on retrouve un bouton "MODIFIER" qui permet aux utilisateurs de réouvrir la UserForm qui apparait avec la sélection précédente et peuvent modifier leur travail. Tout ce procédé fonctionne bien mais j'ai deux problèmes. Premièrement, j'aimerais pouvoir sauvegarder les données des ListBox de la feuille excel lors de la fermeture du fichier. Pour ce faire, j'utilise un "range" de cellules dans lequel est transféré le contenu des deux ListBox et j'ai écrit un code dans WorkBook_Open qui va voir dans le range et s'en sert pour remettre les items dans les ListBox sauf que je ne peux pas modifier la sélection lorsque les items proviennent du "range". Deuxièmement, j'aimerais que les utilisateurs ne puissent pas choisir 2 fois le même items dans la userForm. Il faudrait que lorsqu'un item est transféré à l'aide du bouton "ADD", ce même item soit enlever ou invisible ou enabled de la première ListBox et lorsqu'on appuie sur le bouton "REMOVE", l'item revient dans la première ListBox.
J'espère avoir été assez clair!
Merci beaucoup
Alex
A voir également:
- UserForm ListBox sauvergarder les données et modifier
- Fuite données maif - Guide
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Modifier story facebook - Guide
- Supprimer les données de navigation - Guide
4 réponses
Je remets le liens du premier post:
http://www.webtransfer.ch/en/download/681f638314d6f969a10b6194ea81ea4238ea1d80
http://www.webtransfer.ch/en/download/681f638314d6f969a10b6194ea81ea4238ea1d80
trevsiob
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
Merci j'avais oublié!
Bonjour,
Pour la seconde question, voici ma réponse en code :
Par contre, je n'ai pas compris la première question...
Cordialement,
Franck
Pour la seconde question, voici ma réponse en code :
'passer de ListBox1 à ListBox2
Private Sub cmdadd_Click()
Dim counter As Integer
counter = -1
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox2.AddItem ListBox1.List(i)
counter = i
End If
Next i
If counter <> -1 Then ListBox1.RemoveItem (counter)
End Sub
'passer de ListBox2 à ListBox1
Private Sub cmdremove_Click()
Dim counter As Integer
counter = -1
For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) Then
ListBox1.AddItem ListBox2.List(i)
counter = i
End If
Next i
If counter <> -1 Then ListBox2.RemoveItem (counter)
End Sub
Par contre, je n'ai pas compris la première question...
Cordialement,
Franck
pijaku,
Ma première question était:
Lorsque l'utilisateur a fini son travail, il doit enregistrer le fichier excel. Mais lorsqu'on ouvre à nouveau le fichier sauvegarder, excel ne sauvegarde pas les données des listbox. J'ai donc créé un "Range" dans lequel la sélection se retrouve pour que les données soient enregistrées et j'ai un code dans WorkBook_Open qui va chercher les données du "Range" et cré une population dans la ListBox de la feuille excel. De cette façon je ne perd pas mes données. Le problème est que si je veux modifier la sélection la ça ne fonctionne pas...
Ma première question était:
Lorsque l'utilisateur a fini son travail, il doit enregistrer le fichier excel. Mais lorsqu'on ouvre à nouveau le fichier sauvegarder, excel ne sauvegarde pas les données des listbox. J'ai donc créé un "Range" dans lequel la sélection se retrouve pour que les données soient enregistrées et j'ai un code dans WorkBook_Open qui va chercher les données du "Range" et cré une population dans la ListBox de la feuille excel. De cette façon je ne perd pas mes données. Le problème est que si je veux modifier la sélection la ça ne fonctionne pas...
Voici votre fichier en retour.
J'ai fait pas mal de modifications.
Pour la question1, vous modifiez manuellement dans vos deux Range et cliquez sur le bouton que j'ai ajouté.
Sinon, d'autres modifs :
- remplacement des propriétés RowSource des listbox d'userform par les propriétés list pour permettre l'effacement,
- Sélection multiple des listbox1 et 3 de l'userform
et des bricoles à droite à gauche, sans importance
J'ai fait pas mal de modifications.
Pour la question1, vous modifiez manuellement dans vos deux Range et cliquez sur le bouton que j'ai ajouté.
Sinon, d'autres modifs :
- remplacement des propriétés RowSource des listbox d'userform par les propriétés list pour permettre l'effacement,
- Sélection multiple des listbox1 et 3 de l'userform
et des bricoles à droite à gauche, sans importance
Cette solution ne me convient pas vraiment.
1. En fait, tout ce prodécé fera parti d'un formulaire. L'affichage doit donc être optimal et les utilisateur ne pourront pas aller dans le range pour faire une modification manuelle.
2. Le code pour faire disparaître les item après leur sélection contient plusieurs bogues que je veux éviter. En fait, en faisant le test, si on sélection plusieurs items ils ne se suppriment pas tous. Aussi, en choisissant la mutliselection comme vous l'avez fait, il devient moins intéressant pour les utilisateurs qui choisiront seulement un item et voudront changé avant d'avoir cliqué sur "ADD".
Si vous avez d'autre suggestion à me faire quant aux outils (changer ListBox pour autre chose etc..) n'hésitez pas.
Merci
1. En fait, tout ce prodécé fera parti d'un formulaire. L'affichage doit donc être optimal et les utilisateur ne pourront pas aller dans le range pour faire une modification manuelle.
2. Le code pour faire disparaître les item après leur sélection contient plusieurs bogues que je veux éviter. En fait, en faisant le test, si on sélection plusieurs items ils ne se suppriment pas tous. Aussi, en choisissant la mutliselection comme vous l'avez fait, il devient moins intéressant pour les utilisateurs qui choisiront seulement un item et voudront changé avant d'avoir cliqué sur "ADD".
Si vous avez d'autre suggestion à me faire quant aux outils (changer ListBox pour autre chose etc..) n'hésitez pas.
Merci