Microsoft 365 Ecrire une formule de calcul en Vba Excel

NONO14

XLDnaute Impliqué
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: 17
Dernière édition:
Solution
Bonjour le Fil
juste pour signaler qu'a ce Niveau il y a un problème !
VB:
Private Sub TextCode_Change()
Dim Ctrl As Control
Dim Ctrl2 As Control
Dim Trouvé As Boolean
 Dim Trouve As Range

    Me.TextCode.Text = UCase(Me.TextCode) 'On met en Majuscule tout le Contenu du TextBox
    If Not EnableEvents Then Exit Sub
    Sheets("Liste_agents").Unprotect "falaise"
    'on cherche le nom associé au code dans la TS "t_Noms"
    With Sheets("Liste_agents").ListObjects("t_Noms")
    'ci-dessous on recherche dans une colonne ou se trouvent des Minuscules
    Set Trouve = .ListColumns(1).Range.Find(Me.TextCode, lookat:=xlWhol
Tu peux si la case n'a pas d'importance mettre Option Compare Text en tête de Module.
et supprimer ...

NONO14

XLDnaute Impliqué
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 Impliqué
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 Impliqué
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 Impliqué
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: 3

NONO14

XLDnaute Impliqué
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 Impliqué
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: 5

Discussions similaires

Réponses
9
Affichages
474
Réponses
5
Affichages
434
Réponses
3
Affichages
261

Membres actuellement en ligne

Statistiques des forums

Discussions
315 127
Messages
2 116 534
Membres
112 770
dernier inscrit
vetosalah