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

Trouver une plage de données

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

H

helene51

Guest
Bonsoir le forum,

J'aurai besoin d'un peu d'aide pour une recherche toute bête.

Dans un tableau excel en colonne A j'ai les données suivantes :
A2 : X
A3 : X
A4 : Y
A5 : Y
A6 : Y
A7 : Y
A8 : Z
A9 : Z
A10 : Z

J'aimerai identifier en VBA le numéro de la première ligne où l'on trouve X (ici 2), le numéro de la dernière ligne où l'on trouve X (ici 3), le numéro de la première ligne où l'on trouve Y (ici 4), le numéro de la dernière ligne où l'on trouve Y (ici 7), le numéro de la première ligne où l'on trouve Z (ici 8) et le numéro de la dernière ligne où l'on trouve Z (ici 10).

Il n'y aura toujours le choix que de X, Y ou Z dans la colonne A.

Je ne sais pas trop comment faire, je sais juste comment trouver le numéro de la dernière ligne du tableau.
Derligne = Sheets("Feuil1").Range("A65536").End(xlUp).Row

Auriez-vous une idée de comment faire ?

Merci d'avance.
 
Re : Trouver une plage de données

Bsr à tous

A essayer (et à compléter pour le numéro de ligne pour Y et Z)


Code:
Sub trouve()
Set fc = Worksheets(1).Columns("A").Find(what:="X")
    MsgBox fc.Value & ": Première occurence dans : " _
    & fc.Address & ", Ligne " & fc.Row
Set fc = Worksheets(1).Columns("A").FindNext(after:=fc)
     MsgBox fc.Value & ": Seconde occurence dans : " & fc.Address
Set fc = Worksheets(1).Columns("A").Find(what:="Y")
    MsgBox fc.Value & ": Première occurence dans : " & fc.Address
Set fc = Worksheets(1).Columns("A").FindNext(after:=fc)
    MsgBox fc.Value & ": Seconde occurence dans : " & fc.Address
    Set fc = Worksheets(1).Columns("A").Find(what:="Z")
    MsgBox fc.Value & ": Première occurence dans : " & fc.Address
Set fc = Worksheets(1).Columns("A").FindNext(after:=fc)
    MsgBox fc.Value & ": Seconde occurence dans : " & fc.Address
End Sub

A+
 
Dernière édition:
Re : Trouver une plage de données

Bonsoir

Ci dessous un fichier avec une macro qui utilise find et une boucle do pour rechercher la première et la dernière ligne.
Pour les Y et z il suffit de copier les lignes en initialisant les variables et en changeant la valeur X.

A tester

JP
 

Pièces jointes

Re : Trouver une plage de données

Boujour Hélène51 🙂,
Il te faut faire une boucle style
Code:
Dim TrouverX As Boolean
TrouverX = False
Dim PremierX As Integer, DernierX As Integer
Dim I As Integer
For I = 2 To Range("A65536").End(xlUp).Row
    If Cells(I, 1) = "X" And TrouverX = False Then
        PremierX = I
        TrouverX = True
    End If
    If Cells(I, 1) = "X" And TrouverX = True Then
        DernierX = I
    End If
Next I
MsgBox ("1° X : " & PremierX & " - dernier x : " & DernierX)
à complèter avec Y et Z.
Bonne soiré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

Réponses
5
Affichages
199
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…