Userform suppression de ligne

  • Initiateur de la discussion Initiateur de la discussion aborsell
  • Date de début Date de début

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 !

aborsell

XLDnaute Nouveau
Bonjour à tous,

Je ne maîtrise pas bien VBA et la je bloque,

Je souhaite créer un userform qui s'ouvre lorsqu'on clique sur un bouton. Sur cet userform, on rentre le N° de la ligne que supprimer.
Jusque la ça va lol.

On clique sur ok et un autre userform nous demande si on est bien sûr de vouloir supprimer cette ligne (ok ou annuler).
Si ok la ligne en question est supprimée entièrement (pas uniquement le continu).

Je bloque sur ce point.

Si quelqu'un peut me venir en aide, je lui en serait très reconnaissant.

Merci
Adrien
 

Pièces jointes

Re : Userform suppression de ligne

Bonjour


Tu peux passer par un Msgbox à la plage de l'userform2, non ?

(Ton classeur s'en trouvera allégé)

EDITION: même suggestion que PascalXLD

Code:
Private Sub CommandButton1_Click()
Dim Ligne&, Sur
Ligne = TextBox1
Sur = MsgBox("Etes-vous sur de vouloir supprimer la ligne :" & Ligne & " ?", vbYesNo)
If Sur = vbYes Then
Cells(Ligne, 1).EntireRow.Delete
Me.Hide
Else
Exit Sub
End If
End Sub
 
Dernière édition:
Re : Userform suppression de ligne

Bonjour

tu peux mettre ceci sur le code de ton bouton sans avoir 2 UF

Code:
Private Sub CommandButton1_Click()
If MsgBox("Etes vous sûr de supprimer cette ligne?", vbYesNo) = vbYes Then Rows(Val(TextBox1)).Delete
unload me
End Sub
 
Re : Userform suppression de ligne

ou bien encore

dans ton userform2

Private Sub CommandButton1_Click()

Rows(UserForm1.TextBox1.Value & ":" & UserForm1.TextBox1.Value).Select

Selection.Delete Shift:=xlUp
End Sub

Re

Tu n'es pas obligé de passer par un select. Regardes mon code et tu verras. C'est beaucoup plus pratique et rapide et c'est une bonne habitude à prendre d'oublier les select
 
Re : Userform suppression de ligne

Yes !!

Merci beaucoup à vous tous !! Quelle efficacité !!

Je souhaiterais juste rajouter un message d'erreur "entrez un N° de ligne !!" sur on clique sur ok sans avoir mis de N°.

J'essaye mais j'y arrive po lol..

Un chti coup de pouce SVP ???

Merci
Adrien
 
Re : Userform suppression de ligne

RE

modifies ainsi, j'ai rajouter le cas ou quelqu'un met une lettre ou autre

Code:
Private Sub CommandButton1_Click()
On Error GoTo erreur
If TextBox1 = "" Then
MsgBox ("Merci d'indiquer une ligne")
Exit Sub
End If
If MsgBox("Etes vous sûr de supprimer cette ligne?", vbYesNo) = vbYes Then Rows(Val(TextBox1)).Delete
Unload Me
Exit Sub
erreur:
MsgBox ("Il faut indiquer un nombre pour une ligne.")

End Sub
 
Bonjour,
Par principe on fait une nouvelle discussion, néanmoins on peut faire référence à celle-ci.
Comme vous êtes nouveau voici une solution mais sans userform, uniquement une boite de dialogue.
VB:
Private Sub CommandButton1_Click()
    Dim nbLignesAsupprimer As Integer
    
    ' Afficher une boîte de dialogue pour demander le nombre de lignes à supprimer
    nbLignesAsupprimer = InputBox("Entrez le nombre de lignes à supprimer (entre 0 et 23) :", "Suppression de lignes")
    
    ' Vérifier si l'utilisateur a entré une valeur numérique valide
    If IsNumeric(nbLignesAsupprimer) Then
        If nbLignesAsupprimer >= 0 And nbLignesAsupprimer <= 23 Then
            ' Décaler la plage à supprimer pour éviter les erreurs lors de la suppression
            Range("50:74").Offset(nbLignesAsupprimer).Delete Shift:=xlUp
            MsgBox "Les lignes ont été supprimées avec succès."
        Else
            MsgBox "Veuillez entrer un nombre entre 0 et 23."
        End If
    Else
        MsgBox "Veuillez entrer un nombre valide."
    End If
End Sub
 
Bonsoir Gérardraclette., piga25,

Le problème est mal posé, on ne sait pas où commencent les lignes et si elles sont jointives.

Néanmoins voici une solution, qui fonctionne dans tous les cas de figure :
VB:
Sub Supp()
Dim x, s, i
x = Application.InputBox("Lignes à supprimer, exemple ""2:10 15:20"" :")
s = Split(x)
For i = UBound(s) To 0 Step -1
    If TypeName(Evaluate(s(i))) = "Range" Then Evaluate(s(i)).EntireRow.Delete
Next
End Sub
A+
 
Ceci est mieux :
VB:
Sub Supp()
Dim x, s, i, P As Range
x = Application.InputBox("Lignes à supprimer, exemple ""2:10 15:20"" :")
s = Split(x)
For i = 0 To UBound(s)
    If TypeName(Evaluate(s(i))) = "Range" Then Set P = Union(IIf(P Is Nothing, Evaluate(s(i)), P), Evaluate(s(i)))
Next
If Not P Is Nothing Then P.EntireRow.Delete
End Sub
 
- 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
38
Affichages
889
Réponses
3
Affichages
653
Retour