Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

application.sum et variable tableau

  • Initiateur de la discussion Initiateur de la discussion Hervé
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

petite question à soumettre à votre sagacité.

J'ai une base de données (+ de 100 000 lignes et 27 colonnes) provenant d'un fichier txt.

je dois faire certains traitement sur cette base, des sommes avec critères, des moyennes, etc....

je stocke cette base dans une variable tableau (le célèbre tablo, que me jalouse josé et Mdf 😀) .

afin de simplement faire la somme d'une colonne précise, je me suis fait une fonction personnalisée, me transformant ce tableau multidimension en un tableau unidimension (ca se dit ca ?)

Mais je me demande si je ne pourrais pas simplifier et rendre plus rapide mon code, particulierement en évitant la boucle for to dans la function.

je suis donc preneur d'idée.

je joins un fichier exemple, en appuyant sur le bouton vous faites la somme de la colonne B (magique, non ? )

PHP:
Option Explicit
Option Base 1
Dim tablo

Sub test()
tablo = Range("a1").CurrentRegion
MsgBox Application.Sum(redefinitablo(2))
End Sub

Public Function redefinitablo(colonne As Byte)
Dim tablofunction() As Double
Dim i As Long

ReDim tablofunction(1 To UBound(tablo))
    
'**********ce que je voudrais éviter :)
For i = 1 To UBound(tablo)
    tablofunction(i) = tablo(i, colonne)
Next i
'***************************************

redefinitablo = tablofunction
End Function

salut 🙂
 

Pièces jointes

Re : application.sum et variable tableau

re à vous

Alors comme je vois que rien de nouveau n'a été proposé, voici ma solution. En fait, je vous en mets deux pour le prix d'une : la première est celle que j'avais développée avant que je m'aperçoive que les fonctions de feuilles de calcul ne fonctionnaient pas sur des tableaux de 100000 lignes. Cela n'empêche qu'on peut tout de même boucler sur une colonne pour en faire la somme très rapidement. Son avantage est qu'elle reste simple de conception.

Mais comme je voulais pouvoir utiliser tout de même ces fonctions de feuille de calcul, j'ai utilisé une sorte de chaînage par tranches de 50 000 lignes sur chaque colonne. J'admets qu'on se retrouve vite avec une usine à gaz qui ne se justifie peut-être que pour le plaisir du test, mais bon, ça marche et c'est même un poil plus rapide que ma version 1 (ce qui est l'essentiel).

Résultat des courses :
Lecture du fichier et somme des éléments d'une colonne :
Solution de Didier avec des Split (que je déteste car pas du tout optimisés -les Split, pas Didier) : 96 sec.
Ma solution v1 = 10 à 11 sec.
ma solution v2 = 9,5 secondes

Evidemment, ce qui prend le plus de temps là-dedans, c'est la lecture du fichier texte, on voit que quand on passe par un Split, ça rame beaucoup (mais bon, je n'accorde aucune confiance à Didier qui ne sait pas reconnaître une jolie petite voiture. - private joke). Heureusement on ne le lit qu'une fois, ensuite, même un bouclage sur une colonne entière sera quasi immédiat.

Une remarque : d'une façon générale, quand on travaille sur de très longues chaînes de textes, on peut, selon la façon dont on s'y prend, perdre (ou gagner, c'est selon) beaucoup de temps. En particulier, VB n'aime pas quand on lui dit par ex : S = S & "xxx". Voyez la macro que j'ai faite pour créer le fichier de test, j'ai gagné du temps en travaillant avec une chaîne intermédiaire plus courte que la chaîne principale, mais j'aurais pu en gagner beaucoup plus en utilisant certaines autres astuces que je n'ai pas pris la peine de mettre en oeuvre ici.
Il faudrait que je fasse un petit point là-dessus un de ces jours si j'en ai le courage...
 

Pièces jointes

Dernière édition:
Re : application.sum et variable tableau

Bonsoir Hervé, JeanMarie, Pascal76, Jeannot45, Ti_, le Forum.

Mon cher ami Ti_, vérification faite, avec ton code tu divises par 10 (et +) le temps de traitement de ma proposition précédente... Tu veux que je te dise ? C'est une honte ! 😉

Cela dit, je ne comprends pas qu'un gars comme toi, qui sait faire du code aussi rapide puisse se promener avec une bagnole pareille... 😀

A bientôt.
 
Re : application.sum et variable tableau

bonsoir tout le monde

lol, pas compris grand chose à vos histoire de bagnoles et de cubes jaunes.

par contre, ti, j'ai plus compris ton code, et là, que dire.

de la magie ?

non, trop facile.

du maléfique ?

pourquoi pas.

du génie ?

là est la vérité.

merci à toi

non seulement ton code est optimale, mais en plus il reste à la porté de mon niveau.

il est tellement facile de lancer de la poudre au yeux et de faire croire que l'on viens d'une autre planete informatique, toi comme didier, rester humble.

respect

salut
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
40
Affichages
3 K
Réponses
33
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…