Editer des cellules d'une listbox en VBA

Editer des cellules d'une listbox en VBA - VB/VBA/VBS - Programmation

Marsh Posté le 04-06-2008 à 10:35:19    

Bonjour,
 
Aucune piste, donc je viens vers vous pour tenter de trouver une sorte de bricolage qui me permette de modifier la valeur d'une "cellule" de la listbox.
 
Description :
J'ai une listbox avec 2 colonnes, et un bouton Ajouter
J'ai une feuille excel avec des données de ce genre :
ColonneG                          ColonneH
 
Nom de l'opération 1           140.554
Nom deux                         198.658
Nom 3 de l'opération           96
Huitième opération             303.4
 
Je clique sur l'opération qui m'intéresse dans la feuille Excel, puis sur le bouton Ajouter de mon userform. Ca m'ajoute le nom de l'opération dans la listbox colonne1 et le temps associé dans la listbox colonne2. Voici le code pour ajouter cette opération :
 

Code :
  1. Private Sub btnAjouter_Click()
  2. Dim R As Integer, temp As String, val As String
  3.     ListBox1.ColumnCount = 2                'Initialisation de la listbox
  4.     ListBox1.ColumnWidths = "10 cm;2 cm"
  5.    
  6.     R = ActiveCell.Row                      'Garde en mémoire la ligne qui m'intéresse
  7.     If Cells(R, 7) = "" Then Exit Sub
  8.     ListBox1.AddItem Cells(R, 7).Value     'Ajout dans la listbox colonne 1 la valeur de la cellule active
  9.     ListBox1.List(ListBox1.ListCount - 1, 1) = Replace(Cells(R, 8).Value, ",", "." )          'Ajout dans la listbox colonne 2, la cellule à droite de ma cellule active.
  10. End Sub


 
Idéalement :
ce que je voudrais, c'est de pouvoir éditer certaines valeurs de la listbox (on touche pas aux valeurs d'origine de la feuille excel)
Exple de valeurs de ma listbox :
Nom de l'opération 1           140.554
Nom 3 de l'opération           96
 
Exple de modif que je veux apporter dans la listbox :
Nom de l'opé1                 140
Nom 3 de l'opé                100
 
Par avance, merci à ceux qui consacreront du temps à ce post !


Message édité par Silarion le 04-06-2008 à 10:36:33
Reply

Marsh Posté le 04-06-2008 à 10:35:19   

Reply

Marsh Posté le 04-06-2008 à 15:22:16    

Peut être une piste si ça peut faire rebondir un développeur. Je ne sais pas encore comment le programmer mais je vais réfléchir dessus.
 
1) Copier dans un textbox la ligne sélectionnée dans la listbox1.  (mais en le faisant pour les 2colonnes donc 2textbox)
2) List1.List(i-1) = textbox.value   '(Mais bon le souci c'est que j'ai deux colonnes ds la listbox)
 
Ou alors un truc du genre
1) Copier la ligne
2) Supprimer l'élément de liste avec list1.RemoveItem i-1
3) Modifier les valeurs (comment faire par contre ...)
4) Ajouter l'élément Modifié à la meme place avec un list1.AddItem élément,i-1

Reply

Marsh Posté le 04-06-2008 à 15:58:09    

J'ai trouvé à force d'essai, j'ai contourné le souci en faisant apparaitre un userform avec deux textbox hehe.
Je modifie les textbox et je mets à jour ma listbox sur l'autre userform.
 

Code :
  1. Private Sub btnEdit_Click()
  2. If ListBox1.ListCount >= 1 Then         'On s'assure que la listbox contient des lignes
  3.     If ListBox1.ListIndex = -1 Then     'Si aucune sélection, on choisit la dernière ligne
  4.         ListBox1.ListIndex = ListBox1.ListCount - 1
  5.     End If
  6. End If
  7.     UserForm2.TextBox1 = UserForm1.ListBox1.List(ListBox1.ListIndex, 0)
  8.     UserForm2.TextBox2 = UserForm1.ListBox1.List(ListBox1.ListIndex, 1)
  9.     UserForm2.Show
  10. End Sub
  11. Private Sub btnModifier_Click()
  12. UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex, 0) = UserForm2.TextBox1.Value
  13. UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex, 1) = UserForm2.TextBox2.Value
  14. UserForm2.Hide
  15. End Sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed