Microsoft 365 Ecrire une formule de calcul en Vba Excel

NONO14

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Comment pourrait-on écrire cette formule de calcul en Vba, s'il vous plaît ? Pour le moment elle est écrite en dur dans des cellules Excel de mon tableau.
Cependant, il m'est demandé de l'écrire dans du code afin que personne ne puisse y accéder. Cette formule se trouve dans la colonne J du tableau de la feuille "Recap", il y en d'autres du même genre dans les colonnes K et L et un peu plus simples dans les colonnes M, N, O.
Bien sûr je pourrais protéger ces colonnes mais ce n'est pas ce qui m'est demandé, j'ai proposé cette solution, mais elle ne garantie pas une sécurité suffisante en cas d'effacement malencontreux par la personne qui va gérer ce fichier.
MAX_MAT et autres sont des Noms donnés à des cellules de la feuille "Données", soit les cellules L3 à O5.
Mot de passe de la feuille "falaise"
Merci par avance pour vos idées.
VB:
=SI(A2="";"";SI(A2<>"";SI(ET(D2<>"";E2<>"");E2-D2;SI(ET(D2<>"";E2="";F2<>"");MAX_MAT-D2;SI(ET(D2<>"";E2="";ET(F2<>"";G2=""));"";SI(ET(D2<>"";E2="";F2="";G2="";H2="";I2<>"");MAX_MAT-D2;SI(ET(D2<>"";E2="";F2="";G2<>"");MAX_MAT-D2;SI(ET(D2<>"";E2="";ET(F2="";G2="");ET(H2="";I2<>""));I2-D2;SI(ET(D2<>"";E2="";F2="";G2="");MAX_MAT-D2;SI(D2="";""))))))))))
 

Pièces jointes

  • Tablo_Heures.xlsm
    282.8 KB · Affichages: 13
Dernière édition:
Solution
Bonjour
tu dis ne pas vouloir protéger les colonnes..et pourtant tu postes un fichier protégé...

