Récupérer des données en fonction d'une plage de données

Bonjour,

Je réalise un simulateur solaire en comparant la consommation d'un bâtiment et la production solaire.
J'aimerai comparer la consommation du bâtiment (Feuille de classeur "Simulation par heure" colonne C) à la production solaire (Feuille de classeur "Trame ensolei." colonne F) à chaque heure et même date dans un tableau. Dans la Feuille de classeur "Simulation par heure" colonne C, j'ai récupérer les valeurs de la production solaire en fonction de la date de la consommation mais la formule que j'ai utilisé est bien trop lourde.

J'ai trouvé la formule : =SOMME.SI.ENS('Trame ensolei.'!F2192:F20431;'Trame ensolei.'!D2192:D20431;[@[Date & Heure]])
J'ai plus de 20 000 valeurs, donc les simulations mettent énormément de temps à se réaliser. Il y a sûrement une formule plus efficace que la mienne. Vous avez des idées ?

image image

Bonjour

J'ai plus de 20 000 valeurs, donc les simulations mettent énormément de temps à se réaliser. Il y a sûrement une formule plus efficace que la mienne. Vous avez des idées ?

Non vous avez fait le bon choix de formule. Vous avez tout de même 20000 données à traiter ....

Une solution est de passer par programmation VBA.

Peut être par Power Query (donc pas de VBA) mais je doute aussi que cela ne ralentisse aussi l'exécution.

Cordialement

Bonjour,
Que penses-tu de l'idée de joindre un fichier (réduit si la taille est trop importante) ?
Cdlt.

Bonjour Jean-Eric,
Voilà j'ai réussi à réduire au maximum la taille de mon fichier excel.

Cordialement,

12maternelle2.zip (476.60 Ko)

Re,

En attendant Jean Eric, vu que vous lui répondez.

Une chose peut être déjà à faire (si ce n'est déjà fait. J'en ai l'impression en voyant l'image dans votre post) serait de mettre vos tableaux au format structuré.
- feuille Trame --> positionnez vous sur B2 par exemple
- Allez dans le menu --> Accueil --> icone "mettre sous forme de tableau
- Laissez la case "mon tableau à des entetes
- Choisissez un format de tableau
- En E2 mettez cette formule --> =[@[Irradiance W/m²]]/1000*$L$3*$K$3*$I$3/1000
- Refaites de même pour la feuille Simulation
- ensuite dans la feuille simulation mettez cette formule en D2 --> =SOMME.SI.ENS(Tableau1[Production (KW)];Tableau1[Date & Heure];[Date & Heure])

- Dans les gestionnaire de noms, Tableau1 doit correspondre à vos données en feuille Trame

- Vous pouvez aussi tenter le même procéder pour la feuille Courbe en vous positionnant en B4, puis mettre au format structuré

A voir si cela accélère légèrement...

Comment complétez vous les tableaux ?

il n'y a qu'une donnée par heure, alors un simple recherche au lieu de ces sommes est plus efficace.

(le zip file était corrupt, donc c'est un file reducé)

11maternel.xlsx (234.25 Ko)

Bien vu BsAlv !

Si vous avez les tableaux structurés comme je vous ai écrit avant, on utilise la formule Index proposée par BsAlv. D'où en D2 de la feuille Simulation, vous mettez ceci --> =INDEX(Tableau1[[Date & Heure]:[Production (KW)]];EQUIV([@[Date & Heure]];Tableau1[Date & Heure];);3)

Crldt

Bonjour Dan et BsAlv,

D'abord merci pour votre aide !
Au départ j'avais réalisé des tableaux structurés mais je pensais que cela rendait le fichier plus lourd donc les calculs plus longs, au temps pour moi.
Je vais utiliser la fonction index equiv qui me parait plus adaptée dans ma situation. Je vous remercie je vais mettre tout ça en place et proprement :)

Rechercher des sujets similaires à "recuperer donnees fonction plage"