Rendre code plus léger et execution plus rapide ?

Bonjour à tous,

J'ai un code VBA, trés long, et qui met quelques secondes a s'executer. Je pense que le soucis proviens de ma façon de coder.

Est-ce possible de faire quelque chose pour qu'il mette moins de temps a l'execution?

Le fichier est pour mon entreprise, je réalise celà avec des collègues, on souhaite recenser les bons hotels et restaurant du coins.

Merci d'avance,

Fab.

PS: certaines feuilles sont cachées. Code pour accés aux feuilles vérouillées

Bonjour,

Mets ton fichier en ligne avec données non confidentielles sans quoi on ne sait pas de quoi tu parles.

Un premier jet de choses qui peuvent faire ralentir :

  • trop de couleur dans tes feuilles
  • trop de formules surtout type matricielles
  • les bordures surtout les bordures fines (genre pointillées)

Amicalement

Bonjour,

Quelques pistes, c'est classique mais en début de macro, désactive le rafraichissement

d'écran avec "Application.ScreenUpdating = False". En fin de macro, réactive avec "Application.ScreenUpdating =True".

Tu peux aussi bloquer le recalcul automatique avec "Application.Calculation = xlCalculationManual"

et en fin de macro le remettre en automatique "Application.Calculation = xlCalculationAutomatic"

Cordialement

Bonjour,

J'utilise bien entendu, autant que possible, la ligne de code "Application.ScreenUpdating =True", et la remet à "True" dès que les actions sont terminées (afin que les fenêtres s'actualisent correctement).

Concernant les lignes suivantes, je ne les utilise pas car j'effectue deux trois calculs de moyenne sur une feuille (qui récupère 11 caleurs de mon UserForm).

Application.Calculation = xlCalculationManual

Application.Calculation = xlCalculationAutomatic

Concernant la poste de Dan, les couleurs peuvent ralentir une Macro ? Ca peut alourdir le fichier je pense, mais pas le temps d'execution du code, si ?

Bonne journée,

Fab.

Dim frm As Object

if Search_details.visible = True
     Set frm = VERIFICATION_Fr
Else :  Set frm = BARIC_Fr
End if

frm.ville = sheest("BDD").cells(ID,1).value
frm.nom = sheest("BDD").cells(ID,2).value
frm.pays = sheest("BDD").cells(ID,3).value

Voici un exemple d'une partie de mon code qui semble ralentir l'execution de ma macro d'environs une a deux secondes.

Le but de ce code est de vérifier laquelle des feuille est en cours de vision (BASIC_Fr ou VERIFICATION_Fr). Toute deux ont les même champs, et ont les mêmes conditions de vérification (si champs vide, ...). J'ai donc mis en place ce bout de code, cepenant je n'ai affiché la que trois des vaingtains "vérifications".

re

Concernant la poste de Dan, les couleurs peuvent ralentir une Macro ? Ca peut alourdir le fichier je pense, mais pas le temps d'execution du code, si

Ce qui peut ralentir c'est une modification de feuille pendant l'exécution du code.

Maintenant avec la suspension du calcul automatique, cela ne devrait pas poser de souci mais bon sans voir le fichier en question, on ne sait pas analyser le pourquoi.µµEs-tu sur que tu n'as pas un code qui s'exécute automatiquement en fonction d'un autre code ? Je parle d'un code dans tes feuille de calcul genre Private sub worksheet change ou selection change

A te relire

C'est possible d'avoir un mail ou t'envoyer le fichier? J'ai laissé les noms dedans, donc suis pas trop pour le poster ici...

Bonjour Fab57100 le forum

oui pour aller plus vite tu utilises des tableaux et là tu vas gagner du temps, comme le fichier que je t'avais fait d'ailleurs, et que tu as certainement modifié en travaillant directement sur la feuille, mais là, en travaillant sur la feuille, c'est pas la même vitesse du tout!!!

a+

Papou

paritec a écrit :

Bonjour Fab57100 le forum

oui pour aller plus vite tu utilises des tableaux et là tu vas gagner du temps, comme le fichier que je t'avais fait d'ailleurs, et que tu as certainement modifié en travaillant directement sur la feuille, mais là, en travaillant sur la feuille, c'est pas la même vitesse du tout!!!

a+

Papou

Bonjour,

Qu'entends-tu par travailler avec les tableaux ?

Bonne journée,

Fab.

Bonjour Fab57100 le forum

décidément tu ne lis jamais les réponses que l'on te fait ou quoi?? tu m'as déjà posé le question pour ton userform de recherche

l'utilisation de tableau virtuel permet de travailler en mémoire uniquement et de traiter les infos beaucoup, beaucoup, plus vite

