Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
je parlais notamment de la saisie controlé des heures dans les textbox avec le module de classe "cTextBox"
Oui j'ai vu ton code dans le module de classe, je vais le lire à tête reposée pour en comprendre le cheminement. Je vais essayer de modifier également le code pour les TxtBox des heures car il doit y avoir une ligne par jour. Dans l'absolu, l'idéal serait qu'en tapant le numéro de la semaine, il me propose les jours de la semaine correspondants. Par exemple, je tape la semaine 37 de l'année 2024 ou l'année en cours, il m'affiche du Lundi 9 septembre au dimanche 15 septembre et qu'il n'y ait plus qu'à choisir le jour dans la liste. Mais bon je pense pouvoir m'en sortir, au-moins je le crois....
Encore mille mercis
 
Dernière édition:

NONO14

XLDnaute Occasionnel
Dans mon formulaire UfPlanning j'ai apporté quelques modifications. J'ai également créé une feuille de calcul "Date" qui me permet de connaître les dates d'une semaine, c'est-à-dire du - au et un détail par jour.
Cette feuille va me servir à alimenter le formulaire.
La Combo est alimentée par la colonne B en RowSource dans les propriétés de l'objet.
A partir de là, je souhaiterai alimenter les TextBox du (TxtDeb) et au (TxtFin) par les dates correspondantes au numéro de semaine choisi dans la Combo.
Les données sont dans la feuille Date dans un TS nommé t_Semaine.
Ensuite, chaque checkbox doit prendre en caption la valeur de la cellule se trouvant sur la même ligne que le numéro de semaine soit de la colonne E à K.
Je n'arrive pas à faire correspondre les 3 éléments ensemble.
Pour être plus clair : Je choisi un numéro de semaine dans la Combo, alors les TextBox du et au affiche les dates du début et de fin de la semaine et chaque checkbox prenne en caption, les jours de cette semaine selon les données du TS t_Semaine de la feuille Date.
J'aurai juste besoin d'un exemple et je ferai le reste.
Je me suis penché sur ce travail pendant que les dernières décisions sont prises concernant l'application.
Je vous en remercie par avance
tiens, regarde ce fichier sur lequel j'ai travaillé il n'y a pas très longtemps pour quelqu'un du forum
C'est super, c'est ce que je souhaite faire. Il va me falloir revoir mon UF et me rapprocher du tien.
Tu m'enlève une grosse épine du pied.
Merci beaucoup pour l'idée
 

Pièces jointes

  • PointHeure3.xlsm
    319 KB · Affichages: 1

NONO14

XLDnaute Occasionnel
Bonjour à toutes et à tous,
A l'aide du fichier de vgendron, que je remercie chaleureusement, j'ai mis en place un UserForm multipages.
J'ai utilisé pour la mise en page du formulaire un code créé par patricktoulon, que je remercie également, ce code permet d'ajuster les pages à la taille du formulaire. Cependant je bute sur le dimensionnement des pages, je n'arrive pas à les ajuster, l'Userform doit être un peu plus grand que la page sélectionnée.
Je vous mets un fichier exemple en pièce jointe.
Je vous remercie par avance pour votre aide
 

Pièces jointes

  • Essai.xlsm
    141.5 KB · Affichages: 4

NONO14

XLDnaute Occasionnel
Hello
est ce vraiment utile de redimensionner le multipage dans le formulaire??
par contre, ce dont tu as peut etre besoin, c'est de mettre le formulaire plein écran?
Bonjour vgendron,
Je souhaite redimensionner le formulaire pour une question d'esthétique, par contre il n'est pas souhaitable de le mettre en plein écran.
Merci toutefois pour ta réponse
 

vgendron

XLDnaute Barbatruc
je comprend pas bien
déjà, pour etre sur de bien parler de la meme chose
sur ton formulaire "Userform1" , il y a un multipage "multipage1" avec 3 pages

quand on est directement dans l'éditeru VBA et qu'on visualise le formulaire, on voit bien que le multipage est bien visible en entier, quelque soit la page affichée==> donc la.. OK

maintenant, si tu lances l'appli,
le mulitpage est redimensionné MAIS il sort maintenant du formulaire==> on ne voit plus tout
les deux lignes en cause sont:
VB:
Me.height = .height + Mpage(.Value).hcaption + Mpage(.Value).Weight_Cadre * 2
Me.width = .width + Mpage(.Value).hcaption

j'ai pas bien cerné la mécanique, et les valeurs prises en référence, mais
soit il faut corriger ces deux lignes pour ajuster les valeurs
soit ne plus redimensionner le formulaire et Mulitpage à chaque changement de page..
 

NONO14

XLDnaute Occasionnel
Lorsque je lance l'application pour l'affichage de mon UF, la page1 (Saisie) doit être active et redimensionnée à la taille du formulaire. Ensuite, si je sélectionne la page2, tout est redimensionné et ainsi de suite.
Pour le code, c'est bien là mon soucis, je n'arrive pas à corriger les valeurs.
 

vgendron

XLDnaute Barbatruc
il te reste plus qu'à mettre le code associé à chaque controle...
normalement tu as tout dans le fichier que je t'ai donné..
si tu as besoin d'explications n'hésite pas. d'habitude j'essaie de commenter un maximum le code... mais pas tout le temps..
 

NONO14

XLDnaute Occasionnel
Merci beaucoup de me permettre d'utiliser ton fichier, je pense pouvoir m'en sortir, sinon je sais pouvoir compter sur toi et le forum. Allez, je m'y remets
 

Discussions similaires

Réponses
9
Affichages
343
Réponses
5
Affichages
369
Réponses
3
Affichages
161
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…