Synchronisation de données différentes
Bonjour,
Je souhaiterai pouvoir coller des données de 2 colonnes d'un tableau d'un fichier excel dans un autre en prenant en compte les données d'une colonne.
Par exemple :
J'ai associé 2 colonnes où j'ai la quantité (en pièce et en poids) qui correspond à un produit vendu sur 1 semaine :
Colonne A : Colonne B (pièce) : Colonne C (poids au Kg) :
Abricots 25
Bananes 150
Citron 13
Oeuf 75
Salade 120
...
Je souhaiterai ajouter sur ce même tableau le nombre d'Abricot, bananes, ... vendus par jour. Mais lorsque je fais mon export des ventes, si le lundi je n'ai pas vendu de Banane, celle-ci n'apparait pas sur mon export. Comment je peux donc faire pour recopier les données (poids et pièces) d'un tableau à un autre en faisant en sorte que chaque donnée se colle sur la bonne cellule correspondant au bon fruits ?
SOIT :
Colonne A : Colonne B (pièce) : Colonne C (poids au Kg) : Colonne D Lundi Piece Colonne E Lundi Poids Colonne F Mardi Pièce ....
Abricots 25 40
Bananes 150 aucune vente
Citron 13 12
Oeuf 75 113
Salade 120 92
...
MERCI de votre retour
Bonjour
Un essai à tester. Te convient-il ?
Option Explicit
Dim w As Workbook, fa As Worksheet, f As Worksheet, js, tablofa, tablofe
Dim j&, m$, mois, ms&, dte As Date, dteJ As Date
Dim lne&, ln&, col&, flag&
Sub reporter()
Application.ScreenUpdating = False
Set fa = ActiveSheet
flag = 0
For Each w In Workbooks
If Left(w.Name, 6) = "export" Then
For Each f In w.Worksheets
If f.Range("A2") Like "Rapport PLU*" Then
flag = 1
w.Activate
dte = CDate(Mid(f.Range("A2"), 15, 10))
tablofe = f.Range("A4:C" & f.Range("A" & Rows.Count).End(xlUp).Row)
j = Split(fa.Range("A2"), " ")(2)
m = Split(fa.Range("A2"), " ")(3)
mois = Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
For ms = 1 To 12
If mois(ms - 1) = m Then
Exit For
End If
Next ms
dteJ = DateSerial(Year(Date), ms, j)
If dte < dteJ Or dte > dteJ + 6 Or dte = dteJ + 1 Or dte = dteJ + 2 Then
MsgBox "La date extraite ne figure pas sur le fichier hebdo.", 16
Exit Sub
End If
js = Array(15, 15, 15, 6, 8, 10, 12, 4)
col = js(Weekday(dte))
fa.Activate
fa.Range(fa.Cells(5, col), fa.Cells(fa.Range("A" & Rows.Count).End(xlUp).Row, col + 1)).ClearContents
tablofa = fa.Range("A5:M" & fa.Range("A" & Rows.Count).End(xlUp).Row)
For lne = 1 To UBound(tablofe, 1)
For ln = 1 To UBound(tablofa, 1)
If tablofa(ln, 3) = tablofe(lne, 1) Then
tablofa(ln, col) = tablofe(lne, 2)
tablofa(ln, col + 1) = tablofe(lne, 3)
Exit For
End If
Next ln
Next lne
End If
Next f
End If
Next w
If flag = 0 Then
MsgBox "Le fichier d'extraction doit être ouvert.", 16
Exit Sub
Else
fa.Range("A5").Resize(UBound(tablofa, 1), 13) = tablofa
End If
End SubBye !
Bonsoir,
MERCI !
Il semblerait que cela fonctionne, néanmoins, si j'ouvre plusieurs autres document pour chaque jour de l'année. Comment faire par rapport à la macro que tu as fait pour que chaque jour se rapporte sur le fichier principal ?
Je pense que je vais créer une feuille pour chaque semaine de l'année... du coup, comment adapter le macro à toutes les feuilles ?