Mise à jour Vente M-1

Bonjour à toutes et tous,

Débutant dans ce domaine, je sollicite votre aide pour réaliser la macro ci-dessous pour mettre à jour les ventes réalisées en M-1

1er étape - l'utilisateur saisie les ventes réalisées en M-1 sur la feuille "Sales M-1"(colonne E) et sélectionne le mois qu'il souhaite mettre à jour dans la cellule C1

2nd étape : lancement de la macro qui mettrait à jour la colonne du mois sélectionné précédemment

dans la feuille "Sales" mais uniquement pour les lignes identifiées "unit" en colonne D

Par exemple, si le mois sélectionné dans la 1er étape est le mois de mai2021, alors la macro viendrai mettre les quantités dans la colonne du mois de mai dans la feuille "Sales" mais uniquement sur les lignes identifiées "unit" en colonne D.

Je vous remercie d'avance pour votre aide,

Michel

14recopie-vente-m-1.zip (233.38 Ko)

Bonjour,

Normalement pas besoin de macro, une simple formule suffit:

en E2 de la feuille "Sales", puis à tirer vers la droite et vers le bas

=SIERREUR(SOMMEPROD((D2="Unit")*('Sales M-1'!$B$4:$B$361=$B2)*('Sales M-1'!$C$1=E$1);('Sales M-1'!$E$4:$E$361));"")

Et si vous voulez une macro

Sub Recup_Valeurs()
    Dim f1 As Worksheet, f2 As Worksheet
    Dim DerLig_f2 As Long, DerCol_f2 As Long
    Dim i As Long, j As Long
    Application.ScreenUpdating = False
    Set f1 = Sheets("Sales M-1")
    Set f2 = Sheets("Sales")
    DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row
    DerCol_f2 = f2.Range("A1").End(xlToRight).Column
    Range(f2.Cells(2, "E"), f2.Cells(DerLig_f2, DerCol_f2)).FormulaR1C1 = "=IFERROR(SUMPRODUCT((RC[-1]=""Unit"")*('Sales M-1'!R4C2:R" & DerLig_f2 & "C2=RC2)*('Sales M-1'!R1C3=R1C),('Sales M-1'!R4C5:R" & DerLig_f2 & "C5)),"""")"
    Range(f2.Cells(2, "E"), f2.Cells(DerLig_f2, DerCol_f2)).Value = Range(f2.Cells(2, "E"), f2.Cells(DerLig_f2, DerCol_f2)).Value
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Cdlt

Bonjour

Un grand merci pour votre retour.

Cela fonctionne parfaitement pour le mois de mai mais par pour les autres mois.

En effet, je souhaiterai que les données de vente soient exportées dans la feuille "Sales" dans la colonne du mois que l'utilisateur aura au préalablement sélectionné dans la feuille "Sale M-1", cellule C1

par exemple, si l'utilisateur a sélectionné le mois de juin 2021 en C1 de la feuille "Sale M-1", les ventes soient reportées dans la colonne du mois de juin 2021 dans la feuille "Sales"

En espérant avoir été plus clair cette fois-ci.

Cdlt

Normalement ça fonctionne pour n'importe quel mois, mais j'ai oublié de figer une valeur.

remplacez la ligne suivante:

Range(f2.Cells(2, "E"), f2.Cells(DerLig_f2, DerCol_f2)).FormulaR1C1 = "=IFERROR(SUMPRODUCT((RC[-1]=""Unit"")*('Sales M-1'!R4C2:R" & DerLig_f2 & "C2=RC2)*('Sales M-1'!R1C3=R1C),('Sales M-1'!R4C5:R" & DerLig_f2 & "C5)),"""")"

par celle-ci:

Range(f2.Cells(2, "E"), f2.Cells(DerLig_f2, DerCol_f2)).FormulaR1C1 = "=IFERROR(SUMPRODUCT((RC4=""Unit"")*('Sales M-1'!R4C2:R" & DerLig_f2 & "C2=RC2)*('Sales M-1'!R1C3=R1C),('Sales M-1'!R4C5:R" & DerLig_f2 & "C5)),"""")"

Ca fonctionne parfaitement.... un grand merci pour votre aide et votre réactivité

Bonjour,

Je suis allé un peu trop vite en besogne

après vérification plus approfondie, la macro exporte bien les données dans la colonne du mois sélectionné mais cela écrase les données des mois précédent et suivant.

L' objectif serait donc de mettre à jour uniquement la colonne du mois sélectionné en C1 sans modifier les données des mois précédents et suivant

Par exemple, si l'utilisateur souhaite mettre à jour les données du mois de septembre 2021, il sélectionne alors ce mois dans en cellule C1 de la feuille "Sales M-1", lance la macro qui mettra alors à jour les données uniquement pour ce mois sans toucher aux mois précédents et suivant.

Merci d'avance pour votre aide,

Bonjour,

Voilà la modif

Cdlt

Bonjour Arturo

Un grand merci pour ce retour qui fonctionne parfaitement.

Néanmoins ma direction m'a fait ajouté une colonne "sous catégorie" dans la feuille "Sales". De ce fait l'export des données ne fonctionne plus.

Je pensais pouvoir modifier le code moi-même mais je n'y arrive pas.

Peux tu m'expliquer le code que tu as tapé en ajoutant un commentaire dans le code (ligne par ligne idéalement)et m'indiquer la partie que je dois modifier suite à cet ajout de colonne.

Le but est que, dans le cas où j'ajouterai des colonnes supplémentaires, je puisse modifier moi même le code

Un grand merci pour ton aide

Michel

Bonjour,

Voilà la modif

Sub Recup_Valeurs()
    Dim f1 As Worksheet, f2 As Worksheet
    Dim DerLig_f2 As Long, DerCol_f2 As Long
    Dim i As Long, j As Long
    Application.ScreenUpdating = False
    Set f1 = Sheets("Sales M-1")
    Set f2 = Sheets("Sales")
    On Error GoTo Sortie
    DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row
    DerCol_f2 = f2.Range("A1").End(xlToRight).Column
    Mois = Month(f1.Range("C1").Value)
    m = 6
    Do While Month(f2.Cells(1, m)) <> Mois
        m = m + 1
    Loop
    Range(f2.Cells(2, m), f2.Cells(DerLig_f2, m)).FormulaR1C1 = "=IFERROR(SUMPRODUCT((RC5=""Unit"")*('Sales M-1'!R4C2:R361C2=RC3)*('Sales M-1'!R1C3=R1C),('Sales M-1'!R4C5:R361C5)),"""")"
    Range(f2.Cells(2, m), f2.Cells(DerLig_f2, m)).Value = Range(f2.Cells(2, m), f2.Cells(DerLig_f2, m)).Value
    Set f1 = Nothing
    Set f2 = Nothing
    Exit Sub

