RESOLU! Bug dans formatage des colonnes d'une Listview...

pnlop

XLDnaute Occasionnel
Bonjour le forum
(comme me l'a demandé Excel-lent, j'ouvre un nouveau post........)
Suis en train de préparer ma ListView1 dans mon UserForm10...

J'ai entré ce code dans UserForm_Initialize:
Private Sub UserForm_Initialize()

With ListView1.ColumnHeaders
.Add , , "n° art", 20
.Add , , "libellé", 20
.Add , , "unité", 20
.Add , , "quantité", 20
.Add , , "option", 20

End With

End Sub
Ne devrait-il pas se passer qqch dans ma Listview???
Pnlop
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : Bug dans formatage des colonnes d'une Listview...

Bonjour
Salut Pierrot93

Quand on utilise la multiselection dans une listbox la propriété Listindex n'a plus de sens.
Il faut utiliser le code suivant
Code:
For i = 0 To ListBox2.ListCount - 1
            If ListBox2.Selected(i) = True Then 
              .ListItems.Add , , ListBox2.List(i)
           end if
        Next i

JP
 
Dernière édition:

pnlop

XLDnaute Occasionnel
Re : Bug dans formatage des colonnes d'une Listview...

Re,
Ma logique ne m'aide pas...Ca joue pour les 2 première colonne
Private Sub CommandButton4_Click()
If ListBox2.ListIndex = -1 Then Exit Sub
With ListView1
For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) = True Then
.ListItems.Add , , ListBox2.List((i), 0)
.ListItems(.ListItems.Count).ListSubItems.Add , , ListBox2.List((i), 1)
.ListItems(.ListItems.Count).ListSubItems.Add , , ListBox2.List((i), 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , ListBox2.List((i), 3)
.ListItems(.ListItems.Count).ListSubItems.Add , , ListBox2.List((i), 4)
End If
Next i


End With
End Sub

Mais ensuite, pour la colonne "unité", il veut me remettre le libellé, pui dans la colonne "quantité" il me met l'unité et dans la dernière colonne qui devrait être vide, il met la quantité!!!
Mais peut-être que le problème vient de la ListBox2...
je joint mon fichier.. au cas où
Merci
 

Pièces jointes

  • demo nouv form - Copie.xlsm
    148.6 KB · Affichages: 39
  • demo nouv form - Copie.xlsm
    148.6 KB · Affichages: 47
  • demo nouv form - Copie.xlsm
    148.6 KB · Affichages: 43

Fo_rum

XLDnaute Accro
Re : Bug dans formatage des colonnes d'une Listview...

Bonjour,

un exemple avec ce que j'ai compris. J'ai rajouté une première colonne à la Listbox pour faire correspondre les colonnes des 2 contrôles.
J'ai allégé le fichier !
 

Pièces jointes

  • ListBoxVersListview.xlsm
    113.1 KB · Affichages: 38

pnlop

XLDnaute Occasionnel
Re : Bug dans formatage des colonnes d'une Listview...

Merci Fo-rm et Papou, c'est parfait!
J'ai pris l'option Papou car je la comprend mieux et elle va plus dans le sens que j'avais essayé de faire.
Pendant que vous êtes encore là,
Ce code joue pas...: c'est pour supprimer les Items séléctionnés du Listview...
Private Sub CommandButton5_Click()
With ListView1
Dim j As Integer
If Item.Checked = True Then
ListItems.Remove
End If
End With
End Sub
Après, m'en voulez pas, mais je reviens demain, car j'ai les yeux carrés!!!

Merci pour tout à ceux qui ont contribué!
pnlop
 

jp14

XLDnaute Barbatruc
Re : Bug dans formatage des colonnes d'une Listview...

Bonjour

Ce code joue pas...: c'est pour supprimer les Items séléctionnés du Listview...
pnlop

Pour supprimer les items sélectionnés il faut
Faire une boucle pour trouver les items
Il faut toujours commencer par la fin du tableau, de la listview ,....

Code:
Dim i As Long
With ListView1
For i = .ListItems.Count To 1 Step -1
    If .ListItems(i).Checked = True Then
       .ListItems.Remove i
    End If
Next i
End With

JP
 

pnlop

XLDnaute Occasionnel
Re : Bug dans formatage des colonnes d'une Listview...

Re le forum,
Merci jp14, aussi pour l'explication. C'est plus claire pour moi et j'apprend plus vite quand je sais pourquoi vous écrivez telle ou telle chose.
Je n'ai pas encore les "boucles" en automatisme...
Suis pas au boulot donc je teste tout ça demain.
Je suis parvenue à ce que tout ce que je voulais faire jusque là fonctionne.
Mais là, je vais m'attaquer à encore autre problème certain...
La modification "manuelle" des Items dans la ListView...
J'ai déjà trouver plusieurs post qui en parle ou il est question de textBox...
Mais je me demande si le point de départ ne serait pas une macro "double clic" sur l'Items, puis peut-être une option pour modifier telle ou telle colonne. Bref je m'étale mais si qqn est motivé avant l'heure, qu'il me fasse signe!!!
A bientôt
Pnlop
 

jp14

XLDnaute Barbatruc
Re : Bug dans formatage des colonnes d'une Listview...

Bonsoir
Pour modifier des données dans une listview il faut transférer les données dans des textbox, puis faire l'inverse. Il n'y a pas d'autre solution, sauf sur la première colonne.
Il ne faut pas oublier de mettre à jour la base de donnée si on fait cette opération.
Pour éviter les problèmes de mise à jour il faut introduire dans une ligne de listview le numéro de la ligne qui est concernée.
Le plus simple est d'utiliser la clé qui doit comporter une lettre alphabétique.

JP
 

pnlop

XLDnaute Occasionnel
Re : Bug dans formatage des colonnes d'une Listview...

Bonjour Le Forum,
JP 14, merci pour les conseils. J'y suis presque.
Mais il doit y avoir une bulle, car tout ne vient pas, ni exactement dans le bon TextBox dans le Frame1...
Et en même temps, j'aurais voulu plutôt un "double Click" sur l'Item dans la Listview pour le faire venir mais si j'écris
Private Sub Listview1_ItemDoubleClick(ByVal Item As MSComctlLib.ListItem)
, ça ne fonctionne pas...

Private Sub Listview1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim a
a = Me.ListView1.SelectedItem.Index

Dim Cellule As Integer
For Cellule = 2 To 6 Step 2
If Cellule = 2 Then
Me.Controls("TextBox" & Cellule).Text = ListView1.ListItems(Item.Index).Text
Else
Me.Controls("TextBox" & Cellule).Text = ListView1.ListItems(Item.Index).ListSubItems(Cellule - 1).Text
End If
Next Cellule
End Sub
(Dans le Frame: TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, placés dans le même ordre que colonne ListView1)
Je mets mon fichier alléger... Merci pour votre aide
Pnlop
 

Pièces jointes

  • demo nouv form - Copie.xlsm
    104.9 KB · Affichages: 48
  • demo nouv form - Copie.xlsm
    104.9 KB · Affichages: 53
  • demo nouv form - Copie.xlsm
    104.9 KB · Affichages: 54

jp14

XLDnaute Barbatruc
Re : Bug dans formatage des colonnes d'une Listview...

Bonjour

Un code à tester pour remplir les textbox
Code:
Private Sub ListView1_DblClick()

Index1 = ListView1.SelectedItem.Index
With ListView1.SelectedItem
'Ligne = Val(Replace(.Key, "k", ""))
    TextBox2 = .Text
    TextBox3 = .ListSubItems(1).Text
    TextBox4 = .ListSubItems(2).Text
    TextBox5 = .ListSubItems(3).Text
    TextBox6 = .ListSubItems(4).Text


End With
end sub


Le code ci dessous permet de transférer des textbox vers la listview
Code:
Private Sub CommandButton6_Click()
If index1 = 0 Then Exit Sub
With ListView1.ListItems(index1)
'Ligne = Val(Replace(.Key, "k", ""))
    .Text = TextBox2
    .ListSubItems(1).Text = TextBox3
    .ListSubItems(2).Text = TextBox4
    .ListSubItems(3).Text = TextBox5
    .ListSubItems(4).Text = TextBox6
End With
End Sub

Il faut mettre le code ci dessous en haut du module, ce qui permet lez passage de paramètres d'une procédure à l'autre
Code:
Dim index1 As Long
JP
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
1 K

Statistiques des forums

Discussions
311 734
Messages
2 082 020
Membres
101 872
dernier inscrit
Colin T