Supprimer une ligne avec un bouton

Fermé
SOSO - 25 janv. 2017 à 10:32
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 7 févr. 2017 à 18:43
Bonjour,

Je sais que plusieurs sujets ont été créés à ce sujet mais je ne trouve pas comment faire ce que je souhaite.

Voila j'ai une base de donnée où la première colonne est un matricule. Je voudrais rattacher une macro à un bouton pour que lorsque l'on clique dessus un message apparaisse demandant "quel matricule supprimer ?" et que la ligne correspondant au matricule saisi soit effacée.

Comment faire ?

Merci d'avance pour votre aide
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
25 janv. 2017 à 15:23
Bonjour,

Pourquoi compliquer ?
Avec cette macro dans le code de la feuille et un double clic sur la ligne à supprimer, cela fonctionne.
Private Sub Worksheet_BeforeDoubleClick(ByVal sel As Range, Cancel As Boolean)
If vbYes = MsgBox("Voulez-vous supprimer " & sel.Value, vbYesNo, "Suppression matricule") Then
    Rows(sel.Row).Delete
End If
End Sub
0
Bonjour,

Merci pour votre réponse, effectivement ca pourrait marcher comme ca. Le soucis c'est que pour l'usage prévu de ce fichier il serait plus simple de procéder avec un bouton.
Ou bien alors peut être une case où on saisirait le matricule et ensuite un bouton supprimer ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
27 janv. 2017 à 19:01
Bonjour,

Si tu tiens à compliquer, tu crées un bouton avec ce code :
Private Sub CommandButton1_Click()
Dim rep As Variant, cel As Range
    rep = InputBox("Saisissez le matricule à supprimer", "Suppression matricule")
    If rep = "" Then Exit Sub
    Set cel = ActiveSheet.Columns(1).Find(rep, [A1], xlValues, xlWhole)
    If cel Is Nothing Then
        MsgBox "Matricule absent"
    Else
        Rows(cel.Row).Delete
        MsgBox "Matricule supprimé : " & rep
    End If
End Sub
0
Désolée pour le délais de réponse.
Ca a marché nickel, juste ce que je voulais, merci beaucoup
0
Oups j'ai parlé un peu vite. En fait il faudrait que la maccro efface la ligne plutôt que de la supprimer. En effet j'ai d'autres onglets avec des formules et le fait que la ligne soit supprimée pose soucis. Comment faire pour que la ligne soit simplement effacée ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
7 févr. 2017 à 18:43
Bonjour,

tu remplaces
.Delete
par
.Clearcontents
0
Private Sub CommandButton1_Click()

result= MsgBox("Saisissez le matricule à supprimer", ,"Suppression matricule")



If rep = "" Then Exit Sub
Set cel = ActiveSheet.Columns(1).Find(rep, [A1], xlValues, xlWhole)
If cel Is Nothing Then
MsgBox "Matricule absent"
Else
Rows(cel.Row).Delete
MsgBox "Matricule supprimé : " & rep
End If


'on peut passer par la fonction find

Sub exemple()
   'Activation de la feuille 1
   Sheets("Feuil1").Activate
   'Sélection de la cellule A8
   'Range("A8").Select
Cells.Find(What:="result", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
End Sub

ActiveSheet.Rows(ActiveCell.Row).EntireRow.Delete
End Sub

Ce ne sont juste que des pistes
0
Merci pour votre aide. En final la macro de gbinforme a marché parfaitement.
Merci quand même
0