Bonjour à tous,
Je poste un message car je n'ai pas trouvé de réponse qui convient à mon problème, mais j'espère que vous pourrez m'aider.
Je dois mettre à jour un fichier excel quotidiennement, à partir d'un extract de base de données. Appelons mon extract mon "Fichier Source", et mon fichier de travail quotidien mon "Fichier Sorti". Mon fichier Sorti contient en moyenne 2000 lignes et j'importe 20 colonnes de mon Fichier Source (qui en contient plus, mais dont je n'ai pas besoin).
Ma méthode de mise à jour est la suivante :
- ouverture du fichier source
- parcours de chaque colonne dans mon fichier sorti => pour chaque colonne :
- Recherche du nom de ma colonne Fsortie dans Fsource
- Copie des données de la colonne identifiée du Fsource (avec nombre exact de ligne)
- Collage de ces données dans Fsortie
- Passage à la colonne suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 While fSortie.Cells(1, colSortie) <> "x" Set c = fSource.Range(Cells(1, 1), Cells(1, 40)).Find(fSortie.Cells(1, colSortie), , , xlWhole, , xlNext) ' Recherche de ma colonne en cours (Fsortie) dans mon fichier source colSource = c.Column ' Récupération de la collone en question dans fichier source fSource.Range(Cells(1, colSource), Cells(nblineSource, colSource)).Copy ' Copier/Coller des valeurs de la colonne source vers ma colonne sortie fSortie.Cells(2, colSortie).PasteSpecial xlPasteValues colSortie = colSortie + 1 Wend
Mon soucis aujourd'hui est que ce Copier/Coller est long : près de 1mn30, pour si peu de données . . . J'ai bien l'une des colonnes qui contient beaucoup de texte (colonne de commentaire), mais à mon avis cela ne justifie pas un temps de traitement si gourmand. . .
J'ai une fonction d'initialisation qui désactive beaucoup de fonctionnalités Excel mais cela ne suffit apparemment pas :
Auriez vous une idée pour me faire gagner en temps de traitement?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 With Application .Calculation = xlCalculationManual .ScreenUpdating = False .DisplayAlerts = False .EnableEvents = False .AskToUpdateLinks = False .DisplayPasteOptions = False End With
Merci beaucoup pour vos lumières ! ! !![]()
Partager