Additioner deux variables avec calcul VBA
Bonjour à tous,
J'ai un tableur qui me permet de trier les produits de différents services et je souhaiterai que les coupes de champagne soient transposées en bouteille (en arrondissant au supérieur sachant qu'il faut 5 coupes pour une bouteille).
J'ai donc écrit le code suivant :
Sub CP_BTL()
With ThisWorkbook.Worksheets("MyMicrosDD")
If Range("I") = "507513" _
Then Range("O").Value = .Range("O").Value + FormulaLocal = "=ENT(RECHERCHEV(AL134,I130:O674,7,FAUX)/5)+1"
End If
End With
End SubLa colonne I contient les références des produits et la colonne O contient la quantité. La case AL134 contient la réference de la coupe dont je me sers pour retrouver la quantité par la rechercheV.
Il m'indique une erreur sur l'objet range et je ne comprends pas vraiment d'ou ça peut venir.
Par avance merci pour vote aide !
Bonjour Phenomenox
Si je regarde comme ça ton code, tu sembles vouloir additionner le contenu de ta cellule O
avec la valeur déjà existante + la quantité trouvée avec recherchev()
Essaye ceci
Range("O").FormulaLocal = "=" & .Range("O").Value & "+ENT(RECHERCHEV(AL134,I130:O674,7,FAUX)/5)+1"A+
Bonjour
Bonjour BrunoM45
Ma petite contribution (pas testée)
Il manquait le numéro de ligne dans I et dans O (je t'ai mis 8 )
Sub CP_BTL()
With ThisWorkbook.Worksheets("MyMicrosDD")
If Range("I8") = "507513" Then
'Range("O8").Value = .Range("O8").Value + FormulaLocal = "=ENT(RECHERCHEV(AL134,I130:O674,7,FAUX)/5)+1"
Range("O8").Value = .Range("O8").Value + Int(Application.VLookup(Range("AL134"), Range("I130:O674"), 7, 0))
End If
End With
End SubSi pas ça
Bonjour à vous,
Merci pour vos réponses, cependant jene souhaite pas définir une ligne car la valeur peut se trouver n'importe où dans le tableau, il faut donc trouver la réf dans la colonne I puis faire le calcul en O.
Je n'ai plus accès au fichier jusqu'à demain matin, je vous mettrai un exemple en ligne des que possible.
Bonjour à vous,
Voila le fichier comme promis, j'ai inséré une explication rapide dans le document.
MDP : 1973
Par avance merci.
Bonjour
Avec le fichier, je pensais que j'allais comprendre, et bien c'est raté
Phenomenox a écrit :je souhaiterai que les coupes de champagne soient transposées en bouteille
Où est marqué le nombre de coupe ?
Phenomenox a écrit :la valeur peut se trouver n'importe où dans le tableau, il faut donc trouver la réf dans la colonne I puis faire le calcul en O.
La valeur de quoi ?
La ref de quoi ?
Le plus simple, enfin je pense, c'est de fournir des exemples exacts
exemple
Pour la réf 500017 (I4) il faut trouver .... parce que ....., le nombre de coupe est dans ....
Autre exemple
Pour la réf 502431 (I133) il faut trouver .... parce que ....., le nombre de coupe est dans ....
Le nombre de coupes est dans le tableau sur les colonnes A, B et C. Pour le bar plage j'ai placé les coupes en A92 (Quantité en B92) et les bouteilles en A90 (Q en B90) juste pour le Taittinger pour le moment.
C'est la quantité de coupes qui peut se trouver n'importe où puisque la taille du tableau à gauche (fichier importé) varie d'un jour à l'autre. Quant à la réf, il s'agit de la référence de la bouteille de Taittinger qui se trouve en A91.
En fait, pour la référence 507513 (Bouteille de Taittinger) il faudrait ajouter une certaine quantité de bouteille selon la quantité de coupes avec le ratio suivant : 0 à 4 coupes => 0 bouteille // 5 à 9 coupes => 1 bouteille // 10 à 14 coupes => 2 bouteilles et ainsi de suite par tranche de 5.
Voilà, si tu as besoin de plus de détails je me tiens à ton entière disposition
Bonjour
Ce n'est pas encore ça
Banzai64 a écrit :Le plus simple, enfin je pense, c'est de fournir des exemples exacts
Pas d'exemple
Ce que j'ai compris
Passer en revue toutes la liste de la colonne I (ou J) qui n'ont pas de quantité en colonne Q
Chercher cette réf en colonne A, regarder en colonne B la valeur qui donnera par un calcul le nombre de bouteille que l'on notera en Q
Si c'est ça il faut m'expliquer
En J22 on trouve "CP TAITTINGER BR/0011" que l'on trouve aussi en J52 et aussi en J75
Après recherche on les trouve en A92, A176 et A296
Que marque t'on en colonne Q ?
Donne des exemples précis
Re,
En fait le rapport, tout comme le tableau est organisé par service, donc si tu trouves CP TAITTINGER BR/0011 en plusieurs fois c'est parce que plusieurs services en ont vendu.
Du coup, dans la colonne des quantités il faudrait faire le calcul pour transposer les coupes en bouteilles et ce pour chaque service puisque le but est de savoir combien de bouteille il faut fournir à chaque service.
En bref, il faut ajouter à la quantité de de bouteilles de taittinger (ref 507513), la quantité de coupes transposée en bouteilles.
L'exemple est le taittinger, la bouteille (ref 507513 en A91 pour le bar plage) et la coupe en A92.
J'espère avoir été assez précis..
Merci pour ton temps.
Bonjour Banzai,
Si j'ai bien compris ce que tu as fait, la quantité de cp est transposée selon le ratio que je t'ai donné et c'est déjà une grande avancée
Maintenant il faudrait que la quantité, au lieu de se placer sur la ligne CP TAITTINGER BR/0011, s'additionne à la quantité de Taittinger Brut s,a 1/1 (la bouteille).
Je ne sais pas si c'est possible, en tous cas je te remercie pour ton aide.
Bonjour
Phenomenox a écrit :Si j'ai bien compris ce que tu as fait
Cela veut dire "Tu n'as rien compris de mes explications et tu as fait autre chose"
Quand je t'ai demandé de donner des exemples précis tu ne veux pas le faire, parce que pour dire
pour toi c'est peut-être un exemple mais je fais quoi avec ça ?Phenomenox a écrit :L'exemple est le taittinger, la bouteille (ref 507513 en A91 pour le bar plage) et la coupe en A92.
Quelle est la relation entre la réf 507513 et la réf 507903, comment à partir de l'un je trouve l'autre
Comment trouver la relation de la réf 500017 ?
A251 : "CP TAITTINGER RS/0011" réf 507904 comment trouve t'on la réf de la bouteille ?
Un exemple c'est de dire pour la "KRONEMBOURG/0011" (J4) il faut trouver ... (O4) parce que ......
Je passe la main
Je suivrai ce post
Bonjour Banzai, bonjour à tous,
Je suis désolé d'avoir si mal expliqué, c'est vrai qu'en relisant c'est dur de comprendre. Je vais donc reprendre :
L'objectif du document est d'afficher les quantités de produits vendus par service et de passer les commandes en conséquence. L'ensemble des produits vendus est affiché dans le tableau sur les colonnes A, B et C, tableau copié d'un rapport quotidien (nous le nommerons ABC).
Actuellement, la macro va chercher le nom de chaque service puis insère chaque produit avec la Date, le Service, la référence du rapport ABC, le libéllé du rapport ABC, la localisation, le libéllé et la référence du logiciel de commande et sa quantité, dans le tableau de "F" à "O" (les colonnes "H" et "N" sont laissées vide exprés).
Exemple : COCA/0011 en A22, avec la quantité en B22 (37) et la référence en A23 (500104), pour le Service BAR PLAGE/0011, article présent dans le rapport ABC.
Il se retranscrit dans le second tableau avec son libéllé et sa référence du rapport ABC mais également avec la référence (CA500104) et le libéllé (Coca 33cl VC) du logiciel de Commande (BSS) dont il récupère les informations dans la feuille 1 du classeur.
Notez que si un produit n'a pas de référence BSS, il ne sera pas affiché car la référence est indispensable à la commande.
A la fin du traitement, le tableau affiche tous les produits référencés (BSS) et consommés pour chaque service (avec un système de filtre).
Voilà pour la présentation générale du document qui j'éspère sera assez claire..
Pour ce qui est des coupes de champagne et des bouteilles, le problème est le suivant :
Il n'existe pas de coupes de champagne dans les stocks, mais les services en vendent quand même donc elles sont inscrites dans le rapport ABC. Les stocks utilisent donc un ratio de 5 coupes pour 1 bouteille.
L'objectif serait, dans la macro, d'insérer une ligne qui regarde la quantité de coupes vendues dans un service, puis les convertisse en bouteille sachant que les deux produits n'ont pas de référence commune.
On aurait donc, pour l'exemple du Bar Plage, 6 CP TAITTINGER BR/0011 (A92) et 2 TAITTINGER SA/0011 (A90) (Avec leur référence respective en A93 et A91). Comme les coupes ne sont pas référencés dans le logiciel de commande, elles n'apparaitront pas sur le tableau généré de "F" à "O".Cependant les bouteilles sont référencées, pour le moment il en apparait 2 en "O", il faudrait donc écrire que comme il y a 6 coupes il faut ajouter une bouteille à la quantité déjà présente. Je souhaiterai déjà parvenir à le faire pour un produit puis décliner le code aux autres, en assumant que ma demande est réalisable.
J'éspère avoir été compréhensible et je me tiens bien sûr à votre entière disposition pour plus d'information.
Cordialement.
Bonjour à tous,
J'ai trouvé une autre façon de procéder qui serait d'afficher le nombre de coupes, référencé comme la bouteille (CA507513) puis de diviser le résultat par 5 avant d'afficher la quantité en "O" à la référence des coupes (507903), ça fera une seconde ligne pour le même produit mais ce n'est pas dérangeant.
Je m'explique : Il y a les coupes de taittinger (CP TAITTINGER BR/0011 // référence 507903) qui sont à transposer en bouteille (Taittinger brut s,a 1/1 // référence 507513). En référençant la coupe à la même référence BSS que la bouteille (CA507513), le logiciel de commande (BSS) considérera la coupe comme une bouteille et en divisant la quantité par 5, ce sera la quantité de bouteille(s) nécessaire.
Il me faudrait donc le code vba permmettant de trouver la référence de la coupe (507903) en "I" et de diviser la quantité correspondante en "O" par 5.
Je vous joins le document avec la référence de la coupe ajoutée. En espérant que vous pourrez m'aider.
Codialement.