XL 2010 Calculs matriciels trop long

GladGad

XLDnaute Nouveau
Bonjour à tous,

Je rencontre des soucis de temps de calculs dans mon fichier Excel depuis que j'y ai mis une formule matricielle. Je vous joint mon fichier brouillon qui s'en tien à 1000 lignes, c'est la première fois pour moi alors si le fichier va pas hésitez pas. Le fichier original grandit de 1000 lignes par jours.

Je souhaite fusionner deux tableaux dont le nombre de ligne diffère en me basant sur des heures de relevé. A gauche un tableau d'événement et à droite la journée qui s'écoule (je précise que je ne pourrais pas réduire le nombre de ligne d'une journée).
Avec l'habilité d'un débutant j'ai essayé d'utiliser RECHERCHEV et SI mais sans une réussite totale et je suis arrivé à cette formule :

{ =SI( ESTERREUR( INDEX( E:E ; PETITE.VALEUR( SI( LIGNE()=G:G ; LIGNE(G:G) ; "") ; 1))); "" ; INDEX( E:E ; PETITE.VALEUR( SI( LIGNE()=G:G ; LIGNE(G:G) ; "") ; 1)) ) }

G = Dans le tableau événement, m'indique la ligne correspondante dans le tableau de la journée
E = L'événement correspondant à G

Je voulais savoir si vous aviez une autre idée pour obtenir ce résultat sans la lourdeur du calcul matriciel ?
Et sinon le fait d'utiliser mon SI de cette manière double le temps de calcul (calcul 1 fois pour la condition et 1 fois pour le résultat) ? Si oui faire une deuxième colonne qui filtre les erreurs serait mieux non ?

Voilà, si il manque des infos ou que j'ai été flou hésitez pas

Merci ^^

PS : Jamais fait de macro mis à part pour du copier coller avec le bouton qui enregistre.
 

Pièces jointes

  • Tests.xlsx
    75.5 KB · Affichages: 14

GladGad

XLDnaute Nouveau
Bonjour,

Je ne sais pas si le sujet est clos, mais j'ai rencontré un soucis pour lequel j'ai trouvé une petite amélioration donc je la partage ici.

J'avais des cas où plusieurs événements se présentais au même moment (donc à écrire sur la même ligne) et qui "disparaissaient" pour n'en faire apparaitre qu'un avec la solution précédente.

Voici le petit rajout à la super soluce de Dranred :

En P2 à tirer :
Code:
=SI(ET(O2-P1<>1; O2<>P1); P1+1; O2)

Puis reprendre les valeurs en P au lieu de O dans la 2ème formule de Dranred :

En K2 à tirer :
Code:
=SI($P2<>$P1;INDEX($E$2:$E$22;$P2;1);"")

En espérant que ce complément aide ;)
 

Discussions similaires

Réponses
0
Affichages
83

Statistiques des forums

Discussions
311 720
Messages
2 081 899
Membres
101 834
dernier inscrit
Jeremy06510