[Résolu par job75]Problème recherche avec Listview et suppression ligne de la feuille

Lone-wolf

XLDnaute Barbatruc
Bonjour le Forum,

le but de la macro suivante est de sélectionner un item dans la listview. De là, elle doit rechercher la ligne correspondante et la supprimer. Dans l'exemple j'ai mis un fond de couleur rouge pour test, sans résultat.

Code:
Private Sub CmdSup_Click()
Dim Dt As String, cel As Range, i As Integer

'MsgBox "Vous allez supprimer l'enregistrement.", , "MIMI"

For i = 1 To ListView1.ListItems.Count
Dt = ListView1.ListItems(i).ListSubItems(3).Text
    ListView1.ListItems(i).Selected = True
    With Sheets("Feuil1").Range("a3:g53")
    Set cel = .Find(Dt, , xlValues, xlWhole)
    If Not cel Is Nothing Then
    If cel.Offset(0, 3).Value = Dt Then cel.Offset(0, 3).Interior.Color = vbRed
    End If
        End With
Next
    'ListView1.ListItems.Remove (ListView1.SelectedItem.Index)
End Sub

Avant celà j'ai fais un test avec Msgbox = ListView1.ListItems(i).ListSubItems(3).Text, elle me donne bien le text, je ne comprends pas pourquoi je n'arrive pas à supprimer cette ligne.


A+ :cool:
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Problème recherche avec Listview et suppression ligne de la feuille

Bonjour grisan,

supprimer la ligne de la listview(avant dernière ligne de la macro), c'est une chose. Moi j'aimerais qu'elle me supprime la même ligne dans la feuille.




A+ :cool:
 

job75

XLDnaute Barbatruc
Re : Problème recherche avec Listview et suppression ligne de la feuille

Bonjour Lone-wolf, le forum,

Pas trop compris ce que tu fabriques avec ton cel.Offset(0, 3) tu recherches 2 fois Dt ???

A priori je supposerai que tu recherches Dt en colonne C.

De plus il est inutile de sélectionner la ligne de la ListView pour la supprimer :

Code:
Private Sub CmdSup_Click()
Dim i As Long, Dt As String, cel As Range
For i = 1 To ListView1.ListItems.Count
  Dt = ListView1.ListItems(i).ListSubItems(3).Text
  Set cel = Sheets("Feuil1").[C3:C53].Find(Dt, , xlValues, xlWhole)
  If Not cel Is Nothing Then
    ListView1.ListItems.Remove i
    cel.Interior.Color = vbRed
    Exit For
  End If
Next
End Sub
Enfin avec Application.Match la recherche est plus rapide qu'avec Find :

Code:
Private Sub CmdSup_Click()
Dim i&, x, j As Variant
With Sheets("Feuil1")
  For i = 1 To ListView1.ListItems.Count
    x = ListView1.ListItems(i).ListSubItems(3)
    j = Application.Match(x, .[C:C], 0)
    If IsNumeric(j) Then
      ListView1.ListItems.Remove i
      .Cells(j, 3).Interior.Color = vbRed
      Exit For
    End If
  Next
End With
End Sub
Bonne journée.
 

Lone-wolf

XLDnaute Barbatruc
Re : Problème recherche avec Listview et suppression ligne de la feuille

Re,

en prenant l'exemple de l'insertion d'une ligne dans la feuille et en modifiant comme ceci


