En préambule : Je ne suis pas expert en VBA, je suis plutôt amateur. Merci pour votre indulgence...
Voilà, j'ai une problèmatique depuis une semaine sur un tableau de gestion de stocks, avec pour exemple la fonction suivante :
Si des les cellules des colonnes "I" et "O", le résultat de la formule < à celui des cellules de la colonne "B", alors affichage du résultat "RUPTURE" en colonne "A".
La fonction que je possède (merci à Fo_rum) fonctionne très bien, si dans les cellules des colonnes "I" et "O" le contenu est une valeur saisi manuellement. Par contre, en utilisant une formule dans les cellules des colonnes "I" et "O", le problème se complique : au changement de résultat, rien ne se passe.
Voici le code existant pour info :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Li As Integer
If Target.Count > 1 Then Exit Sub
Li = Target.Row
If Target.Address = "$I$" & Li Or Target.Address = "$O$" & Li Or Target.Address = "$U$" & Li Then
If Target < Range("C" & Li) Then
Cells(Li, "B") = "RUPTURE"
Else
Cells(Li, "B") = "EN STOCK"
End If
End If
End Sub
J'espère avoir été clair pour vous tous, je cherche donc la clef de l'énigme pour terminer mon projet.
Re : Macro vba : Prise en compte du resultat d'une formule
Re, bonjour à toutes et à tous
groundhog, je sais qu'OBAMA est pressé de mettre en ouvre ses réformes mais je n'ai pas pu regarder plus avant ton fichier hier soir. Je te ferai une proposition en soirée à moins que quelqu'un l'ait fait avant
J'essaie de ne jamais laisser tomber un forumeur avant d'avoir trouvé la solution ou que d'autres l'aient trouvée avant moi...
Re : Macro vba : Prise en compte du resultat d'une formule
Re, bonjour et bienvenue stempin.jerome,
Tu ne t'es pas trompé de forum mais simplement de fil. Tu aurais dû créer un nouveau fil de discussion car ceux qui connaissent déjà celui-ci ne vont peut-être pas y revenir.
Pour ce que tu demandes vois si cela te convient :
Sub CopieDerniereValeur
Sheets("AutreFeuilleXL").Range("CelluleDestination") = _
Sheets("FeuilleSource").Range("MaColonne" & _
Range("MaColonne-Ligne 65536).End(xlUp))
End Sub
Si MaColonne est la colonne A, par exemple, la seconde partie de l'instruction donnera :
Re : Macro vba : Prise en compte du resultat d'une formule
Merci Nolich,
Encore une fois désolé pour cette intrusion, je regarderai pour la prochaine à créer un nouveau fil (je dois juste trouver comment faire eh oui les nouveaux sont souvent des boulets...)
Cependant j'ai essayé ton code mais il me marque:
Run time error 1004
application defined or object defined error.
C'est effectivement une possibilité mais il faudra alors que tu surveilles chacune des cellules de ta colonne O dans bdd_stocks. C'est faisable mais ce n'est pas l'option que j'ai choisie dans le fichier joint car en fait tu n'as, sauf si la colonne AF de bdd_stocks peut être modifiée (ce que je ne pense pas), qu'une seule colonne à surveiller dans bdd_stocks (la colonne I) et 2 dans bdd_commandes (les colonnes C et D).
Donc en partant du postulat que la colonne AF de bdd_stocks n'est pas amenée à être modifiée, je te propose le fichier joint.
Le code n'est pas très harmonieux mais si ta base de données reste telle qu'elle est, on peut coder différemment.
Dis-moi ce que tu en penses Mais ne m'épargne pas, surtout ! Si c'est pas bon, alors il faut le dire
@+
EDIT : je n'ai pas documenté l'intégralité du code, mais je peux le faire si tu me le demandes.
Re : Macro vba : Prise en compte du resultat d'une formule
Voilà, j'ai essayé donc d'adapter ton code sur mon fichier définitif, et ça marche.
ça fait 15 jours que je planche dessus, diverses réponses m'ont été données, mais Nolich a finalement remporté la palme. Tout fonctionne impeccable.
Maintenant, et ce sera peut etre dans un autre fil, comment alléger mon fichier en sachant que la formule SOMMEPROD s'applique sur environ 500 lignes, le temps de réponse est assez long...