Récupération du n° de ligne après avoir fait une recherche

  • Initiateur de la discussion Initiateur de la discussion anne29
  • 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 !

A

anne29

Guest
Bonjour,
Je voudrais automatiser une mise en forme de tableau. Lorsque je recherche une expression, dans une feuille, je voudrais supprimer la ligne sur laquelle l'expression a été trouvée, ainsi que les 3 lignes du dessous et les 3 lignes du dessus.
Merci
 
Re : Récupération du n° de ligne après avoir fait une recherche

Bonjour Anne

regarde le code ci-dessous, pour une recherche en colonne A :

Code:
Sub test()
Dim x As Range
Set x = Range("A:A").Find("test", , xlValues, xlWhole, , , False)
If Not x Is Nothing Then Rows(x.Row - 3 & ":" & x.Row + 3).Delete
End Sub

bon après midi
@+
 
Re : Récupération du n° de ligne après avoir fait une recherche

Merci Pierrot,
ça fonctionne correctement pour une expression trouvée mais il peut y avoir plusieurs fois la même expression dans la colonne, et à chaque fois que l'expression est trouvée, il faut supprimer les lignes.
Comment puis-je faire une boucle alors que des lignes vides existent ?
Merci
 
Re : Récupération du n° de ligne après avoir fait une recherche

Re,

regarde dans l'aide vba, du coté de la méthode "findnext", si tu rencontres des difficultés reviens avec un petit fichier montrant le modèle de donnée à traiter...

@+
 
Re : Récupération du n° de ligne après avoir fait une recherche

Bonsoir,
Je suis allée dans l'aide vba mais j'ai un message d'erreur
"Impossible de lire la propriété Findnext de la classe Range"
Je joins le fichier pour plus de clarté
Merci
 
Re : Récupération du n° de ligne après avoir fait une recherche

Bonjour Anne

essaye ainsi :

Code:
Option Explicit
Sub test()
Dim x As Range
With Worksheets(1).Range("A:A")
    Set x = .Find("autorite imputee", , xlValues, xlWhole, , , False)
    If Not x Is Nothing Then
        Do
            Rows(x.Row - 3 & ":" & x.Row + 8).Delete
            Set x = .FindNext()
        Loop While Not x Is Nothing
    End If
End With
End Sub

Au niveau du "findnext" j'ai enlevé l'argument précisant la cellule à partir de laquelle devait débuter la recherche(le x qui se trouvait entre parenthèses). En effet dans la ligne du dessus, tu supprimes cette cellule, ce qui provoque le message d'erreur...

Attention d'autre part, dans lefichier que tu as fourni, la première valeur trouvée est en ligne 3, ce qui provoque un message d'erreur lors de la suppression des lignes, puisque 3 - 3 = 0 et que la ligne 0 n'existe pas...

bonne journée
@+
 
Re : Récupération du n° de ligne après avoir fait une recherche

Bonjour Pierrot,
Merci ça fonctionne, en fait pour la première recherche, je renomme la chaine de caractère car je garde la première ligne d'entête de colonne.
Merci beaucoup et bonne journée
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour