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 :

Copier une feuille et la coller dans une autre: temps d'exécution anormalement long


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 156
    Par défaut Copier une feuille et la coller dans une autre: temps d'exécution anormalement long
    Bonjour à tous,

    J'ai ici un code me permettant de copier les cellule d'une feuille d'un classeur et de les coller dans mon classeur principal. Ca fonctionne mais le hick c'est qu'il y a quelque chose d'anormal qui se passe:

    Excel ouvre une deuxième fois le classeur contenant les informations que je cherche à copier. Et cette ouverture prend une plombe, il y a une petite barre de chargement en bas à droite, comme lorsqu'on ouvre un fichier Excel trop gros.

    Pourtant, lorsque l'on effectue la tâche "manuellement", ça semble prendre une fraction de seconde...

    Qu'est-ce qui se passe ?

    Mon code :

    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
    '################# Transfert du contenu chargé dans une nouvelle feuille du classeur principal ###############
     
        ThisWorkbook.Sheets("Intermédiaire Formation").Cells.Clear
        Dim Cls As Workbook, MainWB As Workbook
     
        Set MainWB = ThisWorkbook
        Application.DisplayAlerts = False
     
        Set Cls = Workbooks.Open(TextBoxFichierFormation.Text, 2)
     
       '################### Copie le contenu du fichier ouvert et le colle dans la feuille de données provisoires ############
     
                Cls.Sheets(2).Cells.Copy MainWB.Sheets("Intermédiaire Formation").Range("A1")
     
                Cls.Close False 'Ferme le fichier "chargé
     
        '##################################################################################
    Merci d'avance pour l'aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut,

    J'ai ici un code me permettant de copier les cellule d'une feuille d'un classeur et de les coller dans mon classeur principal.
    Petite question : le classeur source, il est ouvert j'imagine ?

    Pour une autre piste, je t'invite à lire l’excellent article de SilkyRoad sur le modèle ADO qui permets, entre autre, d'écrire dans un classeur fermé, te permettant ainsi d'éviter de dilapider des ressources mémoires.
    http://silkyroad.developpez.com/VBA/...sFermes/#LIV-B

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 695
    Par défaut
    Bonjour,

    Je tenterais ces deux bouts de code pour voir si ça suffit à résoudre ton problème:

    En début de macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim prevCalc As Variant
    prevCalc = Application.Calculation
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    En fin de macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.ScreenUpdating = True
    Application.Calculation = prevCalc

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 156
    Par défaut Re
    Salut,


    Merci pour ta réponse, par contre ça n'a rien changé :/

    Le fichier qui s'ouvre en plus, semble être une copie du fichier principal. et si ça prend autant de temps à s'ouvrir ou à transférer les données, c'est parce qu'Excel comprend que je souhaite copier les cellules une à une ... Donc même les cellules vides, ils créent de la place pour elles.


    Si j'ai su me faire comprendre...

    As-tu une solution ?

    Bien à toi,

    C.

  5. #5
    Invité
    Invité(e)
    Par défaut ça marche pas ça?
    Essai ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Transfert()
    Dim NomFichierOrigine As String
    NomFichierOrigine = "Classeur1"
    Dim Wbk1 As Workbook, Wbk2 As Workbook
    Set Wbk1 = ThisWorkbook
    Set Wbk2 = Workbooks.Open(Filename:="D:\CHEMIN\" & NomFichierOrigine & ".xls") 'a adapté
     
     
    Wbk1.Worksheets(3).Cells(1, 1).Value = Wbk2.Worksheets(2).Cells(12, 3).Value 'a adapté
     
    End Sub

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 695
    Par défaut
    Tu dis que tu ouvres le même fichier 2 fois; pourquoi?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 27/07/2014, 10h51
  2. [XL-2007] Copier une plage dans une feuille et la coller dans une autre du même classeur.
    Par kedmard dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2012, 14h55
  3. Réponses: 19
    Dernier message: 13/04/2012, 08h30
  4. [XL-2010] Trier des valeurs dans une feuille et les mettre dans une autre feuille
    Par maharo1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2011, 15h02
  5. Réponses: 3
    Dernier message: 01/09/2009, 23h48

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