Renvoyer un numéro de ligne puis un autre

Bonjour à tous,

Je suis embêté.

Je cherche une solution pour :

  • Renvoyer le numéro de ligne de la première cellule de la colonne A dont la valeur est supérieur à 1.1086.

Puis à partir de cette ligne (ici ligne 95)

  • renvoyer le numéro de ligne de la première cellule de la colonne A dont la valeur est supérieur à 1.1586
  • renvoyer le numéro de ligne de la première cellule de la colonne B dont la valeur est inférieure à 1.0586

Pouvez-vous m'y aider s'il vous plait ?

Merci et Joyeux Noël à tous !

7test1.xlsx (124.88 Ko)

Salut Phil,

rien de compliqué en soi mais tu devrais nous en dire plus car je sens venir le truc...
Quelque soit le but, quelle procédure suis-tu ?
- tu inscris toutes les données par ligne, d'abord, la recherche ensuite ?
- recherche directe dès un changement dans une des cellules ?
- sont-ce des données de recherche calculables, de ligne en ligne ?


Joyeux Noël !

A+

Salut Curulis,

Merci pour ton accueil

Je ne suis pas certain d'être organisé au point d'avoir une "procédure"

Plus sérieusement, j'ai récupéré 2 colonnes de chiffres. Ces chiffres ne changent plus.

Oui c'est bien une recherche directe (si je comprends bien ce que tu dis).

Ce sont des données de recherches calculables oui. Mais pas forcément ligne par ligne. Il y aura plusieurs recherches et simulations et je pense adapter le principe et les formules.

L'objectif est de vérifier une simulation boursière.

J'espère ne rien oublier.

Merci pour ton aide.

Salut Phil,

en regardant de plus près, je constate qu'en ligne [A94] se trouve la valeur 1,1126, supérieur donc à 1,1086 !!
Rien n'est trié ! Alors : 94 ou 95 ?
Comment ça fonctionne, ton truc ?


A+

Bonsoir Curulis,

Oups, je pensais avoir bien vérifié mais tu as raison il s'agit bien de la ligne 94 (et non ligne 95 comme je l'avais écrit précédemment).

Pour répondre à ta question, je ne sais pas encore comment ça fonctionne exactement, mais ce que je sais c'est qu'Excel permet de simuler de nombreuses situations.

En fait j'arrive à renvoyer le numéro d'une ligne lors d'un premier test, mais pas à commencer le 2eme test et le troisième test à partir de ce numéro de ligne.

Je ne pensais pas qu'il serai si difficile de clarifier mes idées. C'est un vrai travail de communiquer sur Excel (je suis simple utilisateur je le confesse)

Bonjour à tous,

moi je trouve 52, 58 et 105.
Formules matricielles à valider avec Shift+Ctrl+Entrée

11test1.xlsx (125.15 Ko)

eric

Bonjour Eriiic,

Merci pour ton retour. Oui tu as raison et la ligne 52 est bien la bonne.

C'est bien la preuve que le faire à la main est un risque d'erreur (c'est ma faute).

Tes formules semblent parfaitement fonctionner merci.

Peux-tu nous en dire plus et décrypter le fonctionnement de tes formules s'il te plait ? (Il me reste une adaptation à faire et j'aimerai pouvoir comprendre).

Merci pour ton aide.

Salut Phil,
Salut Eriiic,

c'est clairement le domaine de formules, je n'en disconviens pas.
Je ne sais pas si j'ai totalement raison mais les calculs en [F2] et [H2] ne devraient-ils pas être annulés si il n'y a pas la donnée de base en [C2] ?

Public Sub Calcul(ByVal iIdx%)
'
Dim tTab, iMax%
'
tTab = Range("A1").Resize(Range("A" & Rows.Count).End(xlUp).Row, 2).Value
'
Union([D2], [F2], [H2]) = ""
For x = 1 To 3
    If Choose(x, [C2], [E2], [G2]) <> "" And IsNumeric(Choose(x, [C2], [E2], [G2])) Then
        If x = 1 Or (x > 1 And [D2] > 0) Then
            iMax = WorksheetFunction.Max(2, [D2])
            For y = iMax To UBound(tTab, 1)
                If x = 2 Then
                    If CDbl(tTab(y, 2)) < CDbl([E2]) Then _
                        [F2] = y: _
                        Exit For
                Else
                    If CDbl(tTab(y, Choose(x, 1, 2, 1))) >= CDbl(IIf(x = 1, [C2], [G2])) Then _
                        IIf(x = 1, [D2], [H2]) = y: _
                        Exit For
                End If
            Next
        End If
    End If
Next
'
End Sub
3phil67.xlsm (134.10 Ko)


A+

Bonjour,

commence par regarder l'aide sur les fonctions que tu connais pas.
Et reviens s'il te manque encore des éléments, en précisant la partie qui t'échappe.

mais les calculs en [F2] et [H2] ne devraient-ils pas être annulés si il n'y a pas la donnée de base en [C2] ?

sans doute. Je ne me suis même pas posé la question
eric

Bonjour Eriiic, Bonjour Curulis,

Merci pour votre aide.

Curulis, je ne sais pas du tout comment utiliser ton programme. Peux-tu m'en dire davantage s'il te plait ?

Eriiic, j'ai compris les grande lignes de tes 3 formules. Mais j'aurai du mal à les ré-écrire sans recopier. La logique est tout de même particulière (mais efficace).

Je classe ce sujet en "Résolu" comme le demande la charte.

Grand merci pour votre aide.

Bonne fête de fin d'année à tous.

Phil

Bonjour,

SI(A1:A5000>C2;LIGNE($1:$5000);99999)

si(le contenu des lignes de 1 à 5000 est > à C2 ; alors on retourne les n° de ligne ; sinon 99999)
Et Min() retourne donc le plus petit n° de ligne respectant la condition > C2

Idem pour les 2 autres formules, sauf que ça s'applique à la plage décalée du nombre de lignes trouvées en premier
eric

Salut Phil,
Salut Eriiic,

il n'y a pas vraiment de mode d'emploi autre que de renseigner les valeurs en [C2]-[E2]-[G2], la macro détectant ces changements de valeurs se chargeant d'appeler la Sub Calcul() postée récemment.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents = False
'
If Not Intersect(Target, Union([C2], [E2], [G2])) Is Nothing Then Call Calcul(Abs(Target.Column - 4))
'
Application.EnableEvents = True
'
End Sub


A+

Rechercher des sujets similaires à "renvoyer numero ligne puis"