Bloquer valeurs en fonction de la date de saisie [Résolu/Fermé]

Signaler
Messages postés
72
Date d'inscription
vendredi 25 août 2017
Statut
Membre
Dernière intervention
31 octobre 2019
-
Messages postés
25372
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
13 octobre 2020
-
Bonjour,
Comment bloquer les prix de la colonne M en rapport avec les dates correspondantes de saisie.
Ces prix sont issus d'une base de données située dans la feuille "ART"
Si après, on doit changer les prix de la feuille "ART", colonne E, les prix ci-dessus déjà saisis ne doivent pas changer (Facture déjà établie et validée !)
Merci pour votre collaboration
Fichier support çi joint
Cordialement
Fat

https://www.cjoint.com/c/HCpnJX8wCQi


5 réponses

Messages postés
25372
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
13 octobre 2020
5 523
Bonjour
la seule façon pour que le prix ne changent pas est de faire un copier / collage spécial de la cellule pour supprimer la formule!
....ou alors de prévoir en base de données, au lieu de la seule colonne E, une série de colonne avec une colonne à chaque date de changement, titrée avec la date, et de référer la formule de M à la colonne directement antérieure à la date en D
crdlmnt

Messages postés
72
Date d'inscription
vendredi 25 août 2017
Statut
Membre
Dernière intervention
31 octobre 2019

Bonjour,
Merci pour ta proposition, mais c'est ce que je suis en train de faire actuellement.
Dans la formule de recherche du prix, j'essaie d'ajouter un "SI date colonne C > Aujourd'hui", alors recherche formule dans feuille ART, sinon FAUX !
Mais je n'arrive pas à écrire cette formule
Cordialement
Fat
Messages postés
25372
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
13 octobre 2020
5 523
Ca ne pourra pas fonctionner, puisque si vous conservez la formule, elle ne pourra jamais retrouver une valeur antérieure qui aura disparue de votre base de données, sauf si vous avez à chaque changement de tarif une nouvelle base de données.
... d'où l'idée d'une série de colonne datée en titre pour chaque changement de prix.
ou alors, peut être avec VBA:
1° créer une colonne masquée ou simplement hors champ (par exemple en Z qui va recevoir le prix trouvé lorsque vous entrez par exemple une valeur en I
Cette valeur , sans formule, ne serait alors jamais modifiée
2°) en M, la formule deviendrait:
=SI(Zx<>"";Zx;votre formule)
ainsi la valeur de Z deviendrait immuable.

crdlmnt
Messages postés
25372
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
13 octobre 2020
5 523
... pour faire suite à mon message précédent, voila ce que ça pourrait donner:
https://mon-partage.fr/f/uotIBdRe/

à condition que votre excel accepte les macros (voir les options)
L'avantage du système et qu'il fige la valeur sans détruire la formule
voir d'une part les annotations dans la feuille et d'autre part, pour le système:
clic droit sur le nom de l'onglet et "visualiser le code"
crdlmnt
Messages postés
72
Date d'inscription
vendredi 25 août 2017
Statut
Membre
Dernière intervention
31 octobre 2019

La 2ème solution est intéressante, mais la valeur de Z reste dépendante de la formule.
La colonne Z dans la feuille "VTS" est une doublure de la colonne E de la feuille "ART", et elle peut même être masquée.
Ce qui serait bien, c'est qu'on puisse écrire en Mx : =valeur Zx (copier juste la valeur)
J'ai essayé en Mx=SI(Zx<>"";Zx;0) et Mx=SI(Zx>0;Zx;0) etc... mais ça ne marche pas !

A+ et merci d'avance pour arriver à un résultat
Messages postés
25372
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
13 octobre 2020
5 523
c'est vrai, mais tant que vous n'activer pas la cellule L, selon la formule en M (1° tableau seulement) la valeur de Z ne change pas quelque soit celle de la base de données, et par conséquent, la valeur de Z reste figée en M
Mais si vous admettez de casser la formule en M, on peut directement la valeur de M. Allez dans le code et remplacer dans la dernière ligne le "Z" par "M"

et voyez ce que ça donne, plus besoin de Z mais là, c'est irréversible, ça revient à un copie coller

crdlmnt
Messages postés
72
Date d'inscription
vendredi 25 août 2017
Statut
Membre
Dernière intervention
31 octobre 2019

Désolé, mais je n'arrive pas à comprendre la dernière proposition.
Je cherche justement à figer définitivement le prix en colonne M à partir de la colonne Z masquée qui elle, contient la formule pour aller chercher le prix correspondant au code saisi.
Que dois-je écrire en Mx pour avoir le prix recherché figé et donc sans formule ?
Cordialement
Fat
Messages postés
25372
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
13 octobre 2020
5 523
Il n'y a rien à écrire en Mx!

si ça ne va pas, je vous modifierais le fichier, mais je crois qu'il vaudrait mieux que vous compreniez pour l'avenir. Donc:
  • clic droit sur le nom d'onglet VTS
  • dans le menu qui s'affiche: "visualiser le code"

le code VBA va s'afficher
  • la dernière ligne (avant end if ) est celle ci:

Range("Z" & Rw).Value = Range("M" & Rw).Value
  • remplacez le "Z" au début par "M"

et ça devrait rouler
crdlmnt
Messages postés
72
Date d'inscription
vendredi 25 août 2017
Statut
Membre
Dernière intervention
31 octobre 2019

La macro est parfaite, surtout en remplaçant le Z par M.
La formule en M reste tant qu'on n'a pas introduit de quantité en L.
Une fois la quantité saisie, le prix unitaire en M est figé et ne bouge plus, et c'est CE QUI EST RECHERCHE !
Si les prix sont actualisés dans la base de données, les factures déjà saisies ne sont pas affectées.
On n'a donc même pas besoin de colonne Z !
C'est parfait.
MERCI INFINIMENT
Cordialement
Fat
Messages postés
25372
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
13 octobre 2020
5 523
Alors c'est parfait pour moi aussi
Je passe le sujet en résolu
Bonne route
crdlmnt