Excel - Booster les performances... avec de la RAM ???

La braise

XLDnaute Occasionnel
Bonjour à Tous,

Je vous soumets une question technique. :confused:

Je fais tourner une grosse macro sur Excel 2007 qui me fait entre autres beaucoup de recherchev :
50.000 lignes sur 13 colonnes. avec un fichier de mapping de 35.000 lignes...
Je sais.... :)

Comme ordi j'ai un Core 2 Duo (2x 2.33 Ghz) avec 2x 512Mo de RAM.

En fin de traitement, ma macro me calcule le nb de recherchv/seconde.

Avec les 2x 512Mo j'ai 1200/1300 recherv/s

J'ai installé 2x 2Go de RAM pour augmenter la puissance de calcul et à ma grande surprise le taux de recherchev/s stagne à 1350 recherchev/s... :mad:

Est-ce normal???

Je pensais pouvoir accrocher au moins les 2.000!

Qu'en pensez-vous? et plus généralement comment augmenter la puissance de calcul d'Excel?

D'avance merci pour vos avis sur la question. :D
 

Etienne2323

XLDnaute Impliqué
Re : Excel - Booster les performances... avec de la RAM ???

Salut La Braise,
ce que je pourrais te proposer de mieux serait de modifier ta macro de manière à optimiser les performances. Je pense notamment à utiliser des variables tableaux plutôt que des recherches (des centaines de fois plus rapides ...) ou encore des boucles avec des .find.

Sans dépenser pour aller chercher un processeur comme ceux de la NASA, une bonne programmation pourrait probablement régler ton problème ;)

Si tu déposes une partie de ton code ici, je suis convaincu que tu trouveras assez d'âmes charitables pour faire les modifications nécessaires et faire ton bonheur, sans être obligé de réhypothéquer ta maison ;)

Bonne continuité !

Étienne
 

La braise

XLDnaute Occasionnel
Re : Excel - Booster les performances... avec de la RAM ???

Voilà des réponses qui me redonnent le moral! :) :) :)

@ Etienne2323 :
Qu'appelles-tu utiliser des variables tableaux plutôt que des recherches (des centaines de fois plus rapides ...) ou encore des boucles avec des .find.

Pour info, j'utilise des vlookup classiques ex :

'Exemple pour une colonne
'pour info : NB_L_Final = le nb de lignes du fichier
Range("E2").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'" & Fichier_MappingClients & "'!Plage_Clients,5,0)"
Selection.AutoFill Destination:=Range("e2:e" & NB_L_Final)
Range("e2:e" & NB_L_Final).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Si il y a plus rapide, je suis on ne peut plus intéressé! :)

J'ai pensé déjà à utiliser :
Application.screenUpdating = False (avant le calcul) et True après.
Il faut que je teste.

Merci à tous pour vos conseils.
 

Etienne2323

XLDnaute Impliqué
Re : Excel - Booster les performances... avec de la RAM ???

Salut La Braise,
dépose ton fichier en pièce jointe et je vais y jeter un coup d'oeil.;). Je suis certain que d'autres tenteront le coup également et te réaliseront de vrais petits tours de magie.

Le principe de base est que chacune des opérations que tu demandes à faire entre excel et vba prend du temps (recherche, copier-coller, etc...) Tout ça peut être remplacé par des opérations faites directement dans vba, par l'utilisation de variables, incroyablement plus efficace et plus rapide comme méthode, mais ça demande une petite connaissance de VBA.

Par exemple, plutôt que de faire des tas decopier-coller et se promener de feuilles en feuilles, tu conserves toutes les données que tu veux coller ainsi que leurs emplacements dans des variables et tu traverses ton onglet au complet. Ensuite, tu vas dans l'onglet dans lequel tu veux faire les copies et tu récupères toutes les valeurs une à la suite des autres. De là l'utilisation de boucles.

Aussi, le Application.ScreenUpdating.False est une ligne que tu devrais mettre dans chacune de tes macros. Beaucoup plus reposant pour les yeux et la macro roule également plus rapidement !

Bref, avec un exemple en pièce jointe, je suis certain qu'on sera en mesure de te redonner espoir !

Cordialement,

Étienne
 
Dernière édition:

Etienne2323

XLDnaute Impliqué
Re : Excel - Booster les performances... avec de la RAM ???

Re,
les fichiers exemples sont en général des fichiers avec un bout seulement de ton information et rien de trop confidentiel puisque c'est disponible à tout le monde.

Ce que je crois qui serait le mieux, c'est de déposer effectivement un fichier de mapping et un fichier à mapper. Ton code devrait normalement se trouver dans un des 2, probablement dans celui de mapping.

Par contre, je dois quitter dans environ 1 heure pour la fin de semaine. S'il n'y a pas eu de développement dans ce post pour ton fichier lorsque je reviendra lundi matin, j'y jetterai un coup d'oeil dès que j'aurai un minute.

Bonne chance !

Étienne
 

Statistiques des forums

Discussions
312 169
Messages
2 085 910
Membres
103 033
dernier inscrit
thazet