Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

PB dans macro suppression ligne

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jeff1494

XLDnaute Occasionnel
Bonsoir à tous;
Je butte sur la macro suivante. Le but est de supprimer une ligne d'une feuille suivant le résultat d'un choix dans une combbox d'un userform.
Dans le Userform je récupère la désignation d'un produit et c'est avec cette base que je cherche à atteindre la ligne correspondante dans la feuille nommée "STOCK".

Voici le code :
Private Sub SUPP_Click()
' Suppression d'une ligne complète correspondant à la demande de suppression
' Affichage d'une MsgBox avec les valeur de la description du produit à supprimer
' Si réponse = NON alors arrêt procédure.
' Si réponse = OUI alors suppression de la ligne produit
'
Dim Retour As Integer
Retour = MsgBox("Attention vous allez supprimer le produit suivant : " & ComboBox2.Text & " ", vbYesNo, "Suppression produit")
If Retour = vbYes Then
' Recherche de la ligne contenant la description sélectionnée
' Puis sélection de la ligne correspondante, et enfin suppression de cette fameuse ligne
For Each Cel1 In Sheets("Stock").Range("A5:A400")
If Cel1 = Me.ComboBox2.Value Then
Cel1.Select
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
End If
Next Cel1
End If
' Déchargement du Userform
Unload MajProd
End Sub

Je n'arrive pas à sélectionner la ligne dont la cellule A correspond au contenu de ma ComboBox. J'ai systématiquement une erreur 1004, sur la ligne "Cel1.Select".
Désolé si c'est une question idiote, mais je débute en VBA 🙁 🙄.
Y aurait-il quelqu'un pour me sortir de ce mauvais pas. N'hésitez pas si vous avez besoin d'autres renseignements.
En attendant je vous souhaite à tous une très bonne et heureuse année 2009.
 
Re : PB dans macro suppression ligne

Bonsoir,

Aurais-tu déclarer Cel1, dans une procédure autre?

Edit, ou plutôt, ton usf ne serait pas en ShowModal = False?

Edit2 :

essaie ainsi :

Code:
Private Sub SUPP_Click()
' Suppression d'une ligne complète correspondant à la demande de suppression
' Affichage d'une MsgBox avec les valeur de la description du produit à supprimer
' Si réponse = NON alors arrêt procédure.
' Si réponse = OUI alors suppression de la ligne produit
'
Dim Retour As Integer
Retour = MsgBox("Attention vous allez supprimer le produit suivant : " & ComboBox2.Text & " ", vbYesNo, "Suppression produit")
If Retour = vbYes Then
' Recherche de la ligne contenant la description sélectionnée
' Puis sélection de la ligne correspondante, et enfin suppression de cette fameuse ligne
With Sheets("Stock").Range("A5:A400")
    lig = Application.Match(Me.ComboBox2, .Range("A5:A400")) + 4
    .Cells(lig, 1).EntireRow.Delete
End With
End If
' Déchargement du Userform
Unload MajProd
End Sub
 
Dernière édition:
Re : PB dans macro suppression ligne

Bonsoir bhbh et Roland_M;
Merci pour vos réponses.
@bhbh : Non Cel1 n'est pas déclaré dans une autre procédure. A vrai dire je pensais que le fait de dire Cel1 était compris comme étant la 1ère cellule de la ligne. Le ShowModal est à TRUE.

@Roland : J'ai fait les modifs comme tu les indique, mais rien n'y fait j'ai toujours le même message. La méthode Select de la classe range a échoué.

En tous cas merci pour votre attention.
 
Re : PB dans macro suppression ligne

@bhbh :
J'ai essayé ton code mais cela ne donne rien, la ligne n'est pas supprimée.
Si tu veux je peux poster mon fichier en omettant tout ce qui ne sert pas.
N'hésites pas, mais donne moi juste le temps de faire le ménage.
Encore merci.
 
Re : PB dans macro suppression ligne

Re,

scuse, une nouvelle fois....

Il est tout à fait normal que mon code proposé ne fonctionne pas.....

rectifie ainsi :

Code:
Private Sub SUPP_Click()
' Suppression d'une ligne complète correspondant à la demande de suppression
' Affichage d'une MsgBox avec les valeur de la description du produit à supprimer
' Si réponse = NON alors arrêt procédure.
' Si réponse = OUI alors suppression de la ligne produit
'
Dim Retour As Integer
Retour = MsgBox("Attention vous allez supprimer le produit suivant : " & ComboBox2.Text & " ", vbYesNo, "Suppression produit")
If Retour = vbYes Then
' Recherche de la ligne contenant la description sélectionnée
' Puis sélection de la ligne correspondante, et enfin suppression de cette fameuse ligne
With Sheets("Stock")
    With .Range("A5:A400")
        lig = Application.Match(Me.ComboBox2, .Range("A5:A400")) + 4
    End With
    .Cells(lig, 1).EntireRow.Delete
