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:

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour

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

Avec une listview il faut utiliser impérativement une clé pour connaître le numéro de ligne de la base de donnée.

Le code suivant recherche le nom dans la base de donnée, il prend le premier trouvé.

Code:
Li = .Cells.Find(Item, , Lookat:=1).Row    'ligne de l'item


Ci dessous le code à utiliser

Code:
Private Sub Listview1_ItemClick(ByVal Item As MSComctlLib.ListItem)
   .................................................................
    If ListView1.ListItems.Count = 0 Then Exit Sub ' pour éviter une erreur si la listview est vide
        With ListView1.ListItems(ListView1.SelectedItem.Index)
              Li = Val(Replace(.Key, "A", ""))' on récupère le numéro de ligne
        End With
    With Sheets("Feuil1")
               For Nb = 1 To 18
            Me("TextBox" & Nb) = .Cells(Li, Nb)
        Next
    End With
.......................................

A tester

JP
 

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

MAGNIFIQUE ! CA FONCTIONNE ! MERCI BEAUCOUP !

Par contre, je n'arrive pas non plus de vider les text et combobox, ah.

En effet, je veux juste éviter la réouverture d'Userform à chaque nouvelle saisie, s'il y a plusieurs choses à rentrer dans la base à la fois.
Mais bon, c'est un détail.

Merci encore et à +
 

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour

Il faudrait rajouter un bouton pour quitter l'application et supprimer les Unload me sauf pour le bouton.
Pour initialiser les les controles la méthode clear permet de vider les Combobox, Listbox, Listview. Pour les textbox il faut les effacer.
Pour réinitialiser il faut lancer la procédure "Userform_initialize"

JP
 

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

OUAI, c'est parti pour les textbox, merci !

Si j'ai plusieurs combobox, il faut que je site chacune avec .Clear ?

Pas de moyen comme avec les textbox ?

A +

clear vide le Combo ou listbox, la propriété count est égale à 0

Il suffit de rajouter, le principe est toujours le même, par exemple

If TypeName(Ctrl) = "ComboBox" Then Ctrl = ""
If TypeName(Ctrl) = "ListBox" Then Ctrl = ""
If TypeName(Ctrl) = "OptionButton" Then Ctrl.value = False
...........................................................................
Concernant les ComboBox on peut écrire ComboBox.ListIndex=-1

JP
 
Dernière édition:

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour tout le monde.

Bebere, je reviens vers vous pour le côté "PARAMETRES" de ce fichier.

2 choses:

1. Pour "modifier" : si on saisie qqchose dans la textbox2 de la multipage Modifier sans faire le choix dans la listtbox2, ça bog.

2. Je voudrais qu'après avoir AJOUTé une donnée, la textbox sur la page Ajoute se vide. J'ai essaié le code, mais il ne marche pas:

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

Une idée? où, plutôt, deux?

Merci d'avance.

A+
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour

Ci joint l'userform avec quelques modifications.
Après décompression il faut l'importer dans l"éditeur VBA


A tester

JP
 

Pièces jointes

  • UsfParam.zip
    3.3 KB · Affichages: 189

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour

Ce n'est pas un fichier excel mais 2 fichiers un .frm (contient le code VBA) et un .frx (dessin de l'usf)
VBA n'affichera qu'un seul fichier UsmParam.frm
Il faut renommer l'userform du fichier excel s'il existe déjà dans le projet.
JP
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir

Première opération renommer l'userform existant.
Menu Fichier : Importer un fichier.
Rechercher le fichier .frm pour les userform .bas pour les modules.

JP
 

Pièces jointes

  • importation.jpg
    importation.jpg
    82.4 KB · Affichages: 164
  • importation.jpg
    importation.jpg
    82.4 KB · Affichages: 171
  • importation.jpg
    importation.jpg
    82.4 KB · Affichages: 178
Dernière édition:

Statistiques des forums

Discussions
311 712
Messages
2 081 802
Membres
101 819
dernier inscrit
lukumubarth