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 plage de donner de taille variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Par défaut copier une plage de donner de taille variable
    Bonjour
    j'ai une macro qui doit ouvrir un fichier excel, extraire les données rapidement et les coller dans un nouveau fichier excel, ma macro marche bien mais la feuille du fichier source étant de taille variable comment prendre en compte une taille dynamiquement lors de la copie, de plus mon fichier source faisant 15 000 lignes, quelle est la meilleur méthode pour faire une copie RAPIDE en VBA.

    merci pour votre aide !
    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
    32
    33
     
    Option Explicit
    Declare Function GetTickCount Lib "Kernel32" () As Long
     
    Sub Ouvre()
     
    Dim x
     x = GetTickCount
     
     
    Dim Nom_Fichier
     Dim wb As Workbook
     
    Nom_Fichier = Application.GetOpenFilename()
    If Nom_Fichier <> False Then
        Set wb = Workbooks.Open(Nom_Fichier)
     
     
    End If
     
     
    Feuil1.Range("A1:B3").Value = wb.Worksheets("Feuil1").Range("A1:B3").Value
     
    'Application.ScreenUpdating = False
    Feuil1.Range("A1:B3").Value = wb.Worksheets("Feuil1").Range("A1:B3").Value
    'Application.ScreenUpdating = True
    wb.Close
     
     
     
    MsgBox GetTickCount - x & "ms"
     
    End Sub

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    soit via   UsedRange.Copy  

    soit en n'ouvrant pas le classeur via ADODB, voir le tutoriel Lire et écrire dans les classeurs Excel fermés

    ___________________________________________________________________________________________________________
    Je suis Paris, Manchester, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

Discussions similaires

  1. [XL-2013] Copier une plage de cellules sur un emplacement variable
    Par Nicolas751 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/04/2016, 14h08
  2. Réponses: 1
    Dernier message: 11/09/2014, 14h48
  3. copier une plage d'un fichier Excel non ouvert vers la feuille en cours
    Par mich2704 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/06/2006, 12h30
  4. [VBA-E] Copier une plage de cellules avec critère
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 13/06/2006, 16h34
  5. [VBA] Copier une plage de cellules dans un fichier fermé
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52

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