Consolidation et copie suivant critère
Bonjour à toutes et tous,
Je sollicite votre aide dans la réalisation d'une consolidation de données et copie suivant critère.
Dans le fichier joint, je souhaiterais si possible :
1) Pouvoir copier toutes les quantités de la colonne M (feuille "ENTREES") vers la colonne D (feuille "STOCK") pour les produits concernés.
Attention, il peut y avoir des doublons dans la colonne C (feuille "ENTREES") dont il faut tenir compte dans la comptabilisation.
2) Copier automatiquement dans la feuille (feuille "STOCK") les nouveaux produits de la feuille "ENTREES".
Voir explications détaillées dans le fichier.
Merci d'avance pour votre aide
Bonsoir Osaka, le forum,
Pas tout compris.....
Un essai hasardeux....
Sub action()
Dim i%, cherche As Range, lig%
Application.ScreenUpdating = False
With Sheets("ENTREES")
i = 6
Do While i <= .Range("C" & Rows.Count).End(xlUp).Row
Set cherche = Sheets("STOCK").Range("A:A").Find(what:=.Range("C" & i), lookat:=xlWhole)
If cherche Is Nothing Then
Sheets("STOCK").Range("A" & Sheets("STOCK").Range("A" & Rows.Count).End(xlUp).Row + 1) = .Range("C" & i) '....produit
Sheets("STOCK").Range("B" & Sheets("STOCK").Range("B" & Rows.Count).End(xlUp).Row + 1) = .Range("D" & i) '....description
Sheets("STOCK").Range("C" & Sheets("STOCK").Range("C" & Rows.Count).End(xlUp).Row + 1) = .Range("L" & i) '....unité
Sheets("STOCK").Range("D" & Sheets("STOCK").Range("D" & Rows.Count).End(xlUp).Row + 1) = .Range("M" & i) '....quantité actuelle
ElseIf Not cherche Is Nothing Then
lig = cherche.Row
Sheets("STOCK").Range("D" & lig) = Sheets("STOCK").Range("D" & lig) + .Range("M" & i)
End If
i = i + 1
Loop
End With
End Sub
Cordialement,
Merci pour ce retour rapide xorsankukai:)
Dans ta proposition, l'appui sur le bouton ajoute bien les Produits dans la feuille "STOCK" mais les quantités augmentent à chaque clic.
Désolé si je n'ai pas été assez clair dans mes explications.
Le but étant d'additionner par produit, toutes les quantités dans la feuille "ENTREES" et de reporter le total dans la feuille "STOCK" pour chaque produit.
La quantité par produit dans la feuille "STOCK" doit toujours être égale à la somme de toutes les quantités de ce même produit dans la feuille "ENTREES".
Exemple MAJ des quantités
| Feuille ENTREES | Feuille STOCK | |
| Produit 1 -> Qté = 10 | Produit 1 -> Quantité doit être égale à 10 |
| Produit 1 -> Réception de 5 pièces dans la feuille ENTREES |
| Feuille ENTREES | Feuille STOCK | |
| Produit 1 -> Qté = 10 Produit 1 -> Qté = 5 | Produit 1 -> Quantité doit être égale à 15 |
| Produit 1 -> Réception négative (annulation) de 3 pièces dans la feuille ENTREES |
| Feuille ENTREES | Feuille ENTREES | |
| Produit 1 -> Quantité = 10 Produit 1 -> Quantité = 5 Produit 1 -> Quantité = -3 | Produit 1 -> Quantité doit être égale à 12 |
Exemple ajout produit
| Feuille ENTREES | Feuille STOCK | Feuille STOCK | ||
| Produit 2 -> Qté = 10 | Produit 2 n'existe pas | Ajout du produit 2 |
Re,
Merci pour le retour,
Désolé je n'y connais rien en gestion de stock,
Si quantité STOCK = somme quantité ENTREES alors quantité STOCK
Si différent, quantité STOCK = quantité STOCK + somme quantité ENTREES ?
Bonne soirée,
Re,
Dans ta proposition, certaines quantités s'additionnent systématiquement à chaque clic même si la quantité des entrées ne change pas .
J'ai adapté ta proposition et elle semble fonctionner.
Merci pour ton aide en tous cas
Sub test()
Dim i%, derlig%
Dim cherche As Range
Application.ScreenUpdating = False
With Sheets("ENTREES")
i = 6
Do While i <= .Range("C" & Rows.Count).End(xlUp).Row
derlig = Sheets("STOCK").Range("A" & Rows.Count).End(xlUp).Row
Set cherche = Sheets("STOCK").Range("A:A").Find(what:=.Range("C" & i), lookat:=xlWhole)
If cherche Is Nothing Then ' si Produit n'existe pas
Sheets("STOCK").Range("A" & derlig + 1) = .Range("C" & i) ' Produit
Sheets("STOCK").Range("B" & derlig + 1) = .Range("D" & i) ' Description
Sheets("STOCK").Range("C" & derlig + 1) = UCase(.Range("L" & i)) ' Unité
Sheets("STOCK").Range("D" & derlig + 1) = .Range("M" & i) ' Quantité
Else ' si Produit existe
Sheets("STOCK").Range("D" & cherche.Row) = Application.WorksheetFunction.SumIf(.Range("C6:C" & .Range("C" & Rows.Count).End(xlUp).Row), .Range("C" & i), .Range("M6:M" & .Range("C" & Rows.Count).End(xlUp).Row))
End If
i = i + 1
Loop
End With
Set cherche = Nothing
End SubBonjour,
J'ai adapté ta proposition et elle semble fonctionner.
Bien joué !
Effectivement, maintenant je comprends mieux ....
Bonne continuation,