Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

suprimer ligne au dessus

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

G

greg954

Guest
Bonjour,
Je cherche à écrire une macro qui recherche le mot doublon dans une colonne et supprime la ligne au dessus.
la macro suivante m'efface toutes les lignes au dessus du mot "doublon"!!!
VB:
Dim i As Integer
With ThisWorkbook.Sheets("Feuil1")
'Précisez le nom de votre feuille
            For i = .Range("E" & .Rows.Count).End(xlUp).Row To 2 Step -1

                        If .Range("E" & i).Value = "Doublon" Then
                                   .Rows(i - 1).Delete
                        End If
            Next i
End With

Merci de votre aide
Greg
 
Bonjour,

Rajoute cette ligne : i = i - 1 juste après .Rows(i-1).Delete

En fait quand tu supprimes la ligne au-dessus, Doublons remonte de 1, et donc dans ta boucle de Step -1 tu te retrouves avec Doublon, et donc rebelote.

En mettant cette ligne tu remontes de i, et quand tu arrives dans ton For tu remontes encore de 1, donc au-dessus du mot Doublon que tu viens de détecter.

Pour trouver ce genre de choses il faut mettre en parallèle ton code et ta feuille et parcourir ton code pas à pas (F8), tu vois le phénomène.

C'est plus facile avec deux écrans.

Philippe
 
Philippe,
Merci de ta réponse , j'ai bien rajouté i = i - 1 juste après .Rows(i-1).Delete mais aucun changement , ça m'efface toujours toute les lignes au dessus du premier Doublon trouvé...
VB:
Dim i As Integer
With ThisWorkbook.Sheets("Feuil1")
'Précisez le nom de votre feuille
            For i = .Range("E" & .Rows.Count).End(xlUp).Row To 2 Step -1
                        If .Range("E" & i).Value = "Doublon" Then
                                   .Rows(i - 1).Delete i = i - 1
                        End If
            Next i
End With
 
re,
Merci, petite erreur de ma part, j'ai écris .Rows(i - 1).Delete i= i-1 au lieu de
.Rows(i - 1).Delete
i = i - 1
Encore merci , effectivement çà fonctionne très bien!!
Greg
 
Bonjour le fil, bonjour le forum,

Une autre proposition avec la méthode Find.Range :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim R As Range 'déclare la variable R (Recherche)
Dim POT As String 'déclare la variable POT (Première Occurrence Trouvée)
Dim LAF As Range 'déclare la variable LAF (Lignes À Effacer)

Set O = Worksheets("Feuil1") 'définit l'onglet O
Set R = O.Columns(5).Find("Doublon", O.Range("E1"), xlValues, xlWhole) 'définit la recherche R (recherche le mot "Doublon" entier dans la colonne E en partant de E1
If Not R Is Nothing Then 'condition : s'il existe au moins une occurrence trouvée
    POT = R.Address 'définit l'adresse de la première occurrence trouvée POT
    Do 'exécute
        'définit la plage LAF (la ligne au dessus de la pemière occurrence trouvée ou l'union de LAF et de la ligne au dessus pour les occurrences suivante
        If LAF Is Nothing Then Set LAF = O.Rows(R.Row - 1) Else Set LAF = Application.Union(LAF, O.Rows(R.Row - 1))
        Set R = O.Columns(5).FindNext(R) 'définit la recherche R (occurrence suivante)
    Loop While Not R Is Nothing And R.Address <> POT 'boucle tant qu'il existe de nouvelle occurrence ailleurs qu'en POT
End If 'fin de la condition
LAF.Delete 'efface la plage LAF
End Sub
 
Merci Robert, la méthode Find est sympa si le mot recherché est différent du style Doublon, doublon, Doublons...et on peut utiliser Match case , MatchWholeWord...ect
Greg
 
- 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

Réponses
5
Affichages
821
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
681
Réponses
4
Affichages
724
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…