Macro vba : Prise en compte du resultat d'une formule

groundhog

XLDnaute Junior
Bonjour à tous,

En préambule : Je ne suis pas expert en VBA, je suis plutôt amateur. Merci pour votre indulgence... :D

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.

Merci à tous pour vos réponses !
 

nolich

XLDnaute Occasionnel
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...

A ce soir sur le fil

@+
 

stempin.jerome

XLDnaute Nouveau
Re : Macro vba : Prise en compte du resultat d'une formule

Bonjour à tous,

je suis nouveau sur le forum et je pense m'être un peu perdu...dsl

Je cherche a creer une macro recherchant la derniere cellule d'une colonne pour copier cette valeur dasn une autre feuille excel?

quelqu'un saurait me répondre ou à défaut me guider vers un forum?

Merci pour votre et désolé d'avoir interrompu votre discussion.

Jerome
 

groundhog

XLDnaute Junior
Re : Macro vba : Prise en compte du resultat d'une formule

Sinon, tu peux créer une nouvelle discussion... :confused:

Bonjour à tous,

je suis nouveau sur le forum et je pense m'être un peu perdu...dsl

Je cherche a creer une macro recherchant la derniere cellule d'une colonne pour copier cette valeur dasn une autre feuille excel?

quelqu'un saurait me répondre ou à défaut me guider vers un forum?

Merci pour votre et désolé d'avoir interrompu votre discussion.

Jerome
 

nolich

XLDnaute Occasionnel
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 :

... .Range("A" & Range("A65536").End(xlUp))

@+
 

stempin.jerome

XLDnaute Nouveau
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.
 

nolich

XLDnaute Occasionnel
Re : Macro vba : Prise en compte du resultat d'une formule

Bonjour le fil, re groundhog, bonjour à toutes et à tous :)

Je pense avoir trouvé mon problème, je ne sais par contre pas interpréter ces infos en code pour mon fichier... Please HELP !!!

Ce lien n'existe plus

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 :p

@+

EDIT : je n'ai pas documenté l'intégralité du code, mais je peux le faire si tu me le demandes.
 

Pièces jointes

  • Nolich_GROUNDHOGV5.zip
    46.2 KB · Affichages: 42

groundhog

XLDnaute Junior
Re : Macro vba : Prise en compte du resultat d'une formule

On approche du but !!!!

J'ai une erreur qui se produit lors de la saisie dans l'onglet bdd_mouvements :
If Sheets("bdd_stocks").Cells(LiStocks, ColEnStock) = "RUPTURE" Then

Si tu peux voir le pb

Pour le reste ça fonctionne ! :)
 

groundhog

XLDnaute Junior
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...
 

Discussions similaires

Réponses
4
Affichages
453

Statistiques des forums

Discussions
315 098
Messages
2 116 200
Membres
112 683
dernier inscrit
Ramo