Microsoft 365 VBA copier des données d'un classeur à un autre

marie3107

XLDnaute Nouveau
Bonjour,

Je suis complètement perdue entre toutes les macros. Je vous explique mon cas : je souhaiterais copier les données d'un classeur excel dans mon classeur à moi qui s'appelle "Quiz", plus précisément dans la feuille "BASE DE DONNEES" à partir de la cellule A1.
Sauf que mon fichier d'origine peut changer de nom et d'emplacement sur le réseau (pas dans un dossier propre). Heureusement dans ce fichier source il n'y a qu'une seule feuille de calcul.

J'aimerai développer une macro qui permettrait d'aller chercher mon fichier source et de tout coller dans ma BASE DE DONNEES.

Pourriez-vous m'aider SVP ?

Merci d'avance
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Marie,
Sans fichiers test on ne peut que supposer.
En PJ un essai avec :
VB:
Sub CopierColler()
    Dim Fichier As Variant, T
    Fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
    If Fichier = False Then
        Exit Sub
    Else
        Application.ScreenUpdating = False
        Workbooks.Open Filename:=Fichier
        T = [A1].CurrentRegion
        ActiveWorkbook.Close
        [A1].Resize(UBound(T, 1), UBound(T, 2)) = T
    End If
End Sub
On demande quel fichier ouvrir.
On copie les données en partant de A1.
On ferme le fichier.
On les colle à partir de A1.
 

Pièces jointes

  • CopierColler.xlsm
    13.7 KB · Affichages: 7

marie3107

XLDnaute Nouveau
Ca a l'air de marcher impeccable ! Merci beaucoup !

En petit complément, pourriez-vous me dire ce que je dois faire pour que les données se colonnes dans l'onglet qui s'appelle "BASE DE DONNEES" sur mon fichier destinataire SVP ? Parce que là ça se colle sur la feuille sur laquelle je travaille.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Marie,
Sans fichiers test on ne peut que supposer.
:)
Il suffit de lui demander gentiment :
VB:
Sub CopierColler()
    Dim Fichier As Variant, T
    Fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
    If Fichier = False Then
        Exit Sub
    Else
        Application.ScreenUpdating = False
        Workbooks.Open Filename:=Fichier
        T = [A1].CurrentRegion
        ActiveWorkbook.Close
        Sheets("BASE DE DONNEES").[A1].Resize(UBound(T, 1), UBound(T, 2)) = T
    End If
End Sub
 

Discussions similaires

Réponses
27
Affichages
657
Réponses
9
Affichages
147

Statistiques des forums

Discussions
313 323
Messages
2 097 161
Membres
106 859
dernier inscrit
Foin24