Pb erreur 1004

Résolu
fab -  
HugoHerbomez Messages postés 59 Statut Membre -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  2. fab
     
    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
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
      0
      1. fab > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        Merci pour m'avoir aidé. Pb résolu avec (.Range("A" & i).EntireRow.Delete)
        Merci encore
        0
  3. HugoHerbomez Messages postés 59 Statut Membre 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
    0
  4. HugoHerbomez Messages postés 59 Statut Membre 2
     
    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 ;)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fab
     
    Parfait,

    Mille merci ça à marché avec (.Range("A" & i).EntireRow.Delete)
    Le Top du Top
    Merci beaucoup;)
    0
    1. HugoHerbomez Messages postés 59 Statut Membre 2
       
      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
      0