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
MichD
Le 01/05/22 Í 07:20, MichD a écrit :
Bonjour, Tout est dans le fichier Í l'adresse suivante. https://docs.google.com/spreadsheets/d/1DrkdOPmXl1Rxi9udkVSS4qbXWEBQr8FH/edit?usp=sharing&ouid5373407214342299858&rtpof=true&sd=true Le fichier sera disponible pour une durée limitée. MichD
Une recopie de la macro pour cette formule : '------------------------------ Sub Test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]" & _ ",MATCH(LaDate&CHAR(187)&Valeur,TblOpérations[[#All]," & _ "[Date]]&CHAR(187)&TblOpérations[[#All],[NomValeur]],0),1)") End Sub '------------------------------ MichD
Bonjour, Tout est dans le fichier Í l'adresse suivante. https://docs.google.com/spreadsheets/d/1DrkdOPmXl1Rxi9udkVSS4qbXWEBQr8FH/edit?usp=sharing&ouid5373407214342299858&rtpof=true&sd=true Le fichier sera disponible pour une durée limitée. MichD
Une recopie de la macro pour cette formule : '------------------------------ Sub Test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]" & _ ",MATCH(LaDate&CHAR(187)&Valeur,TblOpérations[[#All]," & _ "[Date]]&CHAR(187)&TblOpérations[[#All],[NomValeur]],0),1)") End Sub '------------------------------ MichD
LaurentC
salut MichD Excellent ! (J'ajoute vraiment super :-)) Nombreux mercis @+laurent
Bonjour, Tout est dans le fichier Í l'adresse suivante. https://docs.google.com/spreadsheets/d/1DrkdOPmXl1Rxi9udkVSS4qbXWEBQr8FH/edit?usp=sharing&ouid5373407214342299858&rtpof=true&sd=true Le fichier sera disponible pour une durée limitée. MichD
salut MichD Excellent ! (J'ajoute vraiment super :-)) Nombreux mercis @+laurent
Bonjour, Tout est dans le fichier Í l'adresse suivante. https://docs.google.com/spreadsheets/d/1DrkdOPmXl1Rxi9udkVSS4qbXWEBQr8FH/edit?usp=sharing&ouid5373407214342299858&rtpof=true&sd=true Le fichier sera disponible pour une durée limitée. MichD
LaurentC
'------------------------------ Sub Test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]" & _ ",MATCH(LaDate&CHAR(187)&Valeur,TblOpérations[[#All]," & _ "[Date]]&CHAR(187)&TblOpérations[[#All],[NomValeur]],0),1)") End Sub '------------------------------ MichD
Salut J'ai modifié ton fichier comme suit : En E1 j'ai fixé la date au 04/05/2022 (LaDate). En F1 j'ai donné toto3 (NomValeur). Dans les formules j'ai modifié la fin de "...[NomValeur]],0),1)" en "...[NomValeur]],1),1)" pour que Match trouve la valeur inférieure si nécessaire. Dans mon tableau, les dates sont classées par ordre croissant, mais sont non contiguës et sont parfois en double (le gros détail oublié). J'ai modifié le tableau comme suivant : modifié la date 02/05/2022 en 03/05/2022 supprimé la ligne de tableau commencant par 04/05/2022 Date NomValeur Soldée 30/04/2022 toto1 1 01/05/2022 toto2 2 03/05/2022 toto3 3 03/05/2022 toto4 4 05/05/2022 toto6 6 06/05/2022 toto7 7 07/05/2022 toto8 8 08/05/2022 toto9 9 La forumule et VBA me renvoient 4 qui est la ligne Soldée pour la première date trouvée ... J'attendai 3, la ligne Soldée pour la date <04/05/2022 ET NomValeur = toto3. Désolé pour la fausse piste Encore merci @+Laurent
En E1 j'ai fixé la date au 04/05/2022 (LaDate).
En F1 j'ai donné toto3 (NomValeur).
Dans les formules j'ai modifié la fin de "...[NomValeur]],0),1)" en
"...[NomValeur]],1),1)" pour que Match trouve la valeur inférieure si
nécessaire.
Dans mon tableau, les dates sont classées par ordre croissant, mais
sont non contiguës et sont parfois en double (le gros détail oublié).
J'ai modifié le tableau comme suivant :
modifié la date 02/05/2022 en 03/05/2022
supprimé la ligne de tableau commencant par 04/05/2022
La forumule et VBA me renvoient 4 qui est la ligne Soldée pour la
première date trouvée ... J'attendai 3, la ligne Soldée pour la date <04/05/2022 ET NomValeur = toto3.
'------------------------------ Sub Test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]" & _ ",MATCH(LaDate&CHAR(187)&Valeur,TblOpérations[[#All]," & _ "[Date]]&CHAR(187)&TblOpérations[[#All],[NomValeur]],0),1)") End Sub '------------------------------ MichD
Salut J'ai modifié ton fichier comme suit : En E1 j'ai fixé la date au 04/05/2022 (LaDate). En F1 j'ai donné toto3 (NomValeur). Dans les formules j'ai modifié la fin de "...[NomValeur]],0),1)" en "...[NomValeur]],1),1)" pour que Match trouve la valeur inférieure si nécessaire. Dans mon tableau, les dates sont classées par ordre croissant, mais sont non contiguës et sont parfois en double (le gros détail oublié). J'ai modifié le tableau comme suivant : modifié la date 02/05/2022 en 03/05/2022 supprimé la ligne de tableau commencant par 04/05/2022 Date NomValeur Soldée 30/04/2022 toto1 1 01/05/2022 toto2 2 03/05/2022 toto3 3 03/05/2022 toto4 4 05/05/2022 toto6 6 06/05/2022 toto7 7 07/05/2022 toto8 8 08/05/2022 toto9 9 La forumule et VBA me renvoient 4 qui est la ligne Soldée pour la première date trouvée ... J'attendai 3, la ligne Soldée pour la date <04/05/2022 ET NomValeur = toto3. Désolé pour la fausse piste Encore merci @+Laurent
MichD
Le 01/05/22 Í 09:42, LaurentC a écrit :
'------------------------------ Sub Test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]" & _ ",MATCH(LaDate&CHAR(187)&Valeur,TblOpérations[[#All]," & _ "[Date]]&CHAR(187)&TblOpérations[[#All],[NomValeur]],0),1)") End Sub '------------------------------ MichD
Salut J'ai modifié ton fichier comme suit : En E1 j'ai fixé la date au 04/05/2022 (LaDate). En F1 j'ai donné toto3 (NomValeur). Dans les formules j'ai modifié la fin de "...[NomValeur]],0),1)" en "...[NomValeur]],1),1)" pour que Match trouve la valeur inférieure si nécessaire. Dans mon tableau, les dates sont classées par ordre croissant, mais sont non contiguës et sont parfois en double (le gros détail oublié). J'ai modifié le tableau comme suivant : modifié la date 02/05/2022 en 03/05/2022 supprimé la ligne de tableau commencant par 04/05/2022 Date   NomValeur   Soldée 30/04/2022   toto1   1 01/05/2022   toto2   2 03/05/2022   toto3   3 03/05/2022   toto4   4 05/05/2022   toto6   6 06/05/2022   toto7   7 07/05/2022   toto8   8 08/05/2022   toto9   9 La forumule et VBA me renvoient 4 qui est la ligne Soldée pour la première date trouvée ... J'attendai 3, la ligne Soldée pour la date <> 04/05/2022 ET NomValeur = toto3. Désolé pour la fausse piste Encore merci @+Laurent
La concaténation des 2 colonnes pour la date "03/05/22". donne ceci : 44684toto3 44684toto4 44684 est la valeur numérique de la date. Demande Í Excel de trier ces données en ordre ou décroissant, et tu vas avoir ta réponse. N'oublie pas ton critère est une concaténation de 2 cellules. Lors du tri, comme le résultat de la concaténation est du texte, le tri se fait en comparant la valeur "ASCII" de chacun des caractères (caractère par caractère). En conséquence, la plus grande valeur est : 44684toto4 C'est la manière que fonctionne Excel. MichD
En E1 j'ai fixé la date au 04/05/2022 (LaDate).
En F1 j'ai donné toto3 (NomValeur).
Dans les formules j'ai modifié la fin de "...[NomValeur]],0),1)" en
"...[NomValeur]],1),1)" pour que Match trouve la valeur inférieure si
nécessaire.
Dans mon tableau, les dates sont classées par ordre croissant, mais sont
non contiguës et sont parfois en double (le gros détail oublié). J'ai
modifié le tableau comme suivant :
modifié la date 02/05/2022 en 03/05/2022
supprimé la ligne de tableau commencant par 04/05/2022
Date   NomValeur   Soldée
30/04/2022Â Â Â toto1Â Â Â 1
01/05/2022Â Â Â toto2Â Â Â 2
03/05/2022Â Â Â toto3Â Â Â 3
03/05/2022Â Â Â toto4Â Â Â 4
05/05/2022Â Â Â toto6Â Â Â 6
06/05/2022Â Â Â toto7Â Â Â 7
07/05/2022Â Â Â toto8Â Â Â 8
08/05/2022Â Â Â toto9Â Â Â 9
La forumule et VBA me renvoient 4 qui est la ligne Soldée pour la
première date trouvée ... J'attendai 3, la ligne Soldée pour la date <> 04/05/2022 ET NomValeur = toto3.
Désolé pour la fausse piste
Encore merci
@+Laurent
La concaténation des 2 colonnes pour la date "03/05/22". donne ceci :
44684toto3
44684toto4
44684 est la valeur numérique de la date.
Demande Í Excel de trier ces données en ordre ou décroissant, et tu vas
avoir ta réponse. N'oublie pas ton critère est une concaténation de 2
cellules.
Lors du tri, comme le résultat de la concaténation est du texte, le tri
se fait en comparant la valeur "ASCII" de chacun des caractères
(caractère par caractère). En conséquence, la plus grande valeur est :
44684toto4
'------------------------------ Sub Test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]" & _ ",MATCH(LaDate&CHAR(187)&Valeur,TblOpérations[[#All]," & _ "[Date]]&CHAR(187)&TblOpérations[[#All],[NomValeur]],0),1)") End Sub '------------------------------ MichD
Salut J'ai modifié ton fichier comme suit : En E1 j'ai fixé la date au 04/05/2022 (LaDate). En F1 j'ai donné toto3 (NomValeur). Dans les formules j'ai modifié la fin de "...[NomValeur]],0),1)" en "...[NomValeur]],1),1)" pour que Match trouve la valeur inférieure si nécessaire. Dans mon tableau, les dates sont classées par ordre croissant, mais sont non contiguës et sont parfois en double (le gros détail oublié). J'ai modifié le tableau comme suivant : modifié la date 02/05/2022 en 03/05/2022 supprimé la ligne de tableau commencant par 04/05/2022 Date   NomValeur   Soldée 30/04/2022   toto1   1 01/05/2022   toto2   2 03/05/2022   toto3   3 03/05/2022   toto4   4 05/05/2022   toto6   6 06/05/2022   toto7   7 07/05/2022   toto8   8 08/05/2022   toto9   9 La forumule et VBA me renvoient 4 qui est la ligne Soldée pour la première date trouvée ... J'attendai 3, la ligne Soldée pour la date <> 04/05/2022 ET NomValeur = toto3. Désolé pour la fausse piste Encore merci @+Laurent
La concaténation des 2 colonnes pour la date "03/05/22". donne ceci : 44684toto3 44684toto4 44684 est la valeur numérique de la date. Demande Í Excel de trier ces données en ordre ou décroissant, et tu vas avoir ta réponse. N'oublie pas ton critère est une concaténation de 2 cellules. Lors du tri, comme le résultat de la concaténation est du texte, le tri se fait en comparant la valeur "ASCII" de chacun des caractères (caractère par caractère). En conséquence, la plus grande valeur est : 44684toto4 C'est la manière que fonctionne Excel. MichD
LaurentC
Salut
... N'oublie pas ton critère est une concaténation de 2 cellules.
Alors ça ne va pas :-( Je peux avoir 3 valeurs ou plus sur la même date ... Match me plaisait bien avec la notion d'aller chercher la valeur inférieur si celle recherchée n'est pas lÍ . Je vais reformuler ma question dans un nouveau post. Merci @+Laurent
Salut
...
N'oublie pas ton critère est une concaténation de 2 cellules.
Alors ça ne va pas :-(
Je peux avoir 3 valeurs ou plus sur la même date ...
Match me plaisait bien avec la notion d'aller chercher la valeur
inférieur si celle recherchée n'est pas lÍ .
Je vais reformuler ma question dans un nouveau post.
... N'oublie pas ton critère est une concaténation de 2 cellules.
Alors ça ne va pas :-( Je peux avoir 3 valeurs ou plus sur la même date ... Match me plaisait bien avec la notion d'aller chercher la valeur inférieur si celle recherchée n'est pas lÍ . Je vais reformuler ma question dans un nouveau post. Merci @+Laurent
MichD
Le 01/05/22 Í 12:16, LaurentC a écrit :
Salut je pense néanmoins qu'il y a une solution avec index/match en n'utilisant pas la concaténation mais avec un truc du genre Range("F13") > Evaluate("INDEX(prix,MATCH(1,(annee¡3)*(taille±3)*(modeleÁ3),0))") J'ai pas réussi Í mettre en oeuvre :-( (je pofine mon nouveau post et reviens rapidement :-) @+Laurent
Toujours en tenant comme du classeur publié et des modifications que tu as apportées aux données, si tu tiens Í index/equiv(), il y a ceci : Formule dans une cellule : Validation matricielle : Ctrl+Maj+enter =INDEX(TblOpérations[[#Tout];[Soldée]];EQUIV(INDEX(TblOpérations[[#Tout];[Date]];EQUIV(LaDate;TblOpérations[Date];1))&INDEX(TblOpérations[[#Tout];[NomValeur]];EQUIV(LaDate;TblOpérations[Date];1));TblOpérations[[#Tout];[Date]]&TblOpérations[NomValeur];1)+1) En VBA, cela donne : Sub test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]," & _ "MATCH(INDEX(TblOpérations[[#All],[Date]],MATCH(LaDate," & _ "TblOpérations[Date],1))&INDEX(TblOpérations[[#All],[NomValeur]]," & _ "MATCH(LaDate,TblOpérations[Date],1)),TblOpérations[[#All]," & _ "[Date]]&TblOpérations[NomValeur],1)+1)") MichD
Le 01/05/22 Í 12:16, LaurentC a écrit :
Salut
je pense néanmoins qu'il y a une solution avec index/match en
n'utilisant pas la concaténation mais avec un truc du genre
Salut je pense néanmoins qu'il y a une solution avec index/match en n'utilisant pas la concaténation mais avec un truc du genre Range("F13") > Evaluate("INDEX(prix,MATCH(1,(annee¡3)*(taille±3)*(modeleÁ3),0))") J'ai pas réussi Í mettre en oeuvre :-( (je pofine mon nouveau post et reviens rapidement :-) @+Laurent
Toujours en tenant comme du classeur publié et des modifications que tu as apportées aux données, si tu tiens Í index/equiv(), il y a ceci : Formule dans une cellule : Validation matricielle : Ctrl+Maj+enter =INDEX(TblOpérations[[#Tout];[Soldée]];EQUIV(INDEX(TblOpérations[[#Tout];[Date]];EQUIV(LaDate;TblOpérations[Date];1))&INDEX(TblOpérations[[#Tout];[NomValeur]];EQUIV(LaDate;TblOpérations[Date];1));TblOpérations[[#Tout];[Date]]&TblOpérations[NomValeur];1)+1) En VBA, cela donne : Sub test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]," & _ "MATCH(INDEX(TblOpérations[[#All],[Date]],MATCH(LaDate," & _ "TblOpérations[Date],1))&INDEX(TblOpérations[[#All],[NomValeur]]," & _ "MATCH(LaDate,TblOpérations[Date],1)),TblOpérations[[#All]," & _ "[Date]]&TblOpérations[NomValeur],1)+1)") MichD
MichD
Le 01/05/22 Í 14:09, MichD a écrit :
Le 01/05/22 Í 12:16, LaurentC a écrit :
Salut je pense néanmoins qu'il y a une solution avec index/match en n'utilisant pas la concaténation mais avec un truc du genre Range("F13") >> Evaluate("INDEX(prix,MATCH(1,(annee¡3)*(taille±3)*(modeleÁ3),0))") J'ai pas réussi Í mettre en oeuvre :-( (je pofine mon nouveau post et reviens rapidement :-) @+Laurent
Toujours en tenant comme du classeur publié et des modifications que tu as apportées aux données, si tu tiens Í index/equiv(), il y a ceci : Formule dans une cellule : Validation matricielle : Ctrl+Maj+enter =INDEX(TblOpérations[[#Tout];[Soldée]];EQUIV(INDEX(TblOpérations[[#Tout];[Date]];EQUIV(LaDate;TblOpérations[Date];1))&INDEX(TblOpérations[[#Tout];[NomValeur]];EQUIV(LaDate;TblOpérations[Date];1));TblOpérations[[#Tout];[Date]]&TblOpérations[NomValeur];1)+1) En VBA, cela donne : Sub test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]," & _ "MATCH(INDEX(TblOpérations[[#All],[Date]],MATCH(LaDate," & _ "TblOpérations[Date],1))&INDEX(TblOpérations[[#All],[NomValeur]]," & _ "MATCH(LaDate,TblOpérations[Date],1)),TblOpérations[[#All]," & _ "[Date]]&TblOpérations[NomValeur],1)+1)") MichD
Tu pourrais ajouter SiErreur(laFormule;"") dans le cas o͹ il n'y a pas de correspondance afin d'éviter une valeur d'erreur #Valeur! MichD
Le 01/05/22 Í 14:09, MichD a écrit :
Le 01/05/22 Í 12:16, LaurentC a écrit :
Salut
je pense néanmoins qu'il y a une solution avec index/match en
n'utilisant pas la concaténation mais avec un truc du genre
Salut je pense néanmoins qu'il y a une solution avec index/match en n'utilisant pas la concaténation mais avec un truc du genre Range("F13") >> Evaluate("INDEX(prix,MATCH(1,(annee¡3)*(taille±3)*(modeleÁ3),0))") J'ai pas réussi Í mettre en oeuvre :-( (je pofine mon nouveau post et reviens rapidement :-) @+Laurent
Toujours en tenant comme du classeur publié et des modifications que tu as apportées aux données, si tu tiens Í index/equiv(), il y a ceci : Formule dans une cellule : Validation matricielle : Ctrl+Maj+enter =INDEX(TblOpérations[[#Tout];[Soldée]];EQUIV(INDEX(TblOpérations[[#Tout];[Date]];EQUIV(LaDate;TblOpérations[Date];1))&INDEX(TblOpérations[[#Tout];[NomValeur]];EQUIV(LaDate;TblOpérations[Date];1));TblOpérations[[#Tout];[Date]]&TblOpérations[NomValeur];1)+1) En VBA, cela donne : Sub test() MsgBox Evaluate("INDEX(TblOpérations[[#All],[Soldée]]," & _ "MATCH(INDEX(TblOpérations[[#All],[Date]],MATCH(LaDate," & _ "TblOpérations[Date],1))&INDEX(TblOpérations[[#All],[NomValeur]]," & _ "MATCH(LaDate,TblOpérations[Date],1)),TblOpérations[[#All]," & _ "[Date]]&TblOpérations[NomValeur],1)+1)") MichD
Tu pourrais ajouter SiErreur(laFormule;"") dans le cas o͹ il n'y a pas de correspondance afin d'éviter une valeur d'erreur #Valeur! MichD