OVH Cloud OVH Cloud

renvoyer le numéro des lignes

2 réponses
Avatar
gaston
bonjour !
J'ai une fontion et une macro qui me s=E9lectionnent les=20
lignes concern=E9es par le sous total:
Function zoneST(x) As Range
' d=E9finit la variable qui indique la plage concern=E9e par=20
la formule sous.total
' recherche les cellules indiqu=E9es dans la formule sous-
total
Dim f As String
f =3D Range(x).Formula
' extraire la plage en question
Set zoneST =3D Range(Mid(f, InStr(f, ",") + 1, Len(f) -=20
InStr(f, ",") - 1))
End Function
Sub recherche()
' recherche des lignes concern=E9es par les sous totaux=20
diff=E9rents de z=E9ro=20
' ainsi que les lignes s'y rapportant
Application.ScreenUpdating =3D False
'balaye les cellules de la plage
If Cells(6, 8) <> 0 Then _
zoneST("H6").EntireRow.Select
End Sub

je cherche une macro (ou une fonction) permettant de=20
r=E9cup=E9rer dans des variables le num=E9ro des lignes qui sont=20
ainsi s=E9lectionn=E9es. Attention: le nombre de lignes est=20
al=E9atoire. Ces variables me permettront ensuite de nommer=20
les lignes afin d'y effectuer des recherches

2 réponses

Avatar
Philippe
Bonjour,

Utilises un tableau Tab(1000) as long.
Dans Sub recherche(), à chaque fois que tu trouves une
ligne correspondant à tes critères, stocke son numéro :

Tab(Indice) = Range(x).Row
Indice = Indice + 1

Le tableau peut être agrandi si Indice dépasse 1000 :
ReDim Preserve t(2000) As Long

ReDim ==> pour redimensionner le tableau (en plus grand
ou plus petit)
Preserve ==> pour conserver les données déjà stockées

Courage!

-----Message d'origine-----
bonjour !
J'ai une fontion et une macro qui me sélectionnent les
lignes concernées par le sous total:
Function zoneST(x) As Range
' définit la variable qui indique la plage concernée par
la formule sous.total
' recherche les cellules indiquées dans la formule sous-
total
Dim f As String
f = Range(x).Formula
' extraire la plage en question
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len(f) -
InStr(f, ",") - 1))
End Function
Sub recherche()
' recherche des lignes concernées par les sous totaux
différents de zéro
' ainsi que les lignes s'y rapportant
Application.ScreenUpdating = False
'balaye les cellules de la plage
If Cells(6, 8) <> 0 Then _
zoneST("H6").EntireRow.Select
End Sub

je cherche une macro (ou une fonction) permettant de
récupérer dans des variables le numéro des lignes qui
sont

ainsi sélectionnées. Attention: le nombre de lignes est
aléatoire. Ces variables me permettront ensuite de nommer
les lignes afin d'y effectuer des recherches
.



Avatar
Gadget
Crée une fonction du type :
Function Tableau_Lignes() as integer

' Un tableau va être utilisé pour stocker les
'numéros de ligne. Il est public afin que la proc
'appelante puisse l'exploiter.

public Tableau() as integer

' On crée une variable Range pour lire chaque
'ligne, et un compteur

Dim ChaqueLigne as Range, i as integer

'On dimensionne le tableau au nombre de lignes :

redim Tableau(1 to selection.rows.count)

' et voici la boucle principale :

for each ChaqueLigne in Selection.rows
i = i + 1
Tableau(i) = ChaqueLigne.Row
Next ChaqueLigne

Tableau_Lignes = selection.rows.count

end function

Ensuite, dans ta proc appelante, tu peux récupérer le nombre de lignes :

NombreLignes=Tableau_Lignes

puis tu peux boucler sur le tableau.

Je n'ai pas testé, mais ca doit marcher. En principe.



--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"gaston" a écrit dans le message de
news:b21701c4375c$bf8a0930$
bonjour !
J'ai une fontion et une macro qui me sélectionnent les
lignes concernées par le sous total:
Function zoneST(x) As Range
' définit la variable qui indique la plage concernée par
la formule sous.total
' recherche les cellules indiquées dans la formule sous-
total
Dim f As String
f = Range(x).Formula
' extraire la plage en question
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len(f) -
InStr(f, ",") - 1))
End Function
Sub recherche()
' recherche des lignes concernées par les sous totaux
différents de zéro
' ainsi que les lignes s'y rapportant
Application.ScreenUpdating = False
'balaye les cellules de la plage
If Cells(6, 8) <> 0 Then _
zoneST("H6").EntireRow.Select
End Sub

je cherche une macro (ou une fonction) permettant de
récupérer dans des variables le numéro des lignes qui sont
ainsi sélectionnées. Attention: le nombre de lignes est
aléatoire. Ces variables me permettront ensuite de nommer
les lignes afin d'y effectuer des recherches