Lenteur extrème d'un copier/coller entre 2 fichiers xlsm

Colombine

XLDnaute Junior
Bonsoir à tous,

J'ai un problème incompréhensible face à 1 copier/coller en vba!!

J'ai deux fichiers ouverts :Acceuil et classeur2

Dans mon classeur 2 , j'ai une macro import que vide mon onglet sortie du classeur 2 et va y coller les données qui se trouvent dans le fichier accueil onglet sortieutilise.

Ce qui m'inquiete c'est la lenteur d'exécution pour environ 60 lignes : entre 5s (lors de la première utilisation) et cela monte jusqu'à 150s après plusieurs utilisations successives.(La vitesse est calculé et s'affiche en A1 dans l'onglet Accueil du classeur2)

Sachant que ce fichier est amené à contenir de très grosses données à terme, je me demande comment accélérer ce temps de traitement et pourquoi est il aussi variable.

1 / Soit ma macro IMPORT est nulle ! (Et oui c'est possible : Rires)
2 / Est ce un problème d'encombrement du presse papier?
3 / Soit il y a un autre problème mais je ne sais pas quoi : même le copier coller manuel est plus rapide !!

ci joint les fichiers afin que ce soit plus facile pour vous.

Merci par avance pour votre aide et vos conseils à venir.

Colombine
 

Pièces jointes

  • Accueil.xlsm
    341 KB · Affichages: 85
  • Classeur2.xlsm
    210.7 KB · Affichages: 86
  • Accueil.xlsm
    341 KB · Affichages: 91
  • Classeur2.xlsm
    210.7 KB · Affichages: 95
  • Accueil.xlsm
    341 KB · Affichages: 105
  • Classeur2.xlsm
    210.7 KB · Affichages: 100

Dranreb

XLDnaute Barbatruc
Re : Lenteur extrème d'un copier/coller entre 2 fichiers xlsm

Bonsoir.
Essayez celle là :
VB:
Sub Import2()
Dim Source As Range
Application.Calculation = xlCalculationManual
Set Source = Workbooks("Accueil.xlsm").Worksheets("SortieUtilise").UsedRange
Feuil2.Cells.EntireRow.Delete
Source.Copy Destination:=Feuil2.[A1]
Application.Calculation = xlCalculationAutomatic
End Sub
Véfifiez si Feuill2 est bien le CodeName de la feuille Sortie destinatrice. Une discussion récente à montré une différence inexpliquée après une conversion de .xlsm en .xls

P.S. Attention, je viens de découvrir par hasard dans vos deux classeurs un nombre incroyablement élevé de noms commençant tous par "données_" suivis d'un nombre. Il faudrait faire le ménage !
 
Dernière édition:

Colombine

XLDnaute Junior
Re : Lenteur extrème d'un copier/coller entre 2 fichiers xlsm

Bonjour,
En effet cette macro fonctionne déjà mieux !

"Attention, je viens de découvrir par hasard dans vos deux classeurs un nombre incroyablement élevé de noms commençant tous par "données_" suivis d'un nombre. Il faudrait faire le ménage ! "

c'est vrai mais je ne comprends pas comment ces noms de données arrivent ici, ça correspond à quoi?
est il possible d'éviter ces enregistrements lors de mes traitements? Je veux bien des éclairage sur cette piste.

Merci
 

Dranreb

XLDnaute Barbatruc
Re : Lenteur extrème d'un copier/coller entre 2 fichiers xlsm

Bonjour.
Je pense que la cause est dans une macro du 1er classeur qui spécifie "données" comme paramètre à une procédure.
Peut être faire avant cette procédure ThisWorkbook.Names("SortieUtilise!données").Delete ou quelque chose comme ça.
 

Colombine

XLDnaute Junior
Re : Lenteur extrème d'un copier/coller entre 2 fichiers xlsm

En effet c'est impressionnant ce nombre de connexions qu'il garde en memoire.

Donc voilà ce que j'ai fait :
1 / une petite macro pour effacer toutes les connexions existantes et c'est impressionnant :

Sub Nettoyage_Connexions()

Dim i As Long

For i = 1 To 100000
On Error Resume Next
ActiveWorkbook.Connections("sortie" & i).Delete

Next i
End Sub


2 / j'ai cherché d'ou venait le problème et en effet c'est dans ma macro d'import de fichier csv que je rencontre un problème.

A chaque import de mon fichier CSV il m'enregistre une connexion.

J'ai donc utiliser l'enregistreur de macro et j'ai coché à la fin de l'import le fait de ne pas garder la requête de sélection ( a priori cela fonctionne car quand je vais dans connexion je n'ai rien).

Par contre lorsque je regarde ce que l'enregistreur de macro a enregistré, c'est identique que je coche la case ou non !!!

Est ce que quelqu'un saurait m'aider à refaire PROPREMENT EN VBA ma macro IMPORT de mon fichier accueil en incluant le fait de ne pas garder cette connexion, je veux juste importer les données de mon fichier CSV sans y lier une connexion quelconque.

Merci d'avance pour votre patience.
 

Dranreb

XLDnaute Barbatruc
Re : Lenteur extrème d'un copier/coller entre 2 fichiers xlsm

Il se trouve que je n'ai jamais utilisé ça. Mais essayez comme ça :
VB:
Dim QT As QueryTable
ActiveWorkbook.Worksheets("SortieGlobale").Activate
On Error Resume Next
Set QT = ActiveSheet.QueryTables("données")
If Err Then
   Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Traitement Données Commerciales\sortie.CSV", _
      Destination:=ActiveSheet.[A1])
   QT.Name = "données": End If
On Error GoTo 0
With QT
        .FieldNames = True
et continuez avec le reste comme déjà fait.
Remarque: il se peut que seul le .Refresh BackgroundQuery:=False soit à refaire si le QT existe déjà
Auquel cas il suffirait de mettre en tête de la procédure telle qu'elle est par ailleurs :
VB:
On Error Resume Next
ActiveWorkbook.Worksheets("SortieGlobale").QueryTables("données").Refresh BackgroundQuery:=False
If Err = 0 Then Exit Sub
On Error GoTo 0
 
Dernière édition:

angel97310

XLDnaute Nouveau
Re : Lenteur extrème d'un copier/coller entre 2 fichiers xlsm

Bonjour,

J'ai tenté de créer un fichier avec des macros. Mes connaissances sont très limitées.
Après quelques galères, j'y suis enfin arrivée mais le souci aujourd'hui est que l'ouverture et l'enregistrement prend un temps anormalement long. (message d'excel précisant que le programme ne répond plus).
j'ai tenté de l'ouvrir sur d'autres ordinateurs et toujours le même constat.

Que dois je faire pour diminuer ce temps?

je n'arrive même pas à joindre mon fichier même compressé .

j'ai une demande supplémentaire. j'aimerais effacer les données dans les listes déroulantes, une fois que la personne a cliqué sur enregistrer pour la feuille "Cahierliaison" et pour la feuille "recherche", quand je quitte la fenêtre, les données puissent s'afficher sans aucun filtre.

Merci à celui ou celle qui pourra m'aider.

Angel
 

Discussions similaires

Statistiques des forums

Discussions
312 087
Messages
2 085 198
Membres
102 815
dernier inscrit
Henridic