Bonjour,
J'ai une colonne de dates - NON TRIÉES.
Les dates sont répétées plusieurs fois, et en désordre.
Ex.(avec des nombres, c'est plus lisible) :
4
3
2
3
8
6
3
1
Existe-t-il un code qui permet de définir sur quelle ligne se trouve le
dernier 3 ? (= ligne "7")
Une sorte de Application.Match... "en remontant", qui répondrait "2".
J'ai bien trouvé la solution ci-dessous... qui risque de durer !
--------------------------
Sub test1()
Ligne = 0
Do
On Error Resume Next
Ligne = Ligne + Application.Match(3, Range("A" & Ligne + 1 & ":A65536"), 0)
If Err <> 0 Then Exit Do
Loop
MsgBox Ligne
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonjour. MsgBox Columns(1).Find(3, , , xlWhole, xlByRows, xlPrevious).Address Daniel
Bonjour, J'ai une colonne de dates - NON TRIÉES. Les dates sont répétées plusieurs fois, et en désordre. Ex.(avec des nombres, c'est plus lisible) : 4 3 2 3 8 6 3 1
Existe-t-il un code qui permet de définir sur quelle ligne se trouve le dernier 3 ? (= ligne "7") Une sorte de Application.Match... "en remontant", qui répondrait "2".
J'ai bien trouvé la solution ci-dessous... qui risque de durer ! -------------------------- Sub test1()
Ligne = 0 Do On Error Resume Next Ligne = Ligne + Application.Match(3, Range("A" & Ligne + 1 & ":A65536"), 0) If Err <> 0 Then Exit Do Loop MsgBox Ligne
End Sub -----------------------------
Merci
Bonjour.
MsgBox Columns(1).Find(3, , , xlWhole, xlByRows, xlPrevious).Address
Daniel
Bonjour,
J'ai une colonne de dates - NON TRIÉES.
Les dates sont répétées plusieurs fois, et en désordre.
Ex.(avec des nombres, c'est plus lisible) :
4
3
2
3
8
6
3
1
Existe-t-il un code qui permet de définir sur quelle ligne se trouve le
dernier 3 ? (= ligne "7")
Une sorte de Application.Match... "en remontant", qui répondrait "2".
J'ai bien trouvé la solution ci-dessous... qui risque de durer !
--------------------------
Sub test1()
Ligne = 0
Do
On Error Resume Next
Ligne = Ligne + Application.Match(3, Range("A" & Ligne + 1 & ":A65536"), 0)
If Err <> 0 Then Exit Do
Loop
MsgBox Ligne
Bonjour. MsgBox Columns(1).Find(3, , , xlWhole, xlByRows, xlPrevious).Address Daniel
Bonjour, J'ai une colonne de dates - NON TRIÉES. Les dates sont répétées plusieurs fois, et en désordre. Ex.(avec des nombres, c'est plus lisible) : 4 3 2 3 8 6 3 1
Existe-t-il un code qui permet de définir sur quelle ligne se trouve le dernier 3 ? (= ligne "7") Une sorte de Application.Match... "en remontant", qui répondrait "2".
J'ai bien trouvé la solution ci-dessous... qui risque de durer ! -------------------------- Sub test1()
Ligne = 0 Do On Error Resume Next Ligne = Ligne + Application.Match(3, Range("A" & Ligne + 1 & ":A65536"), 0) If Err <> 0 Then Exit Do Loop MsgBox Ligne
End Sub -----------------------------
Merci
LANIMAL
Merci Daniel, Je me doutais bien... mais faut savoir ! Merci, bonne journée.
Daniel.C a écrit :
Bonjour. MsgBox Columns(1).Find(3, , , xlWhole, xlByRows, xlPrevious).Address Daniel
Merci Daniel,
Je me doutais bien... mais faut savoir !
Merci, bonne journée.
Daniel.C a écrit :
Bonjour.
MsgBox Columns(1).Find(3, , , xlWhole, xlByRows, xlPrevious).Address
Daniel
J'en suis baba !.... Quelle simplicité ! Le test marche, mais malheureusement je ne comprends pas ! Je suppose qu'il s'agit d'une formule matricielle ([... ])? Il serait temps que je me familiarise avec les matrices, et les fonctions attachées, mais je ne sais pas par quel moyen. Je n'ai pas le toupet de te demander un cours particulier, mais si tu pouvais me donner qq références... Je n'ai rien trouvé sur l'aide VBA, ni sur Google, il doit y avoir un truc qui m'échappe... ! Merci pour ton aide passée... et à venir ?
Caetera a écrit :
"LANIMAL" a écrit dans le message de news:
Existe-t-il un code qui permet de définir sur quelle ligne se trouve le dernier 3 ? (= ligne "7")
J'en suis baba !....
Quelle simplicité !
Le test marche, mais malheureusement je ne comprends pas !
Je suppose qu'il s'agit d'une formule matricielle ([... ])?
Il serait temps que je me familiarise avec les matrices, et les
fonctions attachées, mais je ne sais pas par quel moyen.
Je n'ai pas le toupet de te demander un cours particulier, mais si tu
pouvais me donner qq références...
Je n'ai rien trouvé sur l'aide VBA, ni sur Google,
il doit y avoir un truc qui m'échappe... !
Merci pour ton aide passée... et à venir ?
Caetera a écrit :
"LANIMAL" <noreply@xxx.yy> a écrit dans le message de news:
uLFctgp8KHA.1436@TK2MSFTNGP06.phx.gbl...
Existe-t-il un code qui permet de définir sur quelle ligne se trouve le
dernier 3 ? (= ligne "7")
J'en suis baba !.... Quelle simplicité ! Le test marche, mais malheureusement je ne comprends pas ! Je suppose qu'il s'agit d'une formule matricielle ([... ])? Il serait temps que je me familiarise avec les matrices, et les fonctions attachées, mais je ne sais pas par quel moyen. Je n'ai pas le toupet de te demander un cours particulier, mais si tu pouvais me donner qq références... Je n'ai rien trouvé sur l'aide VBA, ni sur Google, il doit y avoir un truc qui m'échappe... ! Merci pour ton aide passée... et à venir ?
Caetera a écrit :
"LANIMAL" a écrit dans le message de news:
Existe-t-il un code qui permet de définir sur quelle ligne se trouve le dernier 3 ? (= ligne "7")
Je suppose qu'il s'agit d'une formule matricielle ([... ])?
****************************** C'est effectivement la transposition en VBA d'une formule matricielle utilisant 3 fonctions imbriquées et dont le résultat est renvoyé par Evaluate (Expression entre crochets) Dans la feuille de calcul (avec validation par ctrl+maj+enter) :
=GRANDE.VALEUR(SI(A1:A8=3;LIGNE(A1:A8));1)
Le test logique A1:A8=3 comme 1° argurnent de la fonction SI renvoie au travers de la fonction LIGNE une matrice de valeurs, numériques (le Numéro de Ligne) chaque fois que la valeur 3 est trouvée ou FAUX si ce n'est pas le cas. Pour ton exemple {FAUX;2;FAUX;4;FAUX;FAUX;7;FAUX} Il suffira donc d'imbriquer ce calcul dans la fonction GRANDE.VALEUR(laMatrice,1) pour renvoyer l'index de la dernière ligne contenant la valeur 3
En VBA et avec des variables, il faudra expressément utiliser la syntaxe Evaluate(chaine) Exemple de syntaxe avec variables nom de feuille, 1° ligne de la plage et dernière ligne de la plage
"LANIMAL" <noreply@xxx.yy> a écrit dans le message de news:
%23TKgwS38KHA.1888@TK2MSFTNGP05.phx.gbl...
Je suppose qu'il s'agit d'une formule matricielle ([... ])?
******************************
C'est effectivement la transposition en VBA d'une formule matricielle utilisant
3 fonctions imbriquées et dont le résultat est renvoyé par Evaluate (Expression
entre crochets)
Dans la feuille de calcul (avec validation par ctrl+maj+enter) :
=GRANDE.VALEUR(SI(A1:A8=3;LIGNE(A1:A8));1)
Le test logique A1:A8=3 comme 1° argurnent de la fonction SI renvoie au travers
de la fonction LIGNE une matrice de valeurs, numériques (le Numéro de Ligne)
chaque fois que la valeur 3 est trouvée ou FAUX si ce n'est pas le cas.
Pour ton exemple
{FAUX;2;FAUX;4;FAUX;FAUX;7;FAUX}
Il suffira donc d'imbriquer ce calcul dans la fonction
GRANDE.VALEUR(laMatrice,1) pour renvoyer l'index de la dernière ligne contenant
la valeur 3
En VBA et avec des variables, il faudra expressément utiliser la syntaxe
Evaluate(chaine)
Exemple de syntaxe avec variables nom de feuille, 1° ligne de la plage et
dernière ligne de la plage
Je suppose qu'il s'agit d'une formule matricielle ([... ])?
****************************** C'est effectivement la transposition en VBA d'une formule matricielle utilisant 3 fonctions imbriquées et dont le résultat est renvoyé par Evaluate (Expression entre crochets) Dans la feuille de calcul (avec validation par ctrl+maj+enter) :
=GRANDE.VALEUR(SI(A1:A8=3;LIGNE(A1:A8));1)
Le test logique A1:A8=3 comme 1° argurnent de la fonction SI renvoie au travers de la fonction LIGNE une matrice de valeurs, numériques (le Numéro de Ligne) chaque fois que la valeur 3 est trouvée ou FAUX si ce n'est pas le cas. Pour ton exemple {FAUX;2;FAUX;4;FAUX;FAUX;7;FAUX} Il suffira donc d'imbriquer ce calcul dans la fonction GRANDE.VALEUR(laMatrice,1) pour renvoyer l'index de la dernière ligne contenant la valeur 3
En VBA et avec des variables, il faudra expressément utiliser la syntaxe Evaluate(chaine) Exemple de syntaxe avec variables nom de feuille, 1° ligne de la plage et dernière ligne de la plage
Je suppose qu'il s'agit d'une formule matricielle ([... ])?
****************************** C'est effectivement la transposition en VBA d'une formule matricielle utilisant 3 fonctions imbriquées et dont le résultat est renvoyé par Evaluate (Expression entre crochets).......
========================== Merci de ton dévouement. Après une 1ère lecture, je crois saisir les grandes lignes... maintenant il faut que j'assimile le détail. Merci et bonne soirée.
Caetera a écrit :
"LANIMAL" <noreply@xxx.yy> a écrit dans le message de news:
%23TKgwS38KHA.1888@TK2MSFTNGP05.phx.gbl...
Je suppose qu'il s'agit d'une formule matricielle ([... ])?
******************************
C'est effectivement la transposition en VBA d'une formule matricielle utilisant
3 fonctions imbriquées et dont le résultat est renvoyé par Evaluate (Expression
entre crochets).......
========================== Merci de ton dévouement.
Après une 1ère lecture, je crois saisir les grandes lignes...
maintenant il faut que j'assimile le détail.
Merci et bonne soirée.
Je suppose qu'il s'agit d'une formule matricielle ([... ])?
****************************** C'est effectivement la transposition en VBA d'une formule matricielle utilisant 3 fonctions imbriquées et dont le résultat est renvoyé par Evaluate (Expression entre crochets).......
========================== Merci de ton dévouement. Après une 1ère lecture, je crois saisir les grandes lignes... maintenant il faut que j'assimile le détail. Merci et bonne soirée.