Sélectionner une cellule selon son contenu, puis en supprimer la ligne

Bonjour à tous,

C'est la première fois que je poste sur ce forum (même si j'avoue très souvent m'y référer). Merci d'avance pour vos réponses et désolé si je manque à des règles ou coutumes dont j'ignore encore l'existence.

Voilà, je possède un fichier contenant sur deux feuilles des tableaux différents, mais ayant une colonne en commun. Il s'agit de noms qui n'apparaissent qu'une fois. ex : "Vernaison".

J'aimerais offrir aux utilisateurs la possibilité de supprimer la ligne comprenant la cellule dont ils ont au préalable choisi la valeur grâce à une liste déroulante (pour être certain que l'orthographe est la même).

Ainsi, si dans mes tableaux, il y a un ligne comprenant la valeur "Vernaison" -> L'utilisateur arrive sur une cellule à liste déroulante, il sélectionne "Vernaison", puis clique sur un bouton. Ma macro copie la valeur choisie par l'utilisateur, puis sélectionne dans mes tableaux la cellule comprenant la même valeur, et en supprime la ligne.

Etant débutant en VBA (pour l'instant je me sers à 90% de l'enregistrement manuel de macro, puis je modifie le code après), j'aimerais bien savoir comment vous vous y prendriez pour faire ça.

Merci d'avance pour vos conseils.

Bonjour Genemesis et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître
qui vous aideront dans vos demandes et réponses sur ce forum.

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)

Merci pour votre participation

Concernant votre demande, il faut utiliser l'instruction Find() pour trouver la ligne correspondante
Un tas de sujets traitent de ceci, merci d'effectuer des recherches dans la zone en haut de la page, prévue à cet effet.

Cordialement

Bonjour,

Merci pour votre réponse.

Je ne sais pas utiliser la fonction Find. Pouvez-vous m'expliquez son fonctionnement .

J'ai joint le tableau en question. L'utilisateur se rend sur la Feuil2, choisis une valeur dans la liste déroulante puis clique sur le bouton "Go !".

La macro retrouve cette valeur en Feuil1 et en supprime la ligne.

7brouillon-4.xlsm (21.75 Ko)

J'ai fait un premier essai.

Je me rend sur la Feuil1

Je desactive la protection

Je fais un recherche sur l'entiereté de la feuille, de la valeur trouvée en Feuil2 D15.

Je supprime la ligne entière de la cellule trouvée en Feuil1.

Je reprotège ma Feuil1.

Ca ne marche pas et je ne comprend pas pourquoi...

 Sheets("Feuil1").Selec
 ActiveSheet.Unprotect
 Sheets("Feuil1").Select
 Cells.Find(What:=Sheets("Feuil2").Range("D15"), After:=ActiveCell, LookIn:=xlFormulas, LookAt _
 :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
 False, SearchFormat:=False).Activate
 Selection.EntireRow.Delete
 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
 ActiveSheet.EnableSelection = xlNoSelection

Edit modo (rappel 1) : merci de mettre le code entre balises SVP avec le bouton </>

Bonjour

Ci joint ma solution

22brouillon-4.xlsm (21.91 Ko)

A+ François

Ps: je n'ai pas vu de protection....

Bonjour fanfan38 !

Un grand merci pour ta solution, je suis parvenu à l'adapter à mon fichier ! (et par la même occasion à comprendre FIND).

En fait, il y a avait deux feuilles sur mon vrai fichier qui devait réaliser la suppression de ligne. Je te joins le résultat final, le seul défaut est que la fenêtre "confirmez la suppression" s'affiche deux fois, mais ça ne me gène pas. Egalement, si C27 reste vide, alors la macro supprime une ligne vide (ça ne me gène pas non-plus).

Merci encore ! C'est top !

Voilà ce que ça donne in fine :

Sub SuppressionMacro()

    Sheets("SITES").Select
    ActiveSheet.Unprotect
    Sheets("CARTE").Select
    ActiveSheet.Unprotect
    Sheets("SUPPRESSION (2)").Select

  Dim c As Range
  With Sheets("SITES").Columns(1)
    Set c = .Find(Range("C27").Value, LookIn:=xlValues)
    If Not c Is Nothing Then
      If MsgBox("Confirmez la suppression de " & c, vbOKCancel, "SUPPRESSION") = vbCancel Then Exit Sub
      c.EntireRow.Delete
    Else
      MsgBox ("Le site désigné n'existe pas")
    End If

    End With

  With Sheets("CARTE").Columns(2)
    Set c = .Find(Range("C27").Value, LookIn:=xlValues)
    If Not c Is Nothing Then
      If MsgBox("Confirmez la suppression de " & c, vbOKCancel, "SUPPRESSION") = vbCancel Then Exit Sub
      c.EntireRow.Delete
    Else
      MsgBox ("Le site désigné n'existe pas")
    End If

  End With
  Range("C27").Value = ""

    Sheets("CARTE").Select
    ActiveSheet.Shapes.Range(Array("Group 4")).Select
    Selection.ShapeRange.ZOrder msoBringToFront
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Sheets("SITES").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Sheets("SUPPRESSION (3)").Select
Rechercher des sujets similaires à "selectionner contenu puis supprimer ligne"