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 ( http://www.excel-downloads.com/forum/168595-modifier-ligne-listview-via-textbox.html ) 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
 

Fichiers joints

Dernière édition:

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour tout le monde, CHALET53,

Merci pour ce coup de pouce, à partir de là j'ai réussi de faire marcher les boutons Supprimer et Modifier.

Par contre "Ajouter" ne marche pas, que se passe-t-il?

Merci par avance

A+
 

Fichiers joints

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Rebonjour CHALET53,

en effet j'ai apperçu que Modifier ne marchait pas bien. Votre solution ajoute une ligne au lieu de modifier une ligne choisie:
Private Sub CommandButton1_Click() 'modifier
Dim i As Byte, L As Long
' Stop
Application.ScreenUpdating = False
L = Me.ComboBox1.ListIndex
' L = Me.ListView1.SelectedItem.Index
' Me.TextBox1 = Cells(L + 3, 1)
For i = 1 To 17
Cells(L + 3, i) = Me.Controls("Textbox" & i)
Next i
' Me.ListView1.ListItems(L).Text = Me.TextBox1
'Range(Me.ListView1.ListItems(L).Key) = Me.ListView1.ListItems(L).Text
Call Remplir_Liste(ComboBox1.Text)
Application.ScreenUpdating = True
End Sub
J'ai réussi de mettre en place Ajouter, par contre, le tableau ne se met pas en forme.

Merci

A+
 

Fichiers joints

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Du coup, j'ai avancé de mon côté et cela fonctionne aussi... pas proprement, mais bon...

Une seule chose encore svp:

Quand on ajoute une ligne, comment la mettre en forme (police, bordure...)

merci pour votre intérêt :)

a+
 

Fichiers joints

CHALET53

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

tu modifies cette procédure (sous réserve que la ligne précédente est au bon format) :

Private Sub CommandButton3_Click()

derligne = Sheets("Feuil1").Cells(65535, 1).End(xlUp).Row + 1
For i = 1 To 17
Cells(derligne, i) = Me.Controls("Textbox" & i)
Next i
Call Remplir_Liste(ComboBox1.Text)


Rows(derligne - 1).Select
Selection.Copy
Range("A" & derligne).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

End Sub
 

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Merci beaucoup, tout est fonctionnel maintenant.

J'ose de pose encore 2 questions perfectionnistes :)

Est-il-possible d'annuler la séléction
(sous réserve que la ligne précédente est au bon format)
après avoir fini l'opération?

Et la deuxième question qui est plus vitale pour moi:

Quand on choisie l'option "Ajouter", comment faire pour que l'UserForm apparait avec des Textbox vides et non pas avec des données déjà saisies?

Un grand merci pour votre aide.

A+
 
Dernière édition:

CHALET53

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Pour annuler la sélection, ajouter dans la procédure (derrière le coller):
Application.CutCopyMode = False

Pour remettre à blanc les textboxs

For i = 1 To 17
Me.Controls("Textbox" & i)=""
Next i
à la fin des procédures :
Private Sub CommandButton3_Click()
Private Sub CommandButton1_Click()
 

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Merci beaucoup !!!

Tout fonctionne.

J'ai juste ajouté
For i = 1 To 17
Me.Controls("Textbox" & i)=""
Next i
au début des
Private Sub OptionButton3_Click()
:

Private Sub OptionButton2_Click() 'modifier
Dim i As Integer

For i = 1 To 18
Me.Controls("Textbox" & i) = ""
Next i

If OptionButton2 Then
Me.CommandButton1.Enabled = True
Me.CommandButton2.Enabled = False
Me.CommandButton3.Enabled = False
For i = 1 To 18
Me("Textbox" & i).Visible = True
Next
Me.ListView1.MultiSelect = False
End If

End Sub
Voilà, merci et bonne journée !

A+
 

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Oh, je reviens... :)

Du coup, j'ai pensé, quand j'aurai 10000 lignes dans mon tableau, il vaut mieux que les données soient triées par ordre alphabétique...

Je sais comment le faire dans une ComboBox, mais ici... même avec plusieurs solutions sur le Forum, je n'arrive pas trop à fabriquer qqchose.
Peut-être c'est tout simple et je ne le vois pas?

Merci :)
 

CHALET53

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

La combobox est réalisée sur la raison sociale (colonne B) : peut-il y avoir plusieurs lignes contenant une même raison sociale ?
Actuellement l'ajout ou la modification permet d'avoir sur plusieurs lignes la même raison sociale (ce qui fait que lorsque l'on choisit une raison sociale présente sur 2 lignes, c'est la première qui est reportée dans les Textbox 1 à 17)

y aurait-il un inconvénient à ce que ce soit le tableau (Feuil1) qui soit trié plutôt que la combobox. Dans cette hypothèse, la simple saisie de la première lettre de la raison sociale recherchée permet d'accéder à la 1ère raison sociale commençant par cette lettre). La saisie d'une 2ème lettre affine la recherche... et ainsi de suite

a+
 
Dernière édition:

CHALET53

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Re,
bonjour bébère

Je ne travaille pas sur la même version de fichier que Bèbère (pas de colonne Type)

