Trouver la première et la dernière ligne correspondant à un critère donné

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

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

quelqu'un sait-il comment identifier la première et la dernière ligne d'une liste, certes triée, mais sans que le critère de tri permettre de déterminer un min() et un max() ?

Je m'explique :
Dans la feuille BASE se trouvent des données triées selon le critère "Période" (ici le mois)
Je cherche à identifier le n° de la première et de la dernière ligne correspondant à ce critère, par exemple Février
Quand j'ai une date précise, avec max() et min() puis MATCH(), j'y arrive, mais ici, il n'y a pas de notion de max ou min …

Quelqu'un connaît-il la méthode VBA qui retourne la première et la dernière ligne correspondant à un critère donné (ici pour Février, première = 1019 et dernière = 1911)

Merci d'avance pour votre aide
 

Pièces jointes

Re : Trouver la première et la dernière ligne correspondant à un critère donné

Bonjour Sebast, R@chid

Une macro si cela peut convenir
Code:
Sub DebFin()

Dim DerLig As Long, i As Long, Compt As Integer, Deb As Integer, Fin As Integer, Mois As String

Mois = InputBox("Entrez le mois recherché")
If Mois = "" Then Exit Sub

DerLig = Worksheets("Base").Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To DerLig
    If Trim(Cells(i, 4)) = Mois Then
        Compt = Compt + 1
        If Compt = 1 Then Deb = i
    End If
Next
Fin = Deb + Compt - 1
MsgBox "Plage du mois de " & Mois & " lignes " & Deb & " à " & Fin
End Sub

A+
 
Re : Trouver la première et la dernière ligne correspondant à un critère donné

Bonjour Rachid, bonjour Paf,

merci beaucoup pour vos réponses, qui font le job sans problème. Je penche plus pour la solution VBA car je l'insère dans un projet existant.
Mais en l'adaptant à ce projet, je me suis rendu compte que je suis confronté à un problème de capacité.
Ma base fait environ 900 000 lignes et du coup, ça s'arrête avec le message "Erreur d'exécution 6" 'Dépassement de capacité' ...

En fait, je voulais adapter le code de Paf en sélectionnant ainsi le Range obtenu pour le supprimer, plutôt que d'utiliser une boucle et supprimer ligne à ligne quand il y a correspondance ...

Avez-vous une idée pour s'affranchir de ce problème ? (j'essaie du côté de FIND() mais je ne suis pas expert) !

Encore merci
 
Re : Trouver la première et la dernière ligne correspondant à un critère donné

Bonjour,

ta suggestion était la bonne ! ça marche sans problème, pour m'en convaincre j'ai même artificiellement augmenté le nombre de lignes jusqu'à arriver au maximum (> 1 million de lignes) et ça travaille sans broncher.

Un grand merci pour ta clairvoyance
 
Re : Trouver la première et la dernière ligne correspondant à un critère donné

Bonjour à toutes et à tous,

j'ai investigé un peu plus et ai trouvé une méthode ULTRA rapide pour identifier la première et la dernière ligne d'un Range en fonction d'un critère.
La rapidité tient au fait qu'on ne balaie pas la base au moyen d'une boucle mais qu'on identifie directement les éléments, pourvu que la table soit triée.
Les excelliens se diront qu'il n'y a rien de nouveau sous le soleil mais pour moi qui ne suis pas chevronné …

C'est particulièrement utile quand on doit identifier un Range à supprimer et à remplacer par un autre, actualisé.
A toutes fins utiles, le code

Code:
Sub PremièreEtDernièreLigne()
Dim LigneDébut As Long
Dim LigneFin As Long
Dim MoisCherché As String

MoisCherché = InputBox("Précisez le mois cherché")

LigneDébut = WorksheetFunction.Match(MoisCherché, Columns(4), 0)
'  0 signifie qu'il doit y avoir correspondance

LigneFin = WorksheetFunction.Match(MoisCherché, Columns(4), 1)
' 1 pour la valeur la plus élevée qui est inférieure ou égale à MoisCherché

MsgBox "La 1ère ligne du mois de " & MoisCherché & " est la n° " & LigneDébut & " et la dernière est la n° " & LigneFin

End Sub

Comme je ne suis pas expert, dites-moi si vous y voyez des limites …
 
- 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

Discussions similaires

Retour