pour inscrire une formule dans une cellule J2 par VBA, voici ma méthode
1) créer une variable qui contient la formule en Anglais
FormuleJ="=if(A2="""",""""if(A2<>""""................)"
en anglais veut dire: les fonctions sont écrites dans la version Anglaise ==> Si==>IF, et==> And....
les ; sont remplacés par des ,
les " sont remplacés par ""

2) inscrire la formule
range("J2").formula=formuleJ

3) pour étirer la formule: autofill

NONO14

XLDnaute Occasionnel
pour te donner une idée..
une version avec identification par mot de passe de l'utilisateur
les mots de passe sont sur la feuille "Données" qui est masque en xlveryhidden
pour l'instant, le mot de passe = code agent
Bonjour,
L'idée du formulaire est intéressante mais trop longue dans l'exécution du pointage, il faut aller au plus rapide, d'où l'utilité du bouton ou d'un double-clic. (qui fait son chemin dans la tête du chef)
Merci à tous pour votre investissement. Je m'aperçois qu'une simple question sur une formule de calcul m'amène à revoir mon projet, comme quoi des regards avisés sont toujours bons. Je vais essayer de prendre en compte (selon mes modestes connaissances) tous vos bons conseils.
 

NONO14

XLDnaute Occasionnel
Ce n'est pas en sélectionnant la cellule de droite ou du dessous que tu vas interdire une modification de la cellule que tu viens de mettre à jour. Du moins, je ne comprends pas le rapport.
Lorsque l'on double-clic, la cellule reste active donc modifiable manuellement, d'où la nécessité de passer à une autre cellule pour interdire un retour modification. Dans ma tête c'est clair, mais je dois mal m'expliquer.
 

NONO14

XLDnaute Occasionnel
Dans ce fichier, lorsque je double-clic, la cellule reste active, je dois cliquer sur une autre cellule pour la désactiver.
1725693538954.png
 

Pièces jointes

  • Tablo_Heures2.xlsm
    256.6 KB · Affichages: 1

vgendron

XLDnaute Barbatruc
Hello
tu dis que la version formulaire est trop longue..?? admettons.. mais je trouve que c'est beaucoup plus sur et maitrisé...
dans ton fichier actuel.. qu'est ce qui empeche Paul Auchon de saisir (double clic) un pointage sur Alain Terrieur??
à aucun moment je ne vois une "identification" de l'agent..

questions à se poser également..
le fichier est sur UN seul PC auquel tout le monde à accès? (donc.. on en revient au pb d'identification de l'agent) ou le fichier est sur le PC de chaque agent? (la.. l'identification pourrait se faire grace au "user" de windows)
une pointeuse ou une douchette commencent par identifier l'agent avant de faire le pointage..
(pour la douchette, j'ai déjà vu passer de nombreux messages ici pour la mettre en place et la gerer avec Excel==> donc, c'est tout à fait possible)

est ce que ce fichier est en réseau? sur un sharepoint, un drive??
 

NONO14

XLDnaute Occasionnel
Hello
tu dis que la version formulaire est trop longue..?? admettons.. mais je trouve que c'est beaucoup plus sur et maitrisé...
dans ton fichier actuel.. qu'est ce qui empeche Paul Auchon de saisir (double clic) un pointage sur Alain Terrieur??
à aucun moment je ne vois une "identification" de l'agent..

questions à se poser également..
le fichier est sur UN seul PC auquel tout le monde à accès? (donc.. on en revient au pb d'identification de l'agent) ou le fichier est sur le PC de chaque agent? (la.. l'identification pourrait se faire grace au "user" de windows)
une pointeuse ou une douchette commencent par identifier l'agent avant de faire le pointage..
(pour la douchette, j'ai déjà vu passer de nombreux messages ici pour la mettre en place et la gerer avec Excel==> donc, c'est tout à fait possible)

est ce que ce fichier est en réseau? sur un sharepoint, un drive??
Le fichier est un sur un PC unique mis à disposition des agents. Après toutes les fraudes sont possibles, il faut compter sur l'honnêteté de chacun. Pour la douchette, il faut un logiciel spécifique qui gère les codes-barres non ?
 

TooFatBoy

XLDnaute Barbatruc
Lorsque l'on double-clic, la cellule reste active donc modifiable manuellement, d'où la nécessité de passer à une autre cellule pour interdire un retour modification. Dans ma tête c'est clair, mais je dois mal m'expliquer.
Pas de souci, tu t'explique très bien et c'est parfaitement clair.

Mais regarde le fichier joint : quand tu double-cliques dans une cellule, ça inscrit la date ou l'heure mais la cellule ne reste pas en édition. ;)
 

Pièces jointes

  • Tablo_Heures_(TFB-001).xlsm
    571.9 KB · Affichages: 2

NONO14

XLDnaute Occasionnel
Pas de souci, tu t'explique très bien et c'est parfaitement clair.

Mais regarde le fichier joint : quand tu double-cliques dans une cellule, ça inscrit la date ou l'heure mais la cellule ne reste pas en édition. ;)
Bonjour TootFatBoy, bonjour à toutes et à tous,
Merci beaucoup ton travail, c'est plutôt cool. Pour l'ajout d'une ligne, il me semble préférable de rester sur une fonction normale, du genre un clic dans une cellule vide de la colonne A.
Je suis entrain de revoir complètement mon projet, je l'ai chamboulé. Je le soumettrais au forum dès que possible. En tout état de cause, je vais me servir de ton code, avec ta permission.
Merci encore
 

TooFatBoy

XLDnaute Barbatruc
Le but était simplement de te montrer que, comme je te le disais précédemment, si c'est la macro qui modifie le contenu d'une cellule elle peut sortir automatiquement du mode édition sans avoir besoin de se déplacer à droite ou en dessous.


je vais me servir de ton code, avec ta permission.
Le code est libre, donc tu en fais ce que tu veux. 😉
Mais dans son ensemble il ne me paraît pas viable car trop bancal.
 

TooFatBoy

XLDnaute Barbatruc
Je suis entrain de revoir complètement mon projet, je l'ai chamboulé.
Ce n'est pas plus mal car, franchement, quel est l'intérêt d'avoir des colonnes différentes pour le matin, l'après-midi et le soir ?
Une fois qu'on a l'heure on peut en déduire si c'est le matin, l'après-midi ou le soir. Ce qu'il faut, c'est savoir si c'est une entrée ou une sortie. ;)

Pense aussi à ce que t'a dit le camarade vgendron : une version avec un formulaire de saisie est plus sûre et maîtrisée. 👍
 

NONO14

XLDnaute Occasionnel
Bonsoir à toutes et à tous,
Voici en pièce jointe le début de mon travail que j'ai pu réaliser grâce à vos bons conseils et des codes trouvés sur le forum, j'en remercie chaleureusement leurs auteurs.
Il me reste encore pas mal de boulot, mais je pense avoir bien avancé. J'attends avec impatience vos observations constructives en œil averti.
Merci encore pour toutes vos remarques qui m'ont permises d'avancer en espérant ne pas m'être fourvoyé.
 

Pièces jointes

  • PointHeure3.xlsm
    205.2 KB · Affichages: 4

Discussions similaires

Réponses
9
Affichages
343
Réponses
5
Affichages
369
Réponses
3
Affichages
161

Statistiques des forums

Discussions
313 911
Messages
2 103 503
Membres
108 682
dernier inscrit
fabien1116