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: 16
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 ...

TooFatBoy

XLDnaute Barbatruc
Est-il possible de les cacher selon l'heure ? ça me paraît très compliqué...
Normalement il suffit de regarder l'heure au moment de l'ouverture du UserForm.

Le camarade vgendron qui a magnifiquement œuvré jusque là (puisque c'est lui qui a tout développé à 99,9 %) va bien t'écrire ça. 👍


Au final il n'y aurait plus que deux CheckBox, et leurs TextBox associées, qui seraient visibles en fonction de l'heure de pointage et des trois tranches horaires.
Donc on en viendrait à ce que j'avais avancé il y a quelques temps : seulement deux informations "heure de pointage" et "entrée ou sortie" ?
 
Dernière édition:

NONO14

XLDnaute Impliqué
Normalement il suffit de regarder l'heure au moment de l'ouverture du UserForm.

Le camarade vgendron qui a magnifiquement œuvré jusque là (puisque c'est lui qui a tout développé à 99,9 %) va bien t'écrire ça. 👍


Au final il n'y aurait plus que deux CheckBox, et leurs TextBox associées, qui seraient visibles en fonction de l'heure de pointage et des trois tranches horaires.
Donc on en viendrait à ce que j'avais avancé il y a quelques temps : seulement deux informations "heure de pointage" et "entrée ou sortie" ?
Non pas tout à fait. Si l'employé arrive pointe à 12h, il ne pourra plus utiliser les boutons du matin, s'il arrive après 19h, il ne pourra plus utiliser les boutons du matin et de l'après-midi.
Pour ce faire, je pensais faire une comparaison entre l'heure système et les heures butoirs qui sont enregistrées dans la feuille "Calcul" et sous les noms "MAX_DEB" pour 12h00 l'heure maximale d'arrivée , "MAX_DEB" pour 19h00 l'heure maximale de départ de l'après-midi.
Donc, dans mon petit cerveau, je fais cette déduction :
- Pour le matin si l'heure système est supérieure à 12h00 alors les boutons du matin sont cachés
- Pour l'après-midi si l'heure système est supérieure à 19h00 alors les boutons du matin et de l'après-midi sont cachés.
Tout ça paraît simple quand on l'écrit, mais à traduire en Vba c'est une autre paire de manche.

Sinon, j'ai quand même fais un peu plus que 0,01% du travail 😳
 

TooFatBoy

XLDnaute Barbatruc
Si l'employé arrive pointe à 12h, il ne pourra plus utiliser les boutons du matin, s'il arrive après 19h, il ne pourra plus utiliser les boutons du matin et de l'après-midi.
Donc s'il pointe à 12 h, il peut utiliser les boutons de l'après-midi et du soir ? 🤔


Pour ce faire, je pensais faire une comparaison entre l'heure système et les heures butoirs qui sont enregistrées dans la feuille "Calcul"
Oui, bien sûr. 👍


Sinon, j'ai quand même fais un peu plus que 0,01% du travail 😳
Oui, 10 fois plus. Donc en fait on est d'accord. 😅
Mon pourcentage n'est peut-être pas 100 % exact, mais ce n'était pas une attaque envers toi mais un "hommage" à tout le travail effectué par le camarade vgendron.
 

NONO14

XLDnaute Impliqué
Donc s'il pointe à 12 h, il peut utiliser les boutons de l'après-midi et du soir ? 🤔



Oui, bien sûr. 👍



Oui, 10 fois plus. Donc en fait on est d'accord. 😅
Mon pourcentage n'est peut-être pas 100 % exact, mais ce n'était pas une attaque envers toi mais un "hommage" à tout le travail effectué par le camarade vgendron.
Oui s'il pointe à 12h00 les boutons de l'après-midi et du soir sont visibles. je sais cela peut paraître idiot et que rien n'empêchera un utilisateur de cliquer le soir alors qu'il n'ait que 14h00. Tu as certainement raison, je ne pourrais pas faire barrage à toutes les bêtises imaginables et inimaginables.
Eh bien, on va laisser le formulaire comme il est.

Pour ce qui est du travail de vgendron, je lui rends également hommage et je ne saurais comment le remercier davantage. J'ai conscience que sans son aide et celle de tout ceux qui ont apportés leur pierre à l'édifice je n'aurai pas réussi à sortir quelque chose d'équivalent.
Mes sincères remerciements à toutes et à tous
 

vgendron

XLDnaute Barbatruc
hello !
je ne suis pas trop dispo depuis quelques jours, et pas mieux aujourd'hui
j'ai pas tout relu, mais si il y a une dernière question (🤣) je regarderai demain avec plaisir
et effectivement, non, je n'ai pas tout fait, contribué et guidé oui :-D
 

ChTi160

XLDnaute Barbatruc
Bonjour le Fil
ces histoires d'horaires et de plages d'horaires ne sont pas évidentes à traiter
Tu as trois périodes "Matinée" "Après-Midi" et "Soirée"
quelles sont leur Limites .
quelles sont les périodes qui peuvent être définies .
exemple "Matinée" + "Après-Midi" exemple de "Journée" etc
y'a t'il des Limites pour Pointer exemple : le Matin de "8:00 à 9:00" soit 8:00 : 8;30 : 9:00
donc y a t'il plusieurs Limites en fonction du Pointage d'arrivée ! exemple le Matin "12:00 : 12:30 : 13:00
on pourrait ainsi sélectionner les heures en Fonction de l'arrivée (le départ étant en fonction de l'heure d'arrivée sélectionnée) "8:00 -->12:00" 8:30 -->12:30 etc
On aurait ainsi des Combobox renfermant des heures à sélectionner .
cordialement
jean marie
 

TooFatBoy

XLDnaute Barbatruc
Tu as trois périodes "Matinée" "Après-Midi" et "Soirée"
quelles sont leur Limites .
Tu as la réponse dans le premier classeur de ce fil de discussion ;) :

TranchesHoraires.png
 

TooFatBoy

XLDnaute Barbatruc
merci TooFatBoy
De rien. En espérant que les horaires en question n'aient pas changé. ;)


fichier : "PointHeure15b"

Ces questions , car dans la feuille "Planning" , il y a des heures de début comme 6:30 : 8:00 pour une fin a 12:00
Oui, ça dépend à quelle heure l'employé arrive réellement.
Mais les trois tranches horaires du tableau sont en fait trois tranches tarifaires différentes.

Il y a donc les heures de travail qu'il faut comparer aux heures des tranches tarifaires, pour payer justement l'employé, si j'ai bien tout compris.

C'est pour ça que je disais aussi que, pour moi, quand un employé pointe il suffit qu'il indique l'heure et s'il entre ou s'il sort. Le reste n'étant qu'affaire de calculs.
 

TooFatBoy

XLDnaute Barbatruc
Je pensais à un genre d'horaires aménagés.
Tout ce que j'en sais est ceci :
 

NONO14

XLDnaute Impliqué
Re
merci TooFatBoy
fichier : "PointHeure15b"
Ces questions , car dans la feuille "Planning" , il y a des heures de début comme 6:30 : 8:00 pour une fin a 12:00
jean marie
Oui car l'heure la plus tôt d'arrivée du matin est 6h30 jusqu'à 12h00 maximale, l'après-midi peut commencer à 12h00 et finir à 19h00 et le soir commence à 19h00 et fini à 23h59, pour ne pas dire minuit. Si un(e) employé(e) commence à 15h30 et finit à 22h00, il y a donc une partie en après-midi et l'autre le soir, tout ça est une question de tarification (que je ne traite pas dans l'application) mais les heures doivent être bien séparées.
 

Discussions similaires

Réponses
9
Affichages
448
Réponses
5
Affichages
416
Réponses
3
Affichages
239

Statistiques des forums

Discussions
314 730
Messages
2 112 277
Membres
111 493
dernier inscrit
lauryd65