Sortie:
    MsgBox "Le mois saisie n'existe pas dans la feuille ""Sales"""
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Sub Effacer()
    Application.ScreenUpdating = False
    Set f2 = Sheets("Sales")
    DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row
    DerCol_f2 = f2.Range("A1").End(xlToRight).Column
    Range(f2.Cells(2, "F"), f2.Cells(DerLig_f2, DerCol_f2)).ClearContents
End Sub

Cdlt

Bonjour,

Cela fonctionne parfaitement et j'ai pu comprendre où je devais modifier en cas d'ajout de colonne ou de ligne au dessus du tableau.

Par contre j'ai ajouté des années supplémentaires dans la feuille sales (2020 à 2022)

Je me suis rendu compte que l'export ne fonctionnait uniquement pour l'année 2019.

Après plusieurs tentatives, je n'arrive pas à trouver la solution.

Je vous joint le fichier modifié.

Encore merci pour votre aide,

Michel

Bonjour,

Voilà la modif

Cdlt

Bonjour Arturo,

Merci pour ce retour.

Je souhaiterai également exporter les données en valo saisie par l'utilisateur dans l'onglet "Sales M-1", colonne E , dans l'onglet "Sales" sur les lignes identifiées en "sales" en colonne E

J'ai donc tenté d'ajouter les deux lignes ci-dessous dans le code que vous avez fait. Cela fonctionne mais ca écrase l'export des données en unités.

Je vous joint le fichier avec le code complet

Merci d'avance pour votre aide,

Range(f2.Cells(8, m), f2.Cells(DerLig_f2, m)).FormulaR1C1 = "=IFERROR(SUMPRODUCT((RC5=""sales"")*('Sales M-1'!R4C2:R361C2=RC3)*('Sales M-1'!R1C3=R1C),('Sales M-1'!R4C6:R361C6)),"""")"
Range(f2.Cells(8, m), f2.Cells(DerLig_f2, m)).Value = Range(f2.Cells(8, m), f2.Cells(DerLig_f2, m)).Value

Bonjour,

Il ne fallait pas ajouter une nouvelle formule, mais compléter l'existante.

Cdlt

un grand MERCI

Grace à votre dernier retour j'ai finalisé toutes mes formules présente dans la feuille Sale.

Encore une dernière sollicitation...enfin j'espère

A partir des références de la feuille Sales, je souhaiterai

- dupliquer la feuille en la renommant Supply (ok pour moi)

- ne conserver que les colonnes C et D (article et désignation) et supprimer les doublons (ok pour moi)

- je souhaiterai pouvoir lancer une macro qui créerai 9 lignes pour chaque article pour parvenir à l'onglet "supply après macro" qui est dans le fichier ci-joint.

Merci d'avance pour votre aide,

-

Bonsoir,

Voilà la modif demandée

Cdlt

Bonjour

Cela fonctionne parfaitement.

J'ai modifié le code que vous m'avez transmis pour ajouter des nouvelles colonne et c'est parfait.... encore merci.

Je me trouve désormais confronté à deux nouveaux pbs

PREMIERE DIFFICULTE

Je souhaite rapatrier des éléments dans cet nouvel onglet Supply à partir d'autre onglet en fonction de la donnée renseigne en colonne F dans l'onglet Supply pour chaque article

Si "1 stock inicial " alors rapatriement du stock mentionnée dans l''onglet "Stock" : je suis arrivé à trouvé la solution

Si "2 stock à prob" alors rapatriement du stock à problème de l'onglet "Stock c.problema" pour chaque période... je m'explique....

- le second mois de l'onglet supply (aout dans le fichier ci-joint) correspond à la colonne " Saldo con problema mes M" (colonne L) de l'onglet "Stock c.problema"

- le troisième mois de l'onglet supply (septembre dans le fichier ci-joint) correspond à la colonne " Saldo con problema mes M + 1" (colonne M) de l'onglet "Stock c.problema"

et ainsi de suite pour les colonnes suivante

j'arrive à récupérer la donnée pour la première colonne mais je n'arrive pas étirer la formule jusqu'à la dernière colonne

SECONDE DIFFICULTE

je souhaiterai également récupérer pour chaque article de l'onglet Supply sur la ligne "'4 prévision" la quantité en unité indiquée dans l'onglet Sales pour chaque mois

Même pb pour la donnée "5 Entradas : transito + pedidos" : voir formule

J'ai rempli la totalité des lignes pour l'article 1 dans l'onglet Supply en laissant les formules... en espérant que cela vous aide pour me répondre

Merci d'avance

Cdt

Voilà les modifications demandées

Cdlt

Rechercher des sujets similaires à "mise jour vente"