Donner Valeur à une cellule en fonction de plusieurs colonnes
Bonjour à tous,
J'espère que vous allez bien et que vous passez de bonnes fêtes de fin d'années,
Je travaille actuellement sur un VBA et je ne trouve pas la solution ..
Je vais essayer d'expliquer clairement ce que je souhaite :
Nous avons un stock Total qui évolue de mois en mois. Ce stock Total est égal à une des raisons (Produits pour cuisine, Produits pour chambre, Un retour client, ...) les raisons sont de la colonnes C à G
Je souhaiterais que si et UNIQUEMENT si UNE SEULE des colonnes des raisons est supérieur à 0, alors la Valeur de la cellule de cette Colonne > à 0 est égale au nouveau Stock Total Général de ce mois-ci.
Par exemple :
Pour la Ligne 2, j'aimerais que la Cellule C2 soit égale à 5 (le nouveau Total)
Pour la Ligne 3, j'aimerais que la Cellule D3 soit égale à 20 (le nouveau Total)
Pour la Ligne 4, j'aimerais que la Cellule F4 soit égale à 13 (le nouveau Total)
Pour la Ligne 5, Comme il y a plusieurs raison, ne pas donner de résultat ...
Vous comprendrez sans doute mieux avec le fichier
J'avais pensé au code suivant :
For i = 2 to 9
IF Cells(i, ColonneCuisine).Value > 0 OR Cells(i, ColonneChambre).Value > 0 OR Cells(i, ColonneProjetJaja).Value > 0 or Cells(i, ColonneRetour).Value > 0 or Cells(i, ColonneSDB).Value > 0 Then
La Cellule dont la raison identifiée est > 0 = Cells(i, ColonneTotalGeneral).Value
Next i
Mais ça ne marche pas car je ne prend pas en compte la condition de UNE SEULE ET UNIQUE COLONNE > 0
Si vous avez des idées je suis preneur ...
Merci à vous,
Chris
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Bye !
Bonjour,
En effet si l'une au moins de ces conditions est vérifiée alors la condition est réalisée et la cellule en cause devrait être modifiée, mais quelle est cette cellule en cause quand plusieurs le sont ?
Il faudrait tester chacune des conditions l'une après l'autre et dans le cas où il n'y en aurait qu'une seule alors la modifier, mais comment faire ?
j'ai bien une idée mais elle est "tractocapillaire" : on teste chaque cellule en lui attribuant une valeur égale à 1 si le test est positif et 0 sinon. Ensuite on fait la somme des tests, si somme_tests = 0 aucune cellule ne répond au critère, si somme_test > 1 plusieurs cellules répondent au critère et si somme_test = 1 une seulle cellule répond au critère (ce que tu cherches). Comme je viens de le dire c'est un peu tiré par les cheveux.
Bonne soirée
Jacky
Hello gmb,
Merci beaucoup pour ce test, il est TOP !
Pourriez-vous m'éclairer sur ces 2 lignes svp ? :
Application.EnableEvents = False : que signifie-elle ?
If WorksheetFunction.CountIf(Range("C" & i & ":G" & i), ">0") = 1 : j'ai du mal à comprendre l'écriture "C" & i & ":G" & i, pourquoi le & i ?
Merci beaucoup, je sais que je vous en demande beaucoup :)
Chris
Bonjour
Application.EnableEvents = False : que signifie-elle ?Il y a une macro événementielle associée à la feulle « Stock » qui se déclenche chaque fois qu’une cellule de cette feuille est modifiée.
Je n’en suis pas à l’origine et ne veux donc pas qu’elle perturbe le fonctionnement de celle que j’ai créée. Je la neutralise donc le temps que celle-ci s’exécute. D’où cette instruction, et celle qui en fin de macro la remet disponible :
Application.EnableEvents = TrueIf WorksheetFunction.CountIf(Range("C" & i & ":G" & i), ">0") = 1La macro examine successivemnt toutes les lignes du tableau et, pour chacune, elle regarde si la plage de la ligne i entre les colonne C et G le nombre de cellules contenant une valeur supérieure à zéro est egal à 1.
OK ?
Bye !
Bonjour gmb,
Merci beaucoup c'est super clair, vous êtes un dieu de Excel hahah, je ne sais meme pas comment vous remercier.
J'ai maintenant une question concernant un problème un peu plus complexe.
Le problème est toujours un peu le même hormis qu'ici j'aimerais que lorsqu'on a une évolution négative : que le surtock du nouveau mois soit d'abord consommé par la colonne "surstock avant jaja" avant de partager le reliquat sur la 2ème raison identifiée
Pour faire court : Si nb raison = 2, alors consommer surstock avant Jaja puis partager le reliquat (surtock toujours >0)
Je vous joins le nouveau fichier, vous comprendrez largement mieux
Si vous me trouvez cette solution et que vous me donnez votre paypal, vous aurez un petit cadeau
de noel en retard haha
Merci beaucouppppppp,
Christopher