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

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
 

Discussions similaires

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