J'essaie de créer un logiciel pour gérer les données dans un tableau avec les options de base: Ajouter Modifier Supprimer
En bidoullant sur le forum j'ai appris que cela est possible à faire avec ListView. J'ai pris un exemplaire pour la base ( https://www.excel-downloads.com/threads/modifier-ligne-listview-via-textbox.168595/ ) et après qques modifications j'ai réussi d'avoir qqchose presque potable... mais rien ne marche...
Mais "connaissances" ne me permettent pas aller plus loin.
Merci pour votre réponse et solution pour faire marcher le logiciel depuis la page de garde.
L'UserForm de paramétrage je gère très bien. Je l'ai "reçu" sur le forum il y a environ 1 an et je l'ai déjà adapté dans plusieurs fichiers. Cette méthode est bien pratique. Le seul bémol, c'est qu'on rajoute toujours dans la ligne 3, et l'ordre alphabétique dans la liste déroulante ne se fait pas. Est-il possible de corriger cet inconvénient?
Mais la question beaucoup plus importante : comment adapter les combobox (pour les trois données dans les paramètres) lors de l'ajout d'un nouvel enregistrement? Dans votre version je l'ai fais en trichant : j'ai envoyé les données des combobox dans les textbox, les textbox envoient les données dans le tableau, ensuite, j'ai masqué les textbox. Mais comment faire ici???????
Merci encore de votre aide.
Je joins pour exemple votre version dans un état il y a un mois (faute de données personnelles). Les textbox 2,_8 et 14 sont cachées en bas à droite. Le travail à la hache... mais bon.
Le bog principal de cette version : si on ne saisie rien dans les combobox pour indiquer le tri par Nom, Type ou Ville, le logiciel ne fonctionne pas. J'ai essayé de réparer cela avec un mesagbox, en disant qu'il faut saisir qqchose, mais cela n'a rien donné... ou presque.
même idée que Bébère pour les 3 options mais plus de Multiplage. Les risques d'erreur croissent avec la multiplicité des contrôles.
Pour les initialisations, je n'aime pas passer par les noms prédéfinis (trop de problèmes rencontrés indépendamment de ma volonté). J'ai commencé et si cela convient il suffit de reproduire les quelques lignes de code.
Il est primordial de savoir quelle est la feuille active, dans quelle feuille on puise les renseignements et quelle sera la feuille cible.
On voit trop souvent des problèmes à cause de la méconnaissance de cette assertion.
Pour éviter des codes lourds je passe par une variable Worsheet en multipliant les "With ... End With".
Un exemple en est donné dans le document joint (pas eu le temps de trop tester).
bonjour Terpick,Fo_rum
dans gestionlistviewv1,tu as une méthode pour ajouter à la 1ère ligne vide + un tri(usfparam(gère les 3 listes de feuille paramètres) appelé par quelle_mission)
userform1,listview1 ajout de key(clé,code de textbox19) avec un exemple d'utilisation dans bouton supprimer
supprimé accès inutile
à bientôt
Fo_rum, Bébère, merci pour vos solutions et surtout pour la résolution de la problématique avec la page de garde (néanmoins, si on bidouille un peu avec Combobox1, Textbox19 et l'ordre alphabétique par type, après par ville etc dans la listbox, le programme se perde et affiche des choses bizarres).
Fo_rum, j'ai bien ajouté les lignes dans le code VBA pour affecter les combobox 2,3 et 4:
HTML:
With Sheets("parametres")
For L = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
ComboBox2.AddItem .Cells(L, "A")
Next
'compléter les 2 autres ainsi
For L = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
ComboBox3.AddItem .Cells(L, "C")
Next
For L = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
ComboBox4.AddItem .Cells(L, "E")
Next
End With
Ainsi, les listes déroulantes apparaissent bien dans les combobox correspondantes, le problème, c'est que les données saisies dans ces combobox ne se transmettent pas dans le tableau sur la feuil1.
Quant au paramétrage, je pense adapter la version améliorée par Bébère. Ca fonctione presque bien, mais ça bog quand on ajoute un nouveau mot dans la ligne:
HTML:
.Range("A1").Select
. Par contre ce mot s'ajoute bien dans la colonne correspondante sur onglet paramètres.
J'espère, que je vous suis dans vos explications et ne rate pas des messages évidents que vous voulez me faire passer.
Bébère, par exemple cette phrase :
userform1,listview1 ajout de key(clé,code de textbox19) avec un exemple d'utilisation dans bouton supprimer
supprimé accès inutile
bonjour Terpick,Fo_rum
supprime.Range("A1").Select
remplacer texbox19 par combobox5
pour en savoir plus sur key dans listview consulte les pages de Michelxld
les 3 combobox pays,accès,truc sont ok ainsi que les texbox correspondantes
bonjour Terpick
la clé est peut être =""
dans Private Sub ComboBox5_Change()
dans cette ligne as-tu "A" & L
ListView1.ListItems.Add , "A" & L, .Cells(L, 1)
à bientôt
et tout fonctionne maintenant.
La clé j'ai laissé 2, "" ne fonctionne pas.
Par contre, en supprimant la ligne, le nom reste dans Combobox. Pour le remettre à 0, il faut sortir du UForm, qui n'est pas trop pratique, si on veut continuer le travail ;
Est-il possible de supprimer le nom "supprimé" du Combobox tout de suite?
Terpick
clé en anglais key
"A" & l est une clé
si l=2
MsgBox ListView1.ListItems(2).Key le message te donneras "A2"
le bouton supprimer était en exemple
il faut dire ce que tu veux exactement faire
supprimer une ligne une toutes les lignes
si tu supprimes une ligne tutu dois rester
Je suis en train de finaliser ce fichier. Et mince, en faisant des testes, j'ai aperçu que le listview ne fonctionne pas correctement.
Je m'explique.
pour afficher une catégorie, on fait un tri. Prenons un exemple:
- par nom;
- on choisie un nom.
De l'apparence tout va bien, mais si on prend un nom qui existe plusieurs fois (tyty), les données affichées ensuite dans les textbox correspondent uniquement pour la première ligne dans le tableau Feuil1, même si on clique sur les diffrentes lignes dans le istview. Autrement dit, le tri ne fonctionne pas.
Le problème provient de la valeur de "sorted", il faut modifier sa valeur.
Code:
Private Sub CommandButton5_Click() 'listview tout
.......................................
With ListView1
.ListItems.Clear
.Sorted = False
.........................................
merci pour cette précision. je l'ai ajouté dans le code. ça l'air de fonctionner
Pour mon message précédent, je pense que j'ai compris où est le problème. Ce n'est même pas un problème, mais juste une protection contre les redondances dans la première colonne, si j'ose dire. Le logiciel va toujours chercher la première ligne dans le tableau sur Feuil1 pour envoyer les données dans les textbox. Est-il possible d'éviter cette protection??? (si, bien sûr, j'ai raison).