Mais tu m'avais dit que tu avais compris, dans ta dernière réponse, donc ta question me surprend un tantinet

quoi qu'il en soit sans le fichier et le code je ne peux rien pour toi

a+

Papou

Bonjour,

Tableaux virtuels me parlais pas désolé. C'est vrai que ceci serait le mieux, surtout que je récupère toute les informations dedans !

Je prends donc note de cette proposition immédiatement

Néanmoins, malgrés que je travail avec les tableaux virtuels, le code qui ralenti l'execution est le suivant :

Dim frm As Object

if Search_details.visible = True
     Set frm = VERIFICATION_Fr
Else :  Set frm = BARIC_Fr
End if

Bonne journée,

Fab.

PS: En fait ce que j'avais pas compris la dernière fois, mais que j'ai ensuite compris en décortiquant le code, c'était la colonne "oui", qui en fin de compte correspond aux recherches justes.

Re Fabdu57100 le forum

Fab pour t'aider il me faut le fichier avec le code et les explications de la manipulation que tu fait pour avoir cette perte de temps ou l'utilisation que tu en as, car peut-être ne procède tu pas comme il faut, enfin je peux t'aider , mais aide moi à comprendre et là je vais te faire du boulot

a+

papou

PS: pour le "oui" dans l'autre macro effectivement c'est ma manière de marquer les valeurs retenues et à traiter

Fichier :

(fichier trop gros pour le mettre en PJ ici )

Ci joint deux documents EXCEL ayant tous deux la même fonctionnalité, cependant, un avec une modification :

1. Guide_rapide : Le module "a_CRITERES_TYPE" comporte un nom de frame fixe (BASIC_Fr)

2. Guide_lent : Le module "a_CRITERES_TYPE" comporte un nom de frame variable selon ou je suis.

Le fichier 1 est rapide lors d'une action (lancer le guide, ajouter, OK, choisir un type : Temps < 1s)

Le fichier 2 est lent lors d'une action (lancer le guide, ajouter, OK, choisir un type : Temps > 1s)

La différence entre le fichier 1 et le fichier 2, est le bout de code suivant :

    
Dim frame As Object

    If Search_details.Visible = True Then
        Set frame = VERIFICATION_Fr
    Else: Set frame = BASIC_Fr
    End If

Cette partie de code me sert a changer le nom de l'UserForm actif. Plus d'infos sur mon autre post : https://forum.excel-pratique.com/excel/nom-de-l-userform-dans-une-variable-t32206.html

Merci d'avance de l'aide,

Fab.

PS: Je t'ai envoyé le mot de passe de l'archive par MP

PS: Sans doute une des raison de la lenteur => Je récupère 46 valeurs dans la ListView... (J'ai mis a jours la récupération grâce au tableau virtuel). Néanmoins, l'élément ralentissant toujours le code est celui mentionné ci-dessus. Sans doute normal vu la fonction que j'utilise ?

Bonsoir Fabdu57100 le forum

j'ai bien vu tes fichiers mais là je n'ai pas le temps, je ferai cela mercredi

a+

Papou

Bonjour,

Je te remercie pour l'aide.

Fabrice.

Bonsoir fabdu57100 le forum,

je viens d’ouvrir ton fichier, enfin si on peut appeler comme cela ce que tu m'as envoyé,

toutes les feuilles avec un mot de passe, les explications même pas recopiées dans une zone de texte!!

Enfin que du bonheur quoi, un fichier au top

a+

Papou

paritec a écrit :

Bonsoir fabdu57100 le forum,

je viens d’ouvrir ton fichier, enfin si on peut appeler comme cela ce que tu m'as envoyé,

toutes les feuilles avec un mot de passe, les explications même pas recopiées dans une zone de texte!!

Enfin que du bonheur quoi, un fichier au top

a+

Papou

Bonsoir,

Je t'avais envoyé LES mot de passe par MP a l'epoque. Je te les ai réenvoyé.

Qu'entends-tu par "explications même pas recopiées dans une done de texte" ????

Fab.

Bonjour fabdu57100 le forum

les explications de ce que l'on doit faire tu les postes sur le forum, au lieu de les copier dans une zone de texte dans le fichier!!

a+

Papou

paritec a écrit :

Bonjour fabdu57100 le forum

les explications de ce que l'on doit faire tu les postes sur le forum, au lieu de les copier dans une zone de texte dans le fichier!!

a+

Papou

Pour information ces infos sont SUR LE FORUM (https://forum.excel-pratique.com/post183048.html#p182831) et SUR UN FICHIER TEXTE.

Donc je ne vois pas ou est le mal !

Rechercher des sujets similaires à "rendre code leger execution rapide"