LISTVIEW Ajouter Modifier Supprimer

terpick

XLDnaute Occasionnel
Bonjour le Forum!

J'ai de nouveau besoin de votre aide.

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.

Peut-être qqun peut éclairer la situation?

Merci
 

Pièces jointes

  • Classeur1.xls
    85 KB · Affichages: 235
  • Classeur1.xls
    85 KB · Affichages: 217
  • Classeur1.xls
    85 KB · Affichages: 247
Dernière édition:

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir Bébère,

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.
 

Pièces jointes

  • base.xlsm
    429.2 KB · Affichages: 167
  • base.xlsm
    429.2 KB · Affichages: 174
  • base.xlsm
    429.2 KB · Affichages: 171
Dernière édition:

Fo_rum

XLDnaute Accro
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir,

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

Pièces jointes

  • Gestion ListView.xls
    80 KB · Affichages: 185

Bebere

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

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
 

Pièces jointes

  • GestionListViewv1.zip
    41.8 KB · Affichages: 138
  • GestionListViewv1.zip
    41.8 KB · Affichages: 132
  • GestionListViewv1.zip
    41.8 KB · Affichages: 136

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir tout le monde,

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
, j'ai peur que je me suis perdu :)
Merci encore à vous deux

A+
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

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
 

Pièces jointes

  • GestionListViewv1.zip
    44.7 KB · Affichages: 190
  • GestionListViewv1.zip
    44.7 KB · Affichages: 179
  • GestionListViewv1.zip
    44.7 KB · Affichages: 201

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour Bébère, merci beaucoup !

J'ai changé la ligne sur
ListView1.ListItems.Add , "A" & L, .Cells(L, 1)
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?

Merci d'avance.

A+
 

Bebere

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

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
 

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour le Forum, Bebere, Fo_rum,

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.

Nous avons oublié qqchose?

Merci de votre aide.

A+
 

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour à tous


J'ai trouvé encore un détail:

le Bouton Ini listview Tout marche à moitié. Par exemple, si on fait un tri dans une des combobox et après on utilise ....

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


JP
 
Dernière édition:

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour jp14,

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

Merci d'avance,

A+
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour

Pour vider un Combobox il faut utiliser .clear
Pour les textbox

Code:
Dim Ctrl As MSForms.Control
    For Each Ctrl In Me
    If TypeName(Ctrl) = "Textbox" Then Ctrl = ""
    Next Ctrl

JP