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.
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 = xlNoSelectionEdit modo (rappel 1) : merci de mettre le code entre balises SVP avec le bouton </>
Bonjour
Ci joint ma solution
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