Vous n'êtes pas identifié(e).
Bonjour,
J'ai pas bien l'habitude des macro sur Excel, j'en ai fait une petite très simple et ça me pose un gros problème de performance, alors si certain d'entre vous peuvent m'aider là dessus.
Bon j'ai un fichier excel de 7 000 lignes d'urls sur une première colonne, sur la seconde j'ai le h1 correspondant à chaque url.
Sur une 3ème colonne mon besoin était de récupérer les x premiers mots du h1. J'ai fait une fonction xWords que voici :
Function xWords(c, n) As String
Retour = ""
For i = 1 To n
If i > 1 Then Retour = Retour + " "
Retour = Retour + STR_SPLIT(c, " ", i)
Next
xWords = Trim(Retour)
End Function
C'est pas un calcul bien compliqué, et bref ça marche niquel.
Le problème c'est que ça met beaucoup de temps à calculer, normal, il y a 7 000 lignes. Cela dit si je fais des opération avec des formule excel native type "SUBSTITUE, NBCAR..." le résultat est instantanné, il n'y a pas moyen d'arriver au même genre de perf avec des fonction aussi simple ?
Le second problème, est que dès lors que je fait un tri sur une de mes colonnes pour change l'alignement de chaque ligne, il me recalcule toute la colonne des xWords, donc à la moindre opération sur mon tableau, j'attend que ça charge, c'est plutôt chiant. Il n'y a pas moyen quitte à ne pas pouvoir améliorer les perf des macro, de dire à excel de ne pas recalculer toutes mes ligne dès lors que je change le tri ou que je met un filtre ? D'ailleurs sur les fonction native j'ai pas l'impression qu'il s'amuse à tout recalculer.
La seul solution viable que je trouve pour le moment c'est de recopié en brut le retour de mes formule une fois que je les ai génerer pour faire des tri sur des valeur brut ensuite mais c'est dommage de perdre mes formules je trouve...
Il doit y avoir un truc à faire, sinon je me dit que ceux qui travaille sur des plus gros fichier avec plusieurs macro doivent péter un cable !
🔴 Hors ligne
Bon j'ai régler mon problème en fait, désolé pour le double post, au pire ca pourras servir à quelqu'un.
Fichier->options->Formules -> Calcul du classeur -> Cocher "Manuel" comme ça ça passe niquel...
Ensuite pour forcer le calcul d'une feuille c'est shift+F9, sur tout le classeur c'est F9 et sur une cellule faut la sélectionner et faire "f2" puis entrer. J'ai pas trouver moyen de recalculer avec un raccourci sur une plage de cellule par contre c'est dommage mais bon ça me change déjà bien la vie.
EDIT :
J'ai fais une macro pour recalculer une plage active, j'ai mis un raccourci clavier sur cette macro (ctrl w pour moi)
Sub Calcul()
'
' Calcul Macro
'
' Touche de raccourci du clavier: Ctrl+w
'
Selection.Calculate
End Sub
Du coup je sélectionne ma plage ctrl+w et c'est bon.
Dernière modification par Mitsu (2015-06-10 07:02:24)
🔴 Hors ligne