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.
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 ?
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 SubBye
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.
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 SubBye !
Merci beaucoup je vais essayer cela !