Pour tenir compte de la dernière demande (Liste alpha dans la combobox), j'ai utilisé une macro de tri (trouvé sur ce site : Boisgonthier, je crois)
Dans la mesure où il n'y a plus de correspondance d'alignement entre le fichier et la combobox, j'ai rajouté le n° de ligne dans la listview pour retrouver l'enregistrement lors d'une modification.
J'ai récupéré chez Bèbère ce que j'envisageai de faire (affichage de l'enregistrement à modifier en clikant sur la ligne (Merci)

A suivre
 

Fichiers joints

YANN-56

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir à tous,

Juste une petite idée;

Quand je charge une ListView à partir d'une feuille Excel,
je mets dans le tag de l'Item et ceux des SubItems l'adresse de la cellule pompée.

Sous forme de" x_y"; x étant la ligne, et y la colonne.
Avec "Split "_" on pourra facilement gérer.... Est c'est bien utile par la suite!

Ceci a l'avantage de conserver cette dernière d'une façon immuable,
car en se servant de l'Index de la liste; on aura des surprises après tri de la ListView!
(Par exemple en l'ayant fait par un Click sur une des entêtes)

Ceci dit d'une façon spontanée, sans avoir tout lu de ce qui précède.

Mais, si je puis aider; je suis disposé à en démontrer le bien fondé.

Quant aux modifications et suppressions de lignes avec leur incidence sur la base
de données; je pense que mes prédécesseurs y ont répondu.

Amicalement,

YANN
 

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Salut Chalet53, Bébère, Yann-56, le Forum.

Merci pour votre intérêt et les solutions proposées. Ce soir, je vais assembler les deux versions (celles de Chalet et Bébère). Le résultat et les précisions je mettrais après avoir fini.

Yann, j'ai bien peur que je n'ai pratiquement rien saisi de votre message, faute de mes connaissances limitées du VBA. Bien évidement, je suis preneur de toutes les idées pour ma base (et, si possible, avec les courtes explications, pour progresser, vu que j'aime ça, mais je suis à 100% autodidacte).

Merci encore et à bientôt.
 
Dernière édition:

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bon, mes bidouillages n'ont pas donné grand chose. J'avais une intention de fusionner deux solutions proposées, mais rien ne marche. ou presque. Vu, qu'on est allé si loin, je vais donc donner plus de détails (ou mes souhaits) lesquelles je n'est pas demandé, pour ne pas faire de trop.

les combobox dans l'entête je voudrais avoir 2 + 1 textbox.

Combobox 1 doit afficher les noms (vers 1000) avec un tri alphabétique. (Je l'ai affecté pour la colonne A, mais après avoir fait le choix la Listview n'affiche rien)
Combobox 2 doit afficher le type (ancien Raison Sociale). Il y aura 3 ou 4 types pas plus, donc je n'ai pas trop besoin de les trier par l'ordre alphab.
Dans Textbox 18 (cela est strictement facultatif, parce que je pense que ça sera bien compliqué) on peut saisir le numéro de pépart en 2 chiffres et le tri s'effectuera pour les diff départs.

J'ai rajouté aussi Combobox 4 avec une liste déroulante, mais comment affecter ses données dans la colonne M?

Et la dernière question : est il possible de ne pas autoriser remplir les textbox en clockan sur la listview si option Ajouter est en marche?

Bon, je m'arrête, je vous remercie par avance

A+
 

Fichiers joints

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Salut tout le monde!

Ouph, avec la tête fraîche j'ai réussi de régler ma dernière question
Et la dernière question : est-il possible de ne pas autoriser de remplir les textbox en clickant sur la listview si option Ajouter est en marche?
La réponse est dans le fichier de Bébère, mais hier je n'ai pas pu la faire tourner.

A+ et bon dimanche à tous
 

Fichiers joints

Dernière édition:

CHALET53

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour

Peux-tu préciser :

Dans ton fichier colonne raison sociale, il n'y a rien et c'est cette colonne qui alimente ta combobox1
tu as transféré les infos que j'avais en colonne raison sociale en colonne type : ta combobox2 porte les infos Type et ta combobox1 porte la raison sociale
question : on met quoi dan quoi ?

et si tu sélectionnes à partir d'une combobox (1 par exemple) que doit faire une sélection sur l'autre combobox (2 en l'occurence) : sans doute réduire les éléments sélectionnés pour faciliter la lecture

Merci
 

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour Chalet,

Je viens de résoudre ça:
Combobox 1 doit afficher les noms (vers 1000) avec un tri alphabétique. (Je l'ai affecté pour la colonne A, mais après avoir fait le choix la Listview n'affiche rien)
Comment je vois le processus :

Colonne Rais Soc ne joue aucun rôle sur le tri, c'était juste pour le brouillon.

Il y a 3 colonnes concernées: B - Nom (combobox1), A - Type (région géo - 3-4 régions, pas plus (combobox2)) et F - CP (textbox18).

Tout d’abord, l'utilisateur devra pouvoir visualiser les lignes par Type (combobox2), ensuite, dans combobox1 il pourra afficher les noms dans l'ordre alphabétique. (Rien n'empêche de visualiser tous les noms de colonne A sans le tri par Type (combobox2=TOUS). Et, en fin, il pourra réduire l'affichage par département en saisissant deux chiffres du département dans la textbox18.

Si c'est toujours flux, je vais essayer d'expliquer encore, pas de problème.

Je joins la dernière version.

Merci beaucoup.
 

Fichiers joints

Discussions similaires


Haut Bas