Remplir un tableau en fonction de plusieurs autres
Bonjour,
Je me présente, Olivier, étudiant en alternance dans le commerce.
Je suis lâché sur des analyses sans personne de qualifié pour m’aiguiller et je cherche à créer une macro un peu complexe (Pour moi).
Mon fichier calcul Excel se présente de cette façon (Fichier en pièce jointe) :
« Feuille ANALYSE » : Sert à afficher les résultats.
« Feuille PARIS » et « Feuille TOULOUSE » : Les données des boutiques (Colonne A : Références, B : Quantités Ventes, C : Quantités Stock).
Le but est d’exécuter la macro pour qu’en « Feuille ANALYSE » on ait sur la même ligne les Quantités Ventes (Colonne B) et les Quantités Stock (Colonne C) de chaque tableau pour chaque références (Sans doublon.
Je pense avoir le résonnement mais pas les compétences pour l’appliquer.
Si Référence Colonne A de « Feuille PARIS » déjà présente dans Référence Colonne A de « Feuille ANALYSE », passer à la ligne suivante.
Il ne peut pas avoir de doublon sur une feuille mais une référence peut être présente sur chaque feuilles (PARIS et TOULOUSE). Je pensais donc commencer par vérifier si la référence a déjà été traité.
Sinon copier A2:C2 (« Feuille PARIS ») en A3 :C3 (« Feuille ANALYSE »)
Si la référence n’a pas été traité copier les données qui nous intéressent (Référence/Ventes/Stock).
Et si Référence Colonne A de « Feuille PARIS » est également présente sur Colonne A de « Feuille TOULOUSE ». Copier colonne B et C (« Feuille PARIS ») en D3:E3 (« Feuille ANALYSE »)
Si la référence n’a pas été traité et après avoir copier les données de Paris. Vérifier que la référence est présente sur Toulouse et copier les informations si c’est le cas.
Je ne sais pas comment passer de « Feuille PARIS » à « Feuille TOULOUSE » une fois que toutes les références du premier tableau ont été passé en revue. Et comment stopper la macro une fois que le second tableau a été passé en revue.
Toute aide sur ce problème sera grandement appréciée ^^
Je vous remercie par avance et vous souhaite une agréable journée.
Cordialement.
Olivier
bonjour
si tu veux faire une gestion de stock, je te propose beaucoup plus simple (méthode calquée sur des gestions pro) :
- une feuille de saisie, avec en colonnes simples : date, ville, référence, quantité (avec + si entrée et - si sortie)
c'est tout !
on saisit tous les mouvements dans cette unique feuille pendant des années !
ensuite pour visualiser les stocks par ville et réf (et éventuellement date, mais c'est plus difficile car il faut faire un test ! ) tu fais un TCD.
Point
pas de VBA, aucune formule
Je te remercie pour la proposition, mais je cherchais à travailler de cette façon pour plusieurs raisons liées au format des informations avec lesquelles je peux travailler.
Si cela intéresse certaines personnes la solution à mon problème est ci dessous (Et en pièce jointe):
Bonne continuation à tous.
Sub Lancer()
Dim size As Integer
Dim pSize As Integer
Dim tSize As Integer
Dim colSize As Integer
Sheets("Analyses").Activate
Range("A3").Select
Selection.CurrentRegion.Select
Selection.Offset(2, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Delete
Sheets("Paris").Activate
Range("A2", "A" & Range("A1").End(xlDown).Row).Select
Selection.Copy Destination:=Sheets("Analyses").Range("A3")
colSize = Range("A1").End(xlDown).Row + 2
Sheets("Toulouse").Activate
Range("A2", "A" & Range("A1").End(xlDown).Row).Select
Selection.Copy Destination:=Sheets("Analyses").Range("A" & colSize)
Sheets("Analyses").Activate
size = Range("A1").End(xlDown).Row
Set dic = CreateObject("Scripting.Dictionary")
For J = 3 To size
xValue = Cells(J, 1).Value
If xValue <> "" And Not dic.Exists(xValue) Then
dic(xValue) = ""
ElseIf xValue <> "" Then
Rows(J).Delete
J = J - 1
End If
Next
Sheets("Analyses").Activate
size = Range("A1").End(xlDown).Row
pSize = Sheets("Paris").Range("A2").End(xlDown).Row
tSize = Sheets("Toulouse").Range("A2").End(xlDown).Row
Sheets("Paris").Activate
For J = 2 To pSize
xValue = Cells(J, 1).Value
For i = 3 To size
If xValue = Sheets("Analyses").Cells(i, 1).Value Then
Range("B" & J, "C" & J).Select
Selection.Copy Destination:=Sheets("Analyses").Range("B" & i)
End If
Next
Next
Sheets("Toulouse").Activate
For J = 2 To tSize
xValue = Cells(J, 1).Value
For i = 3 To size
If xValue = Sheets("Analyses").Cells(i, 1).Value Then
Range("B" & J, "C" & J).Select
Selection.Copy Destination:=Sheets("Analyses").Range("D" & i)
End If
Next
Next
Sheets("Analyses").Activate
End Sub