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

Les Macros se trainent ! !

  • Initiateur de la discussion Initiateur de la discussion WDAndCo
  • 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 !

WDAndCo

XLDnaute Impliqué
Bonsoir le Forum

J'ai un classeur dans le quel il y a une macro qui va voir dans un dossier et reviens avec les noms de tous classeur de ce dossier.
Puis une autre me découpe ses noms pour remplir une base, avec la quelle et un système de filtre (merci BrunoM45) je choisi le bon classeur a ouvrir. Le problème est que la macro qui remplis la base prends un certain temps ! (Il y a pour l’instant que 500 classeurs je pense qu'il en auras 6 fois plus lorsque cela sera opérationnel)

1) Est il possible de la rendre plus rapide ?
2) Je cherche un moyen d'éviter le lancement de cette macro si le nombre de fichier dans le dossier est égal au nombre de nom (MAJ superflue)

Je joint un fichier (les macros sont neutralisées pour éviter de vider la base)

D'avance merci.
 

Pièces jointes

Dernière édition:
Re : Les Macros se trainent ! !

bonjour Dominique ????
Bonjour le Forum
Bonjour Le Fil

Pourrais tu mettre un fichier exemple "Fiche MP" ?
afin de pouvoir traiter , tester la procédure
Merci par avance
Bonne Journée
Jean Marie
 
Re : Les Macros se trainent ! !

Bonsoir le Forum, Oliver77 et Jean Marie (Toujours dans la Boite ?)

Jean Marie le Dossier ou un classeur ne te donneras pas beaucoup plus d’information, mais regarde les 2 photos jointes !
Une Macro récupère les noms de tous les classeur qui sont dans dossier "Fiche MP", puis les découpe avec le _ comme séparateur pour alimenter la base. Actuellement ils n'y a que 500 classeurs environ, mais il en auras beaucoup plus ! La MAJ prends déjà du temps. Donc comment la rendre plus véloce pour le futur ?
J'ai déjà profité de l'aide de BrunoM45 et bien d'autre sur ce Forum ! Et je suis bien content de te croisé à nouveau.

Dominique
 

Pièces jointes

  • 2012-04-19_184619.jpg
    33.7 KB · Affichages: 84
  • 2012-04-19_185035.jpg
    112.3 KB · Affichages: 61
Re : Les Macros se trainent ! !

Bonjour le fil, salut WDAndCo 😉

Peut-être en mettant un "Option Explicit" en début de module
+ En désactivant le Calcul et les évènements

A tester fichier joint

Mais ça dépend également du PC
C'est comme pour une voiture ....
Si tu as une 2CV, tu as beau baisser la tête tu n'iras jamais aussi vite qu'une Ferrari 😱😀

A+
 

Pièces jointes

Dernière modification par un modérateur:
Re : Les Macros se trainent ! !

Bonsoir.
Elle pourrait sûrement être rendue un peu plus rapide en renseignant tout dans un tableau de variant déchargé en une seule fois et en supprimant les liens hypertextes.
Une Worksheet_SelectionChange pourrait très bien ouvrir le classeur.
Cordialement.
 
Re : Les Macros se trainent ! !

Bonsoir le Forum

Merci Bruno, ici a la maison sa tourne, je vais voir si au boulot s'est la même chose de plus cela seras en réseau !

Si il y a un moyen plus rapide de découper cela : _BS_Moteur Calé_0.0476_Gauche_95_UIC60-A74_Béton_Avec VCC_8_4___At à Droite_AM à Gauche__Normal_.xls puis de remplir les colonnes pour avoir la possibilité de filtrer et enfin d'ouvrir le classeur choisi, je suis preneur.

Dominique
 
Re : Les Macros se trainent ! !

Bonsoir le Forum

Voila 5' pour environ 500 classeurs, plus rapide que la semaine dernière mais est il possible de l’accélérer encore, si oui comment ?

Dominique
 
Re : Les Macros se trainent ! !

Bonsoir.
Avez vous suivi ma suggestion ?
P.S. Dites vous bien qu'il est largement plus de 10000 fois plus rapide de décharger en une seule instruction le contenu d'un tableau de Variant dans une plage de 40000 cellules que de modifier 40000 fois une seule cellule. La raison tient à ce que largement plus des 3 / 4 du temps de l'opération est consacré à aménager une zone de mémoire d'accueil de la valeur tout en créant les liens nécessaires pour qu'elle devienne définitivement représentative du contenu de la cellule. Il y a donc tout intérêt à ce que cela ne soit effectué qu'une fois. Le temps nécessaire au rangement préalable du résultat souhaité dans un tableau de Variant est toujours largement rattrapé grâce à cela.
A +
 