Code:
Private Sub CmdSup_Click()
Dim i As Integer, j As Integer

    For i = 1 To ListView1.ListItems.Count
    ListView1.ListItems(i).Selected = True
        For j = 1 To ListView1.ColumnHeaders.Count - 1
          With Sheets("Feuil1")
            If .Cells(i, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text Then _
            .Cells(i, j + 1).Interior.Color = vbRed
            End With
        Next j
    Next i
End Sub

C'est toujours la même chose et ça m'énerve, aucun résultat.



A+ :cool:
 

job75

XLDnaute Barbatruc
Re : Problème recherche avec Listview et suppression ligne de la feuille

Re, salut grisan29 je ne t'avais pas vu,

supprimer la ligne de la listview(avant dernière ligne de la macro), c'est une chose. Moi j'aimerais qu'elle me supprime la même ligne dans la feuille.

Bon alors pourquoi tu colorais la cellule ???

Code:
Private Sub CmdSup_Click()
Dim i As Long, Dt As String, cel As Range
For i = 1 To ListView1.ListItems.Count
  Dt = ListView1.ListItems(i).ListSubItems(3).Text
  Set cel = Sheets("Feuil1").[C3:C53].Find(Dt, , xlValues, xlWhole)
  If Not cel Is Nothing Then
    ListView1.ListItems.Remove i
    cel(1, -1).Resize(, 7).Delete xlUp 'colonnes A à G
    Exit For
  End If
Next
End Sub
Code:
Private Sub CmdSup_Click()
Dim i&, x, j As Variant
With Sheets("Feuil1")
  For i = 1 To ListView1.ListItems.Count
    x = ListView1.ListItems(i).ListSubItems(3)
    j = Application.Match(x, .[C:C], 0)
    If IsNumeric(j) Then
      ListView1.ListItems.Remove i
      .Cells(j, 1).Resize(, 7).Delete xlUp 'colonnes A à G
      Exit For
    End If
  Next
End With
End Sub
A+
 

Lone-wolf

XLDnaute Barbatruc
Re : Problème recherche avec Listview et suppression ligne de la feuille

Bonjour job,

j'ai tester la macro avec Match 1, pas de résultat, et ça continue à m'enerver. :mad: C'est quand même pas croyable?! :confused:


Edit: on c'est croisés, j'ai mis un fond rouge juste pour tester. Je vais tester Match 2.

Edit 2: cette fois c'est ok. Il fallait mettre listsubitems(2) au lieu de 3, puisque ça part de 0.
C'était tout con, et il a fallut que je m'énerve.


Merci infiniment job.



A+ :cool:
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Problème recherche avec Listview et suppression ligne de la feuille

Re,

Tu pourrais être plus clair sur ce que tu veux chercher et .

Ça veut dire quoi Match 1 et Match 2 ???

Edit OK vu ton Edit 2 et puisque ça marche il fallait bien chercher en colonne C, merci ma boule de cristal :rolleyes:

Cela dit au post #1 tu avais testé .ListSubItems(3) :confused:

Avant celà j'ai fais un test avec Msgbox = ListView1.ListItems(i).ListSubItems(3).Text, elle me donne bien le text

A+
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : [Résolu par job75]Problème recherche avec Listview et suppression ligne de la fe

Re job,

désolé pour le + 1, c'est moi qui a mal selectionné la ligne de la listview. Et puisque tu es là, je ne comprends pas pourquoi quand je sélectionne la ligne la sélection(en bleu) s'arrête à la première colonne. Comment faire pour garder la sélection en bleu sur toute la ligne?


A+ :cool:
 

job75

XLDnaute Barbatruc
Re : [Résolu par job75]Problème recherche avec Listview et suppression ligne de la fe

Re enigme, champion,

La variable j n'a rien à voir avec la ListView :rolleyes:

Et tu la sélectionnes comment ta ligne dans la ListView ? On pourrait voir la macro ?

Cela dit je n'ai pas de contrôle ListView sur mon ordi...

A+

A+
 

job75

XLDnaute Barbatruc
Re : [Résolu par job75]Problème recherche avec Listview et suppression ligne de la fe

Re,

Peux-tu expliquer pourquoi tu sélectionnes ?

Si c'est pour supprimer la ligne sélectionnée ce n'est sûrement pas avec le bouton "CmdSup" objet de ce fil !!!

Maintenant pour sélectionner la ligne entière il me semble avoir vu qu'il faut aussi que la propriété View soit sur Details.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 092
Membres
103 116
dernier inscrit
kutobi87