Efface une ligne d'un tableau à partir d'un listbox

Bonjour à vous,

Je fais appel à vos connaissance encore une fois.
Dans un userform j'ai une listbox et un bouton supprimer
Je souhaite...
je sélectionne une ligne dans mon listbox,
j'appuie sur le bouton supprimer,
ça efface la ligne du tableau correspondant à la sélection dans la listbox

voici mon code.... mais ça efface la mauvaise ligne de mon tableau... ou est mon erreur ????

Private Sub BT_SuprimeNote_Click()
    Dim NumLig As Long
    Dim mes As Integer

        mes = MsgBox("Vous êtes sur le point de supprimer une note. Voulez vous continuez", vbExclamation + vbYesNo)
    If mes = vbNo Then

    Exit Sub

    Else
        NumLig = Me.ListBox_Note.ListIndex
        ListBox_Note.RemoveItem (ListBox_Note.ListIndex)
        Sheets("NOTE").Rows(NumLig).EntireRow.Delete
    End If
End Sub

Bonjour Mtek,

Erreur de débutant

ListIndex d'une ListBox commence à 0, ce qui n'est pas le cas des lignes, il faut donc ajouter 1

En revanche j'espère que votre ListBox utilise RowSource pour récupérer les lignes

@+

@BrunoM45 merci pour la réponse, mais je ne sais pas comment l'appliquer... j'ai mis 1 et +1 un peu partout, mais ça efface la mauvaise ligne dans mon tableau

Re,

@Bruno45

Je met un fichier exemple en pièce jointe.... je souhaite supprimer une note (bouton supprimer une note)...

3service21.xlsm (56.33 Ko)

Bonjour Mtek,

Voilà avec le fichier, c'est nettement plus compréhensible

Il faut modifier ta Sub pour ajouter le numéro de ligne de la note en colonne 5 (invisible)

Sub AfficheNote()
  Dim Lbx As MSForms.ListBox
  ' Définir l'objet sur lequel on va travailler
  Set Lbx = UF_Photographie.ListBox_Note
  'Lbx.ColumnCount = 4
  Lbx.ColumnCount = 5
  Lbx.ColumnHeads = False
  Lbx.ColumnWidths = "60;362;50;25"
  Lbx.Font.Size = 8
  Lbx.Clear
  Set c = Range("a:a").Find(UF_Photographie.TB_NoDossier.Value, LookIn:=xlValues)
  If Not c Is Nothing Then
    premier = c.Address
    i = 0
    Do
      Lbx.AddItem
      Lbx.List(i, 0) = c.Offset(0, 4).Value
      Lbx.List(i, 1) = c.Offset(0, 5).Value
      Lbx.List(i, 2) = c.Offset(0, 6).Value
      Lbx.List(i, 3) = Format(c.Offset(0, 7), "hh:mm")
      Lbx.List(i, 4) = c.Row                     ' Inscrire le numéro de ligne colonne 5
      Set c = Range("a:a").FindNext(c)
      i = i + 1
    Loop While Not c Is Nothing And c.Address <> premier
  End If
End Sub

Dans ton bouton, tu récupères ce numéro de ligne pour supprimer la bonne

Private Sub BT_SuprimeNote_Click()
  Dim Ind As Integer, NumLig As Long
  Dim mes As Integer

  mes = MsgBox("Vous êtes sur le point de supprimer une note. Voulez vous continuez", vbExclamation + vbYesNo)
  If mes = vbNo Then Exit Sub
  ' Sinon
  Ind = Me.ListBox_Note.ListIndex
  NumLig = Me.ListBox_Note.List(Ind, 4)
  Sheets("NOTE").Rows(NumLig).EntireRow.Delete
  ListBox_Note.RemoveItem (Ind)
End Sub

Voilà @+

@BrunoM45 un immense merci, je teste ça des que j'arrive au bureau.

@BrunoM45

J'ai testé et ça fonctionne superbement bien :-)

Merci d'avoir pris le temps de m'aider, c'est vraiment apprécié
Rechercher des sujets similaires à "efface ligne tableau partir listbox"