Userform suppression de ligne

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

  • supligne.xls
    47.5 KB · Affichages: 196
  • supligne.xls
    47.5 KB · Affichages: 230
  • supligne.xls
    47.5 KB · Affichages: 236

vbacrumble

XLDnaute Accro
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:

PascalXLD

XLDnaute Barbatruc
Modérateur
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
 

tanerbus

XLDnaute Nouveau
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
 

Pièces jointes

  • suplignemodif.xls
    48 KB · Affichages: 343

PascalXLD

XLDnaute Barbatruc
Modérateur
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
 

aborsell

XLDnaute Nouveau
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
 

PascalXLD

XLDnaute Barbatruc
Modérateur
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
 

piga25

XLDnaute Barbatruc
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
 

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
2
Affichages
299

Statistiques des forums

Discussions
314 669
Messages
2 111 755
Membres
111 286
dernier inscrit
kr1997