Récupérer dernière valeur selon critère dans une autre colonne Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
S
SoJa
Jeune membre
Jeune membre
Messages : 23
Inscrit le : 12 octobre 2017
Version d'Excel : 2016 FR

Message par SoJa » 25 janvier 2018, 17:15

Bonjour à tous !

J'essaie d'optimiser mes macros, et afin de palier aux boucles sur une plage de données (car il y a de + en + de lignes !) j'aimerais trouver une fonction qui me retrouve directement la dernière valeur correspondante à mon critère.

On va dire que j'ai 3 colonnes : un élève, une note et une date.
Et un élève a donc plusieurs notes au fil du temps.

Sachant que c'est toujours trié par date, je souhaiterais donc avoir une sorte de recherchev qui me récupèrerait la dernière note d'un élève donné.
Via une formule matricielle c'est possible et je l'ai déjà fait, cependant maintenant je souhaite le retranscrire en VBA.. mais je bloque (car c'est une formule assez compliquée et je ne connais pas les équivalents en vba (malgré une recherche sur le net !))

Du coup, j'me suis dis que je pourrais aussi utiliser la fonction MAX sur la date, mais je n'arrive pas à y rajouter la condition du nom de l'élève

Merci à vous, si vous avez quelques idées ou pistes ... Je ne suis pas fermée à d'autres propositions cela dit ...
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'050
Appréciations reçues : 387
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 25 janvier 2018, 17:26

Bonjour

En mettant toutes tes données d'un coup dans une variable tableaux, ta recherche peur aller très vite.
Si tu as un fichier...
Bye !
S
SoJa
Jeune membre
Jeune membre
Messages : 23
Inscrit le : 12 octobre 2017
Version d'Excel : 2016 FR

Message par SoJa » 25 janvier 2018, 17:40

au risque de passer pour une idiote mais qu'entends-tu par mettre dans une variable tableau ?
Genre mettre dans une variable plage , ma plage ? lol

Actuellement, je recherche la ligne correspondante via une boucle
ligne = derligne
While Cells(ligne,2).Value <> "Monsieur Dupond"
ligne = ligne - 1
Wend

VarNote = cells(ligne, 3).Value

'etc...
Je pourrai faire la même chose ?Ou peut-être utiliser une autre méthode que celle par ligne ?
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'050
Appréciations reçues : 387
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 25 janvier 2018, 18:44

C'est un peu ça mais en mieux et plus rapide.
On met les données de tout un tableau dans une mémoire-tableau avec une seule instruction.
Puis on travaille sur ce nouveau nouveau tableau fictif.
L'intérêt, c'est que VBA travaille alors directement sur la mémoire vive de l'ordi et ne perd plus de temps à lire ou écrire l'une après l'autre les données sur une feuille de calcul Excel.
Bye !
Classeur1 v1.xlsm
(21.13 Kio) Téléchargé 153 fois
S
SoJa
Jeune membre
Jeune membre
Messages : 23
Inscrit le : 12 octobre 2017
Version d'Excel : 2016 FR

Message par SoJa » 26 janvier 2018, 09:20

Wow..... Magique !!

Je te remercie infiniment de m'avoir transmis cette méthode, elle me sera bien utile !!

8[] :D
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message