Remplacement d’une formule par une macro

Bonjour,

Dans mon fichier j'ai 2 onglets , un qui répertorie le stock actuel et l'autre qui répertorie toutes sorties de ce stock.

Dans les colonnes S T U de l'onglet Sorties, j'ai indiqué par une formule la quantité totale d'articles(S),la quantité normale par article(T) et la quantité minimum(U), ce qui me permet à chaque fois que je saisie un article l'onglet Sorties de voir le stock restant et de me faire une alerte en colonne X sans avoir à retourner dans l'onglet stock pour vérifier toutes les valeurs (1 pour une quantité article totale inferieure à la quantité normale et 2 pour une quantité totale inférieure à la quantité mini).

Ça marche plus ou moins bien pour le moment (recopie des formules 1 fois sur 2 lors d'une nouvelle saisie, effacement des formules..)

Je voudrais donc remplacer ces formules par une macro VBA qui recopierai automatiquement ces valeurs dès que l'ensemble des colonnes A à L sont remplies.

Concrètement, si je tape l’article Poire dans l'onglet Saisie en colonne A et que toutes les colonnes A à L sont remplies , la macro devrait indiquer 15, 5 et 20 en colonne STU , et 1 en colonne X puisque la quantité totale de cet article(15) est inférieure à la Quantité Normale(20)

Est-ce possible ?

Merci par avance pour votre aide

4exemple1.xlsx (21.83 Ko)

bonjour Thierry31,

Cela a plutôt l'air du contrôle des symptômes au lieu d'éliminer la cause.

Sub Formules_T_Sorties()
     Application.EnableEvents = False
     With Range("T_Sorties").ListObject
          .ListColumns("QteTotale").DataBodyRange.FormulaR1C1 = "=SUMIFS(Stock!R5C3:R15C3,Stock!R5C4:R15C4,[@Article])"
          .ListColumns("QteNormale").DataBodyRange.FormulaR1C1 = "=SUMIFS(Stock!R5C8:R15C8,Stock!R5C4:R15C4,[@Article])"
          .ListColumns("QteMini").DataBodyRange.FormulaR1C1 = "=SUMIFS(Stock!R5C7:R15C7,Stock!R5C4:R15C4,[@Article])"
          .ListColumns("Alerte").DataBodyRange.FormulaR1C1 = "=IF(AND([@QteTotale]<[@QteNormale],[@QteTotale]>[@QteMini]),1,IF([@QteTotale]<[@QteMini],2,0))"
     End With
     Application.EnableEvents = True
End Sub
4exemple1-1.xlsm (36.77 Ko)

Bonjour,

Pour aller un peu dans le sens de notre ami BsAlv ta manière de voir relève de mettre la poussière sous le tapis et masquer le problème au lieu de l’éliminer.

Il est tout à fait inutile de remplacer une formule par une macro qui fait la même chose à plus forte raison pour des milliers de lignes… Les développeurs d’Excel ont conçu les formules d’Excel avec des algorithmes et des langages extrêmement puissants auprès duquel VBA n’est qu’un emplâtre sur une jambe de bois !

Je te conseille donc plutôt de revoir ta conception de cette gestion de BD par exemple en regardant ce lien et le modèle qui y est développé :

https://forum.excel-pratique.com/excel/realisation-de-gestion-de-stock-78829#p456110

… et tous les modèles successifs jusqu’à la V7 qui y sont développés dans les pages suivantes !

Tous les calculs de gestions de stock y sont gérés dans une feuille unique (masquée) de quelques colonnes.

Les macros ne servent qu’a gérer la saisie dans les BD et à visualiser la disponibilité du produit… Mais ces macros ne calculent rien elles ne font que transférer au bon endroit les bons chiffres !

A+

Bonsoir,

Super, merci Bart, cela fonctionne désormais beaucoup mieux avec ce code

Merci également Galopin01 pour le lien et les conseils , je vais m'en inspirer.

re,

vue la réaction, vous n'avez pas trouvé le code qui écrase ces formules, dommage !

Ne pouvez-vous pas compter le nombre de formules dans chaque colonne et si ce nombre n'est pas exactement le nombre de lignes, que vous recevez une alerte. A ce moment, c'est peut-être plus facile à trouver la macro qui est la cause. Autrement, vous pouvez aussi joindre votre fichier (anonymisé!).

Rechercher des sujets similaires à "remplacement formule macro"