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

23tests-excel.xlsm (20.42 Ko)

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

Rechercher des sujets similaires à "remplir tableau fonction"