Pb erreur 1004

Résolu
Bonjour à tous,

Je rencontre ce pb et ne suis pas confirmé en vba!
Quelqu'un aurait une solution à ce problème?
J'ai un bouton avec cette macro qui me dirige vers Inputbox afin d'entrer la ligne à supprimer!
Et là : erreur d'execution '1004' : ( la methode delete de la classe range à échoué).
Je clic sur debogage et Rows(i).delete est en surbrillance jaune.

Procedure permettant la suppression
' d'un enregistrement d'une table à partir
' d'un numero ID

Sub supprimeID()

'Declaration des variable

Dim i As Integer
Dim SupprimeLigne As String

'Affectation des variables
SupprimeLigne = InputBox("Veuillez saisir la référence à supprimer", SUPPRESSION)

'On se positionne sur la feuille de la source de données
With ThisWorkbook.Sheets("SOURCE")


'Compte le nombre de ligne de la colonne C et tu remontes d'1 ligne

For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
'Si correspondance entre la reference et la ligne à supprimer ALORS
If Range("A" & i).Value = SupprimeLigne Then
Rows(i).Delete
'On supprime la ligne entière


Merci par avance

5 réponses

  1. Bonjour,

    Manque le point devant range et rows

    Sub supprimeID()
        'Declaration des variable
        Dim i As Integer
        Dim SupprimeLigne As String
    
        'Affectation des variables
        SupprimeLigne = InputBox("Veuillez saisir la référence à supprimer", SUPPRESSION)
    
        'On se positionne sur la feuille de la source de données
        With ThisWorkbook.Sheets("SOURCE")
            'Compte le nombre de ligne de la colonne C et tu remontes d'1 ligne
            For i = .Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
                'Si correspondance entre la reference et la ligne à supprimer ALORS
                If .Range("A" & i).Value = SupprimeLigne Then
                    .Rows(i).Delete
                End If
            Next i
        End With
    End Sub
    1. Bonjour et merci pour votre réponse.
      J'ai fait un copier coller du code que vous m'avez fourni.
      Toujours le même problème!
      auriez-vous une idée?

      Merci beaucoup
      1. Re,

        auriez-vous une idée?
        Sans votre fichier, pas vraiment ...
        Par contre, quand vous avez l'erreur, apres le clic sur debugage, passez le curseur souris sur les variables et objets pour voir leur contenu
      2. @f894009Merci pour m'avoir aidé. Pb résolu avec (.Range("A" & i).EntireRow.Delete)
        Merci encore
    2. Bonjour fab,

      As tu des restrictions, protection sur ta feuille?

      Sinon tu peux essayer :

      .Range("A" & i).EntireRow.Delete
      


      Après en commentaire tu dis que ça compte le nombre de ligne de la colonne C mais je ne vois pas où intervient la colonne :D
      1. Je viens de voir que ta variable était de type String ! Tu ne peux pas demander une égalité sur deux String comme cela, il faut utiliser la fonction StrComp. (Fin je pense que tu ne peux pas haha)

        Utilise ce code et arrange le pour que ça fonctionne !

        If StrComp(.Range("A" & i).Value, SupprimeLigne) = 0 Then
            .Range("A" & i).EntireRow.Delete
            'Ou sinon tu peux utiliser si ça ne fonctionne pas
            '.Rows(i).Delete
        End If
        


        Si '.Range("A" & i).Value' ne te renvoie pas une valeur de type String utilise la fonction CStr comme ceci :

        If StrComp(CStr(.Range("A" & i).Value), SupprimeLigne) = 0 Then
            .Range("A" & i).EntireRow.Delete
            'Ou sinon tu peux utiliser si ça ne fonctionne pas
            '.Rows(i).Delete
        End If
        


        Tiens moi au courant ;)
        1. Parfait,

          Mille merci ça à marché avec (.Range("A" & i).EntireRow.Delete)
          Le Top du Top
          Merci beaucoup;)
          1. Salut fab,

            Ce fut un plaisir haha

            Un petit '+' ferait plaisir et tu peux marquer le sujet comme étant résolu (en haut de la page)

            Bon courage