Supprimer lignes qui contiennent la valeur de la cellule sélectionnée

Bonjour

Faudrait que je vois le fichier pour regarder mais le code s'arrête à quelle ligne ?

A priori je dirai de d'abord vérifier ceci :
- Les nom de feuilles sont toujours bien Feuil3 et Feuil5
- Dans le gestionnaire de noms on trouve toujours bien les nom TAB + Nom de la feuille3 et TAB + nom de la feuille5

Edit : cela se passe quand l'entree et la sortie sont à 0 dans la feuille stock ?

Bonjour,

La ligne qui pose problème est indiquée dans le module1.

Les noms de feuilles sont restées inchangées tout comme le nom des tableaux.

En effet, le problème se reproduit également même si un mouvement existe sur le code à supprimer. Je ne pense pourtant pas avoir changé quoi que ça soit depuis la dernière fois.

Voici le fichier, (et le mdp de protection est toujours "stock" si jamais)

12stock.zip (506.40 Ko)

Bonjour

Effectivement et c'est logique car vous n'avez pas de données dans la feuille ENTREE et SORTIE

Vu que le code de l'article choisi n'existe pas dans les deux feuilles, cela vous renvoie une erreur

Juste avant la ligne qui fait défaut, mettez cette ligne :

On Error Resume Next

refaites quelques tests

Cordialement

S'il n'y pas de mouvements dans les feuilles ENTREE et SORTIE sur le code à supprimer, pas de problème mais si je tente de supprimer un code qui a des mouvements alors Excel plante.

pas de problème mais si je tente de supprimer un code qui a des mouvements alors Excel plante.

Avec l'instruction que vous ai donnée ??? Dans votre fichier posté c'est impossible
Vous avez bien cela avant le SET C = ...... ?
Autre question : quand vous supprimez, vous le faites depuis la feuille Stock et en sélectionnant la ligne à supprimer au préalable ?

Sinon donnez moi un exemple concret car je ne vois pas là

J'ai essayé à nouveau plusieurs fois mais je confirme que Excel ne répond plus.

J'ai donc cela

Do

On Error Resume Next

 Set c = .DataBodyRange.Find(code, LookIn:=xlValues)
                    If Not c Is Nothing Then

Oui, je suis sur la feuille stock, je sélectionne le code que je souhaite supprimer du tableau, ensuite je supprime avec la "poubelle". Si le code que je veux supprimer n'a pas d'entrées et de sorties tout va bien. Mais si je souhaite supprimer un code qui a une entrée, une sortie ou les deux, ça plante.

EDIT: Voici ce que j'avais avant sans mettre On Error Resume Next

Et j'ajoute que ça me mettait l'erreur mais que le code était tout de même supprimé.

capture capture2

Re

Remplacer tout le code par celui ci-dessous

Sub supprimer_ligne_produit_stock()
Dim code As String
Dim lo As ListObject, lr As ListRow, lRowInTable As Long

Application.ScreenUpdating = False
If Not ActiveCell.ListObject Is Nothing Then
    msg = "Supprimer le code suivant : " & Range("H" & ActiveCell.Row) & " ?"
    Style = vbYesNo + vbCritical + vbDefaultButton2
    Title = "Suppression"
    Response = MsgBox(msg, Style, Title)
    If Response = vbYes Then

        Set lo = ActiveCell.ListObject
        lRowInTable = ActiveCell.Row - lo.HeaderRowRange.Row
        code = lo.DataBodyRange.Item(lRowInTable, 7)
        Set lr = lo.ListRows(lRowInTable)
        lr.Range.Delete

        Dim c As Range
        Dim j As Long
        Dim Feuille
        Dim i As Byte, col As Byte

        Feuille = Array(Feuil3, Feuil5)

        For i = 0 To UBound(Feuille)
            With Feuille(i).ListObjects("TAB" & Feuille(i).Name)
                Feuille(i).Unprotect PSW

                Select Case i
                    Case Is = 0: col = 7
                    Case Is = 1: col = 5
                End Select

                For j = .ListRows.Count To 1 Step -1
                    If .DataBodyRange.Item(j, col).Value = code Then .ListRows(j).Range.Delete
                Next j

                Feuille(i).Protect PSW
            End With
        Next i
    End If
End If
Application.ScreenUpdating = True
End Sub

Crdlt

Bonjour Dan,

Cela a l'air de fonctionner.

Merci à toi !

Rechercher des sujets similaires à "supprimer lignes qui contiennent valeur selectionnee"