Copier Coller données d'un fichier à un autre

Fermé
devdev21 Messages postés 6 Date d'inscription vendredi 5 mai 2017 Statut Membre Dernière intervention 7 juin 2017 - 5 mai 2017 à 11:49
 Gilles - 13 déc. 2022 à 09:24
Bonjour,

Je cherche à faire une macro qui va recuperer les données d'un onglet précis d'un tableau dans un fichier excel et les coller dans un onglet d'un autre fichier à la suite de la dernière ligne pleine du tableau.

Je suis nouveau en VBA je tiens à preciser!

Merci d'avance
A voir également:

1 réponse

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
7 mai 2017 à 10:42
Bonjour Devdev, bonjour le forum,

Code à adapter vu le peu de renseignements que tu daignes fournir... À placer dans le classeur destination !

Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim Fichier As String 'déclare la variable F (Fichier)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Feuil1") 'définit l'onglet destination OD (à adapter à ton cas)
Fichier = Application.GetOpenFilename 'boîte de sélection du classeur source
Workbooks.Open Filename:=Fichier 'ouverture du classeur sélectionné
Set CS = ActiveWorkbook 'définit le classeur source CS
Set OS = CS.Worksheets("Feuil1") 'définit l'onglet source OS (à adapter à ton cas)
'définit la cellule de destination DEST (A1 si A1 est vide, sinon, la première cellule vide de la colonne A de l'onglet destination OD)
Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
OS.Range("ta_plage").Copy DEST ' copie et colle "ta_plage" dans DEST ("ta_plage" représente l'adresse de ton tableau source)
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub

1
devdev21 Messages postés 6 Date d'inscription vendredi 5 mai 2017 Statut Membre Dernière intervention 7 juin 2017
17 mai 2017 à 09:51
Nickel, ça marche! merci beaucoup :)
0

Bonjour,

Voilà un message longtemps après. Je viens d'utiliser ton script @Thau Theme.

J'ai fait quelques changements, je le redonne pour qui en aurait besoin.

J'ai mon fichier principal et vais chercher les données dans plusieurs fichier dans un sous-dossier .\Pays\

Donc je boucle sur le nombre de pays listés dans un onglet Bibliothèque de mon fichier principal.

Bonne journée

Gilles

Sub IMPORTATION()

Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim Fichier As String 'déclare la variable F (Fichier)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim nbrpays As Long
Dim path As String
Dim Chemin As String
Dim lignefin As Long
Dim i As Integer

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran

nbrpays = Range("nbpays").Value + 3
Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("SUMMARY") 'définit l'onglet destination OD
OD.Range("B26:H10000").Clear

For i = 4 To nbrpays

    Chemin = ActiveWorkbook.path & CD.Sheets("Bibliothèque").Cells(i, 2).Value
    Workbooks.Open (Chemin)
    Set CS = ActiveWorkbook 'définit le!^p classeur source CS
    Set OS = CS.Worksheets("Feuil1") 'définit l'onglet source OS
    lignefin = OS.Range("A10").End(xlDown).Row
    If lignefin > 10000 Then
        lignefin = 10
    End If
    
    'définit la cellule de destination DEST (A1 si A1 est vide, sinon, la première cellule vide de la colonne A de l'onglet destination OD)
    Set DEST = IIf(OD.Range("B26").Value = "", OD.Range("B26"), OD.Cells(Application.Rows.Count, "B").End(xlUp).Offset(3, 0))
    OS.Range(Cells(10, 1), Cells(lignefin, 8)).Copy DEST ' copie et colle "ta_plage" dans DEST ("ta_plage" représente l'adresse de ton tableau source)

    ActiveWorkbook.Close

Next i

Worksheets("SUMMARY").Select
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
0