Copie ligne listview avec checkbox

bonsoir a tous

en faite ,j'ai une listview avec checkbox.

en cochant une checkbox,je copie la ligne dans une cellule (B31 dans mon exemple) de la feuil1.ça c'est OK.

Mon souci est de pouvoir cocher plusieurs checkbox et de les copier les uns à la suite des autres ...

Et en déchochant la checkbox, supprimer la ligne copiée correspondante de la feuille.

Private Sub ListView2_ItemCheck(ByVal Item As MSComctlLib.ListItem)
Dim J As Integer
Dim I As Integer
If Item.Checked = True Then
            Item.ForeColor = RGB(0, 0, 255) 'Changement couleur
            Item.Bold = True 'Gras
            For J = 1 To Item.ListSubItems.Count
                Item.ListSubItems(J).ForeColor = RGB(0, 0, 255)
                Item.ListSubItems(J).Bold = True
                For I = 1 To ListView2.ListItems.Count
    With Sheets("feuil1")
         .Cells(31, 2) = "Réf:"
         .Cells(31, 3) = ListView2.ListItems(I).ListSubItems(1).Text
         .Cells(31, 6) = "NB pièces:"
         .Cells(31, 7) = ListView2.ListItems(I).ListSubItems(7).Text
   End With

            Next I
            Next J
        Else
            Item.ForeColor = RGB(1, 0, 0) 'Changement couleur
            Item.Bold = False

            For J = 1 To Item.ListSubItems.Count
                Item.ListSubItems(J).ForeColor = RGB(1, 0, 0)
                Item.ListSubItems(J).Bold = False
                For I = 1 To ListView2.ListItems.Count
     With Sheets("feuil1")
          .Cells(31, 2) = ""
          .Cells(31, 3) = ""
          .Cells(31, 6) = ""
          .Cells(31, 7) = ""
    End With
            Next I
            Next J
    End If

End Sub

j'ai bien essayé plusieur code de ce style

Dim lig as long
lig = Sheets("feuil1").[B65000].End(xlUp).Offset(31, 0).Row

mais pas très concluant...

j'éspère avoir été assez claire et que vous pourrez m'aider...

merci

Bonjour

Un question

Tu copies la ligne quand le Checkbox est sélectionné et tu l'enlèves si tu dé-sélectionnes le CheckBox

regnum a écrit :

en cochant une checkbox,je copie la ligne dans une cellule

regnum a écrit :

Et en déchochant la checkbox, supprimer la ligne copiée correspondante de la feuille.

On gagnerait du temps à ne pas le faire

Mais de toute façons joins un fichier, cela nous évitera d'en reconstruire un

Bonne nuit

bonjours a tous

merci banzai64 pour ta réponce et oui un fichier serais plus explicite.

je posterais un fichier quand je pourrais.

pour des raisons personnels je ne pourrais pas venir sur le site pendant quelque temps.

je poursuiverais le fil un peu plus tard

merci A+

bonjour a tous

je reviens sur mon sujet avec un peu plus d'explication et un fichie joint.

j'ai une listview qui se remplie par une Combobox. (checkboxs = true pour la listview)

en cochant les checkboxs ,je copie la ligne cochée en B31 de la feuille "FAX".

le problème est que mon programme ne fonctionne pas très bien,en faite je copie toujour la premiere ligne de la listview et pas sur la bonne feuille...je ne comprends pas pourquoi!!!!

merci d'avance

140classeur1.zip (29.84 Ko)

Bonjour

Un essai

bonjour

merci banzai64 pour ta réponse.En effet ça fonctionne mieux comme ça.

mais il me reste un point ,donc j'ai modifier le code pour copier les lignes cocher a partir de la cellule A31.

le soucie est que par exemple quand je coche les lignes 1 & 3 de la listview ,elles se copient dans la cellule A31 & A33 donc il y a une cellule vide et il ne faudrais pas..

il faudrais qu'elle se copie les une après les autres...ET JE PECHE:(((((

merci

Bonjour

A tester

bonsoir

merci beaucoup banzai64 ,ça fonctionne impec..

par-contre ,je pourrais avoir des explications sur le code

Dim Lg As Long
Dim I As Integer

  With Sheets("FAX")
    Lg = 31
    .Range("A31:G40").ClearContents
    For I = 1 To ListView1.ListItems.Count
      If ListView1.ListItems(I).Checked = True Then
        .Cells(Lg, 2) = "réf:"
        .Cells(Lg, 3) = ListView1.ListItems(I)
        .Cells(Lg, 6) = "NB pièces"
        .Cells(Lg, 7) = ListView1.ListItems(I).SubItems(4)
        Lg = Lg + 1
      End If
    Next I
  End With

j'ai un peux de mal à comprendre ....

merci

Bonsoir

Quelques explications

Dim Lg As Long    ' Numéro de ligne
Dim I As Integer  ' Numéro d'index de la ListView

  ' Travaille avec la feuille FAX
  With Sheets("FAX")
    ' Numéro de ligne début
    Lg = 31
    ' On efface la zone réception
    .Range("A31:G40").ClearContents
    ' Parcours de toute la ListView
    For I = 1 To ListView1.ListItems.Count
      ' Teste si la CheckBox est cochée
      If ListView1.ListItems(I).Checked = True Then
        ' Si oui on écrit les éléments de la ListView
        .Cells(Lg, 2) = "réf:"
        .Cells(Lg, 3) = ListView1.ListItems(I)
        .Cells(Lg, 6) = "NB pièces"
        .Cells(Lg, 7) = ListView1.ListItems(I).SubItems(4)
        ' Ligne suivante
        Lg = Lg + 1
      ' Fin de la condition si ChekBox est cochée
      End If
    ' Prochain élément de la ListView
    Next I
    ' Fin de travail avec la feuille FAX
  End With

rebonsoir

merci pour tes explications , je comprends mieux.

j'adapte a mon fichier d'origine et te tiens au courant...

merci banzai64

bonsoir

banzai64 ,le fichier roule à merveille.

merci problème resolu

Rechercher des sujets similaires à "copie ligne listview checkbox"