[VBA] Problème suppresion de lignes

antoine04

XLDnaute Nouveau
Bonjour,

Voici mon problème :
J'aimerai que lorsque le nom qui a été choisi dans l'userform à été trouvé dans ma feuille "Fournisseur" (nom des fournisseur dans la colonne B), il supprime toute la ligne.
Mais je tourne en rond, pourtant je suis certain que cela ne dois pas être compliqué, mais c'est la première fois que je me lance dans la suppression de ligne par macro ^^

Merci d'avance pour votre aide à venir.

----------------------------------------------------
Sub ....
nom = Commande_autres.liste_fournisseur.Value

Sheets("Fournisseur").Select
Range("B25").Select
' Lance une boucle jusqu'à trouver une ligne vide
While ActiveCell.Value <> ""
If ActiveCell.Value = nom Then
ActiveCell.EntireRow.Delete Shift:=xlUp

Else
MsgBox ("Pas de commande à ce nom")
End If

Wend
End Sub
------------------------------------------------------
 

antoine04

XLDnaute Nouveau
Re : [VBA] Problème suppresion de lignes

Correction de mon code mais il marche toujours pas et plante mon excel...

Sub sup_fourni()

nom = Commande_autres.liste_fournisseur.Value

Sheets("Fournisseur").Select
Range("B25").Select

' Lance une boucle jusqu'à trouver une ligne vide
While ActiveCell.Value <> ""
If ActiveCell.Value = nom Then
ActiveCell.EntireRow.Delete Shift:=xlUp

End If
Wend

End Sub
 

Odesta

XLDnaute Impliqué
Re : [VBA] Problème suppresion de lignes

Bonjour antoine04

Les lignes à supprimer sont après la ligne 25, et le nom à comparer est en colonne B ?

Car dans votre code, ActiveCell n'est jamais changé autrement que lors de la suppression de la ligne.

Je préconiserai de ne pas l'utiliser, mais plutot Cells(ligne, 2).Value (dans le IF), puis, après le Then :
Rows(Ligne).delete Shift;=xlUp
Suivi d'un
Else
ligne = ligne + 1
 

antoine04

XLDnaute Nouveau
Re : [VBA] Problème suppresion de lignes

En faite j'ai les noms de mes fournisseurs à partir de B25 (de B25 à B52).
L'userform reprend tous les noms des fournisseurs par une listbox et j'ai créé un bouton "supprimer". Si une personne selectionne le fournisseur X dans cette listbox et clic sur "supprimer", j'aimerai que la ligne du fournisseur soit entièrement supprimée.

j'espère avoir été plus clair.

Sinon pour ta solution, sauf erreur de ma part, cela ne peut pas marcher pour mon cas. Bah je crois...
 

Efgé

XLDnaute Barbatruc
Re : [VBA] Problème suppresion de lignes

Bonjour antoine04, Odesta,
Quand on supprime des lignes il faut commencer par le bas.
Par contre pouvez vous nous dire à quoi correspond Commande_autres.liste_fournisseur. Le . ne me plait qu'à moitier :rolleyes:
Un essai quand même:
Code:
Sub sup_fourni()
Dim Nom As String
Nom = Commande_autres.liste_fournisseur.Value
For i = Sheets("Fournisseur").Range("B" & Application.Rows.Count).End(xlUp).Row To 25 Step -1
    If Cells(i, 2).Value = Nom Then
        Cells(i, 2).EntireRow.Delete Shift:=xlUp
    End If
Next i
End Sub
Si ça ne va pas il serait mieux de poster un fichier exemple
Cordialement
 

antoine04

XLDnaute Nouveau
Re : [VBA] Problème suppresion de lignes

Merci de vos réponse, mais cela ne marche toujours pas.

Je viens de faire le fichier exemple.

Je reste présent pour toute question.

Merci d'avance à tous pour votre aide.

EDIT : Ne pas toucher au bouton supprimé, excel va bloquer sinon ^^ mon code étant faux
 

Pièces jointes

  • fichier.zip
    20.1 KB · Affichages: 37
  • fichier.zip
    20.1 KB · Affichages: 35
  • fichier.zip
    20.1 KB · Affichages: 41

antoine04

XLDnaute Nouveau
Re : [VBA] Problème suppresion de lignes

Par contre, il faut récupérer le 'nom' avec une commande .Selected sur la listview 'liste_fournisseur'
Et donc, il faut déclarer Nom comme Public

Merci pour ta réponse.
En revanche, je ne comprend pas grand chose à ce que tu me demande de faire malheureusement. Je suis pas super fort en VB, je me débrouille, mais sans plus.
 

Efgé

XLDnaute Barbatruc
Re : [VBA] Problème suppresion de lignes

Re
Mettez tout ces codes à la place des votres dans le module:
Pour récupérer le "Nom" dans toutes les macros:
Code:
Public Nom
Pour remédier à votre problème de nombre de ligne dans votre Box:
Code:
Sub fourni()
Commande_autres.liste_fournisseur.RowSource = "Fournisseur!B25:B" & Sheets("Fournisseur").Range("B" & Application.Rows.Count).End(xlUp).Row
Commande_autres.Show
End Sub
Pour supprimer la ligne correspondante à votre fournisseur:
Code:
Sub sup_fourni()
Application.ScreenUpdating = False
Nom = Commande_autres.liste_fournisseur.Value
With Sheets("Fournisseur")
   .Visible = True
    For i = .Range("B" & Application.Rows.Count).End(xlUp).Row + 1 To 25 Step -1
        If .Cells(i, 2).Value = Nom Then
            .Cells(i, 2).EntireRow.Delete Shift:=xlUp
        End If
    Next i
End With
Application.ScreenUpdating = True
End Sub
Cordialement
 

Fo_rum

XLDnaute Accro
Re : [VBA] Problème suppresion de lignes

Salut

peut-être ainsi (avec to genre de boucle),
Code:
Sub sup_fourni()
  Dim Nom As String, i as Long
  Nom = Commande_autres.liste_fournisseur.Value
  i = 25
  With Sheets("Fournisseur")
    Do
      If .Cells(i, 2).Value = Nom Then
        .Cells(i, 1).EntireRow.Delete Shift:=xlUp
        Exit Do
      Else
        i = i + 1
      End If
    Loop
  End With
End Sub

Pour ma part, je préfère écrire les codes concernant un Userform dans son module !
 

Pièces jointes

  • UsFSuppressionLigne.xls
    26.5 KB · Affichages: 61

antoine04

XLDnaute Nouveau
Re : [VBA] Problème suppresion de lignes

Un énorme merci à vous

Vous êtes rapide, aimable et de très bonne aide.

Encore une fois merci :)

Antoine

EDIT : Elle est très pratique votre astuce pour le nombre de lignes des Box.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 300
Messages
2 087 018
Membres
103 433
dernier inscrit
nicolaseuropa