gregorydekimpe
Messages postés8Date d'inscriptionmercredi 13 février 2008StatutMembreDernière intervention20 février 2008
-
15 févr. 2008 à 10:49
florian35d
Messages postés4Date d'inscriptionlundi 20 avril 2009StatutMembreDernière intervention20 février 2012
-
20 févr. 2012 à 21:37
Bonjour à tous,
Voilà je débute en programmation VB depuis que je suis engagé et...dur, dur! En gros j'ai du faire une macro qui permet de récupérer des données dans plein de fichiers pour tout rassembler en un seul. Le seul problème persistant est qu'il me demande, après chaque copier-coller dans le fichier "central", s'il doit conserver ce qu'il a dans la mémoire tampon! Evidemment il ne doit pas le conserver, mais quand j'exécute la macro il me le demande à de nombreuses reprises. Existe-t-il une commande permettant de vider la mémoire tampon entre chaque "exécution" (copier-coller d'un fichier vers le fichier central, chose que je n'ai pu automatiser dans une boucle étant donné la complexité des noms de fichiers. Dans un seul Sub, je fais donc le même bloc de commande pour chaque fichier, ce qui est assez lourd mais je ne crois pas qu'il y ait d'autre solution).
Donc si quelqu'un à une idée pour vider automatiquement cette mémoire tampon, ça serait très sympa!
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 15 févr. 2008 à 11:38
Salut
Catégorie de la question passée sous VBA (à noter pour tes prochaines questions)
As-tu essayé d'enregistrer une macro en faisant les manips à la main pour voir (*) s'il ajoute un paramètre à l'instruction permettant de prendre en compte ce choix ?
(*) voir dans Outils, Macro, Editeur Visual Basic
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
gregorydekimpe
Messages postés8Date d'inscriptionmercredi 13 février 2008StatutMembreDernière intervention20 février 2008 15 févr. 2008 à 11:49
Désolé mais... je ne comprends pas bien le sens de ta question :$! J'ai tout fait "à la main" à partir de Visual Basic Editor, mais je ne sais pas comment lui dire qu'il doit vider la mémoire tampon après chaque "instruction". Je m'explique : dans mon Sub j'ai plusieurs blocs du genre :
" Ouvrir tel fichier
Copier ce qu'il y a dedans
Le coller dans mon fichier central
Refermer le fichier (pas le central)"
Et il me demande à chaque fois s'il doit conserver ce qu'il a en mémoire (beaucoup de données) pour une autre application. La réponse est "non", et j'aimerais savoir s'il y a une ligne de code permettant de vider la mémoire entre chaque bloc.
Désolé si ma question est idiote, je débute vraiment :-(.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 15 févr. 2008 à 17:11
Salut
Oui, teste .DisplayAlarts, cela peut fonctionner
Sinon, je n'ai pas été suffisamment précis :
- Tu ouvres tes feuilles et tu commences l'enregistrement d'une macro : menu "Outils", "Macro", "Nouvelle macro ..."
- Une mini-fenêtre apparait avec le symbole carré pour stopper la macro tout à l'heure.
- Ensuite, tu fais à la main ton copier coller pendant lequel il va forcément te demander quoi faire du buffer : Tu lui répond.
- Ensuite, tu stoppe l'enregistrement de la macro avec le petit bouton carré.
- Tu vas ensuite dans le menu "Outils", "Macro", "Macros ..." et tu recherches la macro que tu viens de créer.
- Dedans il y aura la syntaxe de tout ce que tu viens de faire.
- Analyse ces quelques lignes pour voir si l'une d'elles (ou le paramètre optionnel d'une commande Copier) parle de buffer, du style
ExcelBuffer =: Empty ou
Clipboard.Clear
Voilà : Normalement tu as la ligne de code que tu cherches
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 19 févr. 2008 à 10:55
Pour avoir une meilleure idée et pouvoir t'aider efficacement, il faudrait voir comment ton code est monté. Du moins pour la partie Copier/Coller.
Et un peu plus d'explications sur ce fichier central et les autres...
À partir de quel fichier la macro est-elle appelée ?
Est-ce qu'il n'y aurait pas moyen de lire les fichiers à copier même s'ils ont des noms complexes ? Est-ce qu'il n'y a que des fichiers à copier dans ce répertoire ou y a-t-il plusieurs autres fichiers à ne pas toucher ?
... etc...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
florian35d
Messages postés4Date d'inscriptionlundi 20 avril 2009StatutMembreDernière intervention20 février 2012 20 févr. 2012 à 21:37
Essaye :
ActiveSheet.DisplayPageBreaks = False
(a mettre pour le ou les onglets impactés par les calculs, mise en page,etc...)
Cela permet de ne pas ralentir la macro apres plusieurs exécutions (moi cela marche notamment quand je masque et affiche beaucoup de lignes, quand je supprime des lignes, quand je met en page l'impression...)