End With
End If
' Déchargement du Userform
Unload MajProd
End Sub
 
Re : PB dans macro suppression ligne

@Roland : Je viens de faire la modif, mais pas de changement.

Je vais alléger mon fichier et faire une page d'explications. Je le poste dans quelques minutes. Je pense que cela sera plus facile pour vous.

J'ai des soucis car mon fichier xls reste malgré tout trop volumineux 98Ko.
 
Dernière édition:
Re : PB dans macro suppression ligne

@bhbh :
Je viens de tester ton code mais rien n'y fait. Toujours pas de résultat.
Comme dit plus haut mon fichier est trop gros pour pouvoir le mettre en pièce jointe 98Ko.
Là je ne sais pas comment faire.
 
Re : PB dans macro suppression ligne

Re,

Décidément, c'est pas mon soir.....

Code:
Private Sub SUPP_Click()
' Suppression d'une ligne complète correspondant à la demande de suppression
' Affichage d'une MsgBox avec les valeur de la description du produit à supprimer
' Si réponse = NON alors arrêt procédure.
' Si réponse = OUI alors suppression de la ligne produit
'
Dim Retour As Integer
Retour = MsgBox("Attention vous allez supprimer le produit suivant : " & ComboBox2.Text & " ", vbYesNo, "Suppression produit")
If Retour = vbYes Then
' Recherche de la ligne contenant la description sélectionnée
' Puis sélection de la ligne correspondante, et enfin suppression de cette fameuse ligne
With Sheets("Stock")
    lig = Application.Match(Me.ComboBox2, .Range("A5:A400")) + 4
    .Cells(lig, 1).EntireRow.Delete
End With
End If
' Déchargement du Userform
Unload MajProd
End Sub

Peut-être?

J'ai pas encore regardé ton fichier, si cela ne fonctionne pas, reviens!
 
Re : PB dans macro suppression ligne

@bhbh :
Non toujours pas.
J'ai un fichier qui est trop gros pour pouvoir le mettre en pièce jointe 98Ko, alors si tu as une autre formule pour te faire passer le fichier je suis preneur.

@Roland : Je me suis un peu perdu dans les différentes modifs. En appliquant correctement les tiennes, j'obtiens bien le résultat escompté, mais en fait la boucle continue et me supprime d'autres lignes vides dans la feuille STOCK.
Y-a-t-il un moyen de sortir de la boucle dès qu'il a trouvé et supprimé la ligne?
Encore merci à vous deux pour votre aide.
 
Re : PB dans macro suppression ligne

@bhbh et @Roland_M :
BINGO, j'ai grâce à vos conseils réussi a supprimer cette foutue ligne.

Je me suis basé sur les modifs indiquées par Roland_M.
En fait j'ai juste "sauvegardé" la valeur de ma combobox dans une variable Desc et testé l'égalité par rapport à cette variable et non pas à la valeur de la combobox. En effet il semblait que la valeur de la combobox était altérée après la première fois ou la valeur était trouvée.
En fait voici le code que j'utilise et qui semble fonctionner :

Private Sub SUPP_Click()

' Suppression d'une ligne complète correspondant à la demande de suppression
' Affichage d'une MsgBox avec les valeur de la description du produit à supprimer
' Si réponse = NON alors arrêt procédure.
' Si réponse = OUI alors suppression de la ligne produit
'MODIF DE ROLAND_M
Dim Retour As Variant, Cel1 As Range, Desc As String

Desc = Me.ComboBox2.Value
Retour = MsgBox("Attention vous allez supprimer le produit suivant : " & ComboBox2.Text & " ", vbYesNo, "Suppression produit")
If Retour = vbYes Then
' Recherche de la ligne contenant la description sélectionnée
' Puis sélection de la ligne correspondante, et enfin suppression de cette fameuse ligne
Sheets("Stock").Activate
For Each Cel1 In Sheets("Stock").Range("A5:A400")
If Cel1 = Desc Then
Cel1.Select
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
End If
Next Cel1
End If
' Déchargement du Userform
Unload MajProd

End Sub

Je vous remercie tous les deux pour votre aide.
Par contre j'aimerais comprendre ton code bhbh, car cela serait un plus pour moi d'apprendre à programmer.
Sur ce bonne année à tous les deux, et à bientôt sur le forum.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
688
Réponses
9
Affichages
677
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…