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

NONO14

XLDnaute Impliqué
Pourquoi ?
Et pourquoi n'est-elle pas construite directement à la taille adaptée au UserForm ?
La page 1 est construite à la taille du formulaire, ce sont les autres pages qui devaient être redimensionnées.
Le code de patricktoukon redimensionne le tout alors j'ai fait avec sans me creuser la tête davantage.
Je les redimensionne pour une question d'esthétisme et ça plaît bien comme ça au donneur d'ordre. Et puis pour être tout à fait honnête, ça ne me dérange pas plus que ça, ce n'est qu'un petit bout de code en plus et quand je vois ce qu'il me reste à faire alors...
 

vgendron

XLDnaute Barbatruc
Ok, la page 1 est construite à la taille du UserForm. C'est très bien.

Mais ça ne répond toujours pas à ma question de départ : pourquoi faut-il redimensionner les autres pages ?!?

Franchement, ça m'intrigue.
je dirais.. juste pour faire joli...
perso.. je ne fais jamais de redimensionnement de USF (si.. une fois dans une appli ou j'ajoutais dynamiquement des frames...)
 

vgendron

XLDnaute Barbatruc
Bon, je n'aurai jamais ma réponse, et ça continuera de m'intriguer.

Mais ce n'est pas grave. La seule chose importante est que tu trouves une solution pour obtenir ce que tu veux.
bah.. toofat.. un gros coup de fatigue??
la réponse est claire: "pour faire joli"....
la page 2 contient moins de controls à afficher que la page1 ==> quand la page 2 est affichée, sa taille (et celle du USF) est diminuée..
 

Discussions similaires

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