Mise en forme avec VBA

Bonjour,

Sur une feuille de gestion de stocks, je souhaite pouvoir ajouter un symbole (peu importe lequel) à n'importe quel article donc le stock serait tombé à zéro, et le mieux serait que cela se fasse à chaque actualisation de la feuille (il me semble que le code doit être placé directement dans le worksheet, mais je suis pas sûr).

J'ai bien tenté différentes versions de code, mais rien ne fonctionne.

J'imagine une boucle sur la colonne contenant les stocks pour rechercher les stocks à zéro, puis l'ajout d'un symbole sur la ligne correspondante en utilisant la fonction .Format, mais je galère vraiment à mettre ça en place, et puis il y a peut-être un moyen plus simple de faire ça.

Merci par avance pour l'aide apportée

Bonjour,

Cela ne semble guère opportun. Pourquoi ne pas se contenter d'une vraie MFC ?

A+

Salut Galopin,

Je te remercie pour ta proposition, mais je ne veux pas simplement ajouter une couleur de fond, je veux modifier le nom de l'article pour qu'il n'apparaisse plus en tant qu'article disponible, mais sans supprimer la ligne pour pouvoir conserver l'historique.

Ce bout de code est prévu pour un fichier assez complexe de gestion de stock et de fabrication avec suivi des n° de lots, avec de nombreux articles et mouvements de stocks. J'ai un bug qui apparaît dans un formulaire lorsque plusieurs lots d'un article sont épuisés, et c'est le seul moyen que j'ai trouvé pour le résoudre.

Bonsoir,

Mettre cette macro dans la feuille concernée :

Private Sub Worksheet_Calculate()
i = Cells(Rows.Count, 6).End(xlUp).Row
Arr = Range("B1:F" & i)
For k = 1 To UBound(Arr)
If Arr(k, 5) = 0 Then Arr(k, 1) = IIf(Left(Arr(k, 1), 1) = "*", Arr(k, 1), "*" & Arr(k, 1))
Next
Range("B1:F" & i) = Arr
End Sub

A+

C'est parfait, merci beaucoup

En fait ce n'est pas vraiment parfait, pourquoi copier et recoller le contenu de la colonne F au même emplacement ?

La colonne F contient une formule qui modifie le stock en temps réel, et cette formule est écrasée par ton code, donc l'actualisation du stock ne marche plus.

Œuf Corse !

Remplacer la macro par celle-ci :

Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
i = Cells(Rows.Count, 6).End(xlUp).Row
Arr = Range("B1:F" & i)
For k = 2 To UBound(Arr)
   If Arr(k, 5) = 0 Then Range("B" & k) = IIf(Left(Arr(k, 1), 1) = "*", Arr(k, 1), "*" & Arr(k, 1))
Next
End Sub

A+

Ce coup là, je n'ai rien à redire, encore merci pour ton aide

Rechercher des sujets similaires à "mise forme vba"