Dernière édition:
Re : Les Macros se trainent ! !

Bonjour
je plussoie ++++ à la suggestion de Dranreb.
Les 2 choses qui accélèrent de façon très significative les macros sont
1) de mettre le mode de calcul sur manuel en début de macro et de le remettre sur auto à la fin quand il y a plein de formules dans les classeurs. Cela dit ici ce n'est probablement pas ça qui va révolutionner la rapidité
2) de récupérer toutes les infos à traiter dans un Array et de les injecter en une seule fois dans la feuille. Je t'incite à lire et à tester ce qui est ici
Ce lien n'existe plus
pour voir que les arrays peuvent accélérer d'un facteur 1000 le déroulement d'une macro (vraiment).
 
Re : Les Macros se trainent ! !

Bonsoir le Forum

Mais comment charger le tableau en une fois ? !
Comment récupérer les noms de tous les classeurs, les découper puis les placer dans le tableau, faire les liens et tous cela en une fois, sans boucle. La je ne comprends pas.
Je remets la dernière version (déjà un peu plus rapide, merci BrunoM45)

D'avance merci
Dominique
 

Pièces jointes

Re : Les Macros se trainent ! !

Bonsoir WDAndCO

Tu trouveras ci-joint ton fichier avec une Sub "ListeTablo"
qui utilise un tableau pour faire la manip.

Malheureusement pas complètement, car lorsque je veux réinjecter le tableau sur la feuille directement,
seule la première ligne est répétée x fois, je ne comprends pas pourquoi !?

Mais des pros du pot (Dranreb ou Misange 😱) vont certainement nous l'expliquer

A+
 
Dernière modification par un modérateur:
Re : Les Macros se trainent ! !

Bonjour tous.
Je pense que la facilité de transfert entre tableaux et plage doit pouvoir se faire obligatoirement dans les deux sens dans tous les cas, ou pas du tout. Lorsqu'elle concerne plusieurs cellules, l'image d'une propriété Value de Range doit donc obligatoirement être un tableau de Variant et non un tableau de String.

Ahouaïe ! Et je n'avais même pas vu le plus gros : ça doit obligatoirement être un tableau à deux dimensions s'il est fait pour plusieurs lignes. Par conséquent faire :
VB:
Range(Cells(2, 18), Cells(2 + UBound(FolderFiles) - 1, 18)) = WorksheetFunction.Transpose(FolderFiles)
Bonjour WDAndCO
faire les liens et tous cela en une fois, sans boucle. La je ne comprends pas.
Il n'est pas question de ne pas faire de boucle, il est juste question de n'y faire de requêtes Excel. donc au lieu d'y changer des valeurs de cellules, mettez leurs valeurs dans des éléments d'indices convenablement incrémentés d'un tableau de Variant. Relisez mon poste #6: je proposais d'éliminer les liens hypertextes. À mon avis ils sont toujours complètement absurdes s'ils ne peuvent concerner que des classeurs Excel, voire certaines de leurs feuilles précise. Une Worksheet_SelectionChange peut très facilement effectuer exactement le même travail que le suivi d'un lien hypertexte vers un classeur Excel.

Cordialement.
 
Dernière édition:
Re : Les Macros se trainent ! !

Salut Dominique
Bonjour le Fil
Bonjour le Forum

Oui je suis toujours dans l'entreprise et pour quelques années encore , enfin je verrai Lol

Bonne journée

Amicalement

Jean-Marie
 
Re : Les Macros se trainent ! !

Bonjour le fil
Salut Dranreb

Si je puis me permettre 😱
Ce qui est "absurde", c'est vouloir "imposer" ça façon de faire.
Si un utilisateur a envie d'avoir des liens hypertextes, pourquoi vouloir changer ça façon de faire !?

Certes, cela ralenti la mise à jour du tableau, mais au moins les liens sont là 😉

En tout cas merci pour les indications "Dim as Variant" et "Transpose", ça marche 😀
Lien vers le fichier : http://cjoint.com/?BDzpPQsWhKJ

En toute amitié
A+
 
Dernière modification par un modérateur:
- 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
8
Affichages
317
T
  • Résolu(e)
Microsoft 365 pb effacement macro
Réponses
8
Affichages
795
Themax
T
Réponses
5
Affichages
653
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…