Transfert de données Excel vers un autre Excel

Bonjour à tous,

Je suis débutant sur Excel et je souhaite transférer des données automatiquement pour éviter le copier/coller mais je n'y parviens pas.

Chaque mois je récupère un fichier Excel avec des données brut non mise en page "export brut". Je souhaite reporter ces chiffres sur un autre fichier Excel, dans lequel se trouve un tableau vierge "classeur1".

Actuellement, je fais un copier/coller ligne par ligne car la mise en page n'est pas la même. Mon objectif est de trouver un moyen plus rapide et plus simple de reporter les données dans mon tableau chaque mois.

La première colonne est la même pour les deux fichiers, mais l'ordre des lignes ne l'est pas et il y a des colonnes d'opérations qui s'ajoutent dans chaque ligne (ex: taux de clic apparait seulement dans "classeur1" et pas dans "export brut").

Certaine ligne de "export brut" ne sont pas à transférer vers "classeur1" (celle dont l'en-tête n'apparait pas dans le tableau "classeur1"), et certaine ligne du tableau "classeur1" n'existent pas dans "export brut" (celle dont l'en-tête n'apparait pas dans "export brut").

J'espère que vous pourrez m'aider, je m'en remet à vous.

Merci.

10export-brut.xlsx (12.32 Ko)
8classeur1.xlsm (21.90 Ko)

J'aimerais que le "classeur1" soit automatisé pour que chaque mois, lorsque j'obtiens un nouveau fichier "export brut", j'ai juste à sélectionner la source et que mon tableau "classeur1" se mette à jour.

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

11classeur1-v1.xlsm (25.50 Ko)
Option Explicit

Dim we As Workbook
Dim tablo, tablo1
Dim i&, i1&

Sub Importer()

    'On vérifie que le fichier export est ouvert
    On Error Resume Next
    Set we = Workbooks("export-brut.xlsx")
    If Err.Number <> 0 Then
        MsgBox "Le fichier ''export-brut.xlsx'' doit être ouvert", 16
        Exit Sub
    End If

    'on pose les variables
    tablo = we.Sheets("export brut").Range("A2").CurrentRegion
    tablo1 = Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row)

    'on remplit les tablos
    For i1 = 1 To UBound(tablo1, 1)
        For i = 2 To UBound(tablo, 1)
            If tablo1(i1, 1) = tablo(i, 1) Then

                Cells(i1 + 4, 2) = tablo(i, 2)
                Cells(i1 + 4, 3) = tablo(i, 3)
                Cells(i1 + 4, 5) = tablo(i, 5)
                Cells(i1 + 4, 7) = tablo(i, 7)
                Cells(i1 + 4, 10) = tablo(i, 10)
            End If
        Next i
    Next i1
End Sub

Bye

Bonjour,

Merci beaucoup c'est exactement ce que je voulais !

J'ai fais le test et voici ce que cela me donne.

J'ai encore quelques petits problèmes.

D'abord la colonne "désabonnements" ne se reporte pas dans le bonne colonne (c'est le "taux de désabonnement" qui est reporté dans la colonne "désabonnements").

J'aimerais avoir le choix du document source comme celui "export brut" car chaque mois j'en obtiens un nouveau. Si cela est possible, je voudrais juste avoir à sélectionner ma source et le tableau se met à jour.

Je ne sais pas si je me suis bien fais comprendre.

Merci à toi pour ton aide.

3classeur1.xlsm (24.96 Ko)
3export-brut.xlsx (12.33 Ko)

C'est bon j'ai réussi à décalé la colonne "désabonnements" dans la bonne colonne.

Il ne reste plus qu'à laisser la possibilité à celui qui rempli le tableau d'aller chercher dans ses docs la source qu'il désire.

Est ce que cela pourrait fonctionner ?

Dim nom_fichier As String

ChDir "C:\Users\Desktop\excel"
' Chemin d'accès à la base de donnée

nom_fichier = Application.GetOpenFilename("fichiers Excel(*.),*.")

Bonjour

Nouvell essai

Option Explicit

Dim we As Workbook, f
Dim tablo, tablo1, fd As Worksheet
Dim i&, i1&

Sub Importer()

    Set fd = ActiveSheet
    'On vérifie que le fichier export est ouvert
    On Error Resume Next
    Set we = Workbooks("export-brut.xlsx")
    If Err.Number <> 0 Then
        f = Application.GetOpenFilename(, , , , False)
        If we <> False Then
            Workbooks.Open (f)
            Set we = ActiveWorkbook

        End If
    End If

    'on pose les variables
    tablo = we.Sheets("export brut").Range("A2").CurrentRegion
    tablo1 = fd.Range("A5:A" & fd.Range("A" & Rows.Count).End(xlUp).Row)

    'on remplit les tablos
    For i1 = 1 To UBound(tablo1, 1)
        For i = 2 To UBound(tablo, 1)
            If tablo1(i1, 1) = tablo(i, 1) Then

                fd.Cells(i1 + 4, 2) = tablo(i, 2)
                fd.Cells(i1 + 4, 3) = tablo(i, 3)
                fd.Cells(i1 + 4, 5) = tablo(i, 5)
                fd.Cells(i1 + 4, 7) = tablo(i, 7)
                fd.Cells(i1 + 4, 10) = tablo(i, 9)
            End If
        Next i
    Next i1
End Sub

Bye !

Merci beaucoup je vais essayer cela !

Rechercher des sujets similaires à "transfert donnees"