Trouver une plage de données

helene51

XLDnaute Junior
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.
 

vbacrumble

XLDnaute Accro
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:

jp14

XLDnaute Barbatruc
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

  • essai20h.zip
    11.6 KB · Affichages: 39

JNP

XLDnaute Barbatruc
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 :cool:
 

Discussions similaires

Réponses
2
Affichages
195

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 534
dernier inscrit
Kalamymustapha