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

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+
 

Pièces jointes

  • Tarpeck(1).xls
    82.5 KB · Affichages: 284
  • Tarpeck(1).xls
    82.5 KB · Affichages: 259
  • Tarpeck(1).xls
    82.5 KB · Affichages: 305

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+
 

Pièces jointes

  • Tarpeck(1).xls
    82.5 KB · Affichages: 203
  • Tarpeck(1).xls
    82.5 KB · Affichages: 189
  • Tarpeck(1).xls
    82.5 KB · Affichages: 199

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+
 

Pièces jointes

  • Tarpeck(2).xls
    106 KB · Affichages: 281

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
 

Pièces jointes

  • Tarpeckter.xls
    113 KB · Affichages: 469

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
 

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof