IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Optimisation Copier coller entre deux fichierx xls vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut Optimisation Copier coller entre deux fichierx xls vba
    Bonjour, j'ai encore besoin de votre aide...

    je voudrais effectuer un copier-coller de manière optimal (je suis en effet obligé de copier dans mon fichier colonne par colonne)
    actuellement, ma boucle reseemble à ça..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
               For i = 1 To 15 'parcourir chaque colonne du fichier 'changer par longueur de la liste
     
                    'Cf fontion FindAddress : on recupère l'adresse de la cellule
     
                    'for 1=1..legth (liste_corrspond)
     
                    FindAddress Range("A" & FileId), Worksheets("BASE").Range(tabEquiLettre(i) & 1).Value, tabAddress(i)
     
                    'MsgBox tabAddress(i) 'afficher l'adresse (debug)
     
                    'On vient ensuite ouvrir le fichier pour copier coller ce qui nous interesse
     
                    Application.ScreenUpdating = False 'pas de maj de l'ecran (plus perfomant), à commenter en debug
                    Application.DisplayAlerts = False
                    Workbooks.Open FileName:=Range("A" & FileId).Value 'ouvrir fichier
                    Application.DisplayAlerts = True
     
                    Set addCopier = Worksheets(1).Range(tabAddress(i)) 'addcopier=cellule titre de la colonne
                    addCopier.Select 'selectionner le titre de la colonne'
                    Selection.Resize(numRows + 5000).Select 'etendre la selection au 5000 cellule en dessous
                    Selection.Offset(1, 0).Select 'enlever le titre de la colonne
                    Selection.Copy
                    'Destination:=Worksheets("Base").Range(tabEquiLettre(i) & RowStart) 'copier la plage'
                    Application.DisplayAlerts = False
                    ActiveWorkbook.Close savechanges:=False 'fermer le fichier
                    Application.DisplayAlerts = True
                    Application.ScreenUpdating = False 'debloque l'écran
                    Worksheets("BASE").Range(tabEquiLettre(i) & RowStart).Select  'selectionner le range
                    ActiveSheet.Paste 'coller
     
                Next

    Mais c'est vraiment pas optimal (environ 1-2 secondes par colonne)
    je me rends déjà bien compte que j'ouvre/ferme beaucoup trop mes fichiers

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    StanSmooth,

    J'aimerais savoir si j'ai bien compris. Tu voudrais copier un tableau (sauf les noms des colonnes) d'un fichier Excel vers un autre fichier Excel? Si oui comment s'appellent les deux fichiers?

    J'aimerais également savoir comment tes colonnes sont nommées.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    Exactement,
    j'ai une 10 aine de fichier source, avec des noms de colonnes différents, et ma macro permet de rechercher la colonne correspondante, grâce à un tableau d'équivalence et de copier celle-ci dans mon fichier destination.

    j'ai réussi à optimiser le temps d'ouverture des fichiers, mais ça reste assez long. le problème c'est qu'il est difficile de faire un copier coller (mais surtout d'utiliser la fonction find) sur des fichiers fermés

  4. #4
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par StanSmooth Voir le message
    Exactement,
    j'ai une 10 aine de fichier source, avec des noms de colonnes différents, et ma macro permet de rechercher la colonne correspondante, grâce à un tableau d'équivalence et de copier celle-ci dans mon fichier destination.

    j'ai réussi à optimiser le temps d'ouverture des fichiers, mais ça reste assez long. le problème c'est qu'il est difficile de faire un copier coller (mais surtout d'utiliser la fonction find) sur des fichiers fermés
    Pour ma part je n'ai pas encore assez de connaissance pour pouvoir t'aider à l'aveugle (sans les fichiers sous les yeux). De plus, je trouve ça bizarre que chaque classeur source (une dizaine comme tu as dit) n'ont pas les mêmes noms de colonne.

    Si tu as plusieurs classeurs, cela veut dire que tu fais plusieurs extractions via des requêtes donc c'est possible d'obtenir pour chaque classeur les mêmes colonnes et les mêmes noms.

    Pour finir, j'aurais plutôt fait ça sur ACCESS, plus simple et plus rapide grâce aux liaisons tables .

Discussions similaires

  1. [XL-2010] Copier/coller Entre deux classeurs excel VBA
    Par Benjen dans le forum Excel
    Réponses: 11
    Dernier message: 19/09/2014, 15h58
  2. Copier coller entre deux feuilles
    Par charlesveillet dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/08/2012, 10h59
  3. [XL-2000] Copier coller entre deux classeurs
    Par Juan Jacko dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/03/2011, 11h35
  4. Copier coller entre deux fichiers excel par macro
    Par miss-o-21 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/11/2009, 14h45
  5. Réponses: 5
    Dernier message: 16/08/2006, 20h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo