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.
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 ...
Bonjour vgendron,
Désolé pour la méprise. Alors le fichier, comment dire, il va beaucoup changé depuis ce matin. Suite à une réunion et du fait des éternelles modifications il a été arrêté qu'il fallait remettre à plat tout le projet.
Il faut simplifier les choses tout en étant complètes.
Il ressemble à ça à présent, mais les codages ne sont pas encore faits
Oui il faut que je recommence à coder. Je ne l'ai pas encore fait, c'est un exemple réalisé juste après la réunion pour avoir une idée du rendu.
Maintenant je vais m'attaquer au codage et là il y a du boulot cat beaucoup de choses ont changé, mais la philosophie reste à la même.
Par exemple, est-il possible de raccourcir ce code ?
VB:
'Controles de saisie des heures
'************************************
'************************************Lundi
Private Sub Tbx_11_Change()
If IsDate(Me.Tbx_11) Or Me.Tbx_11 = "" Then Call CalculerTotaux(1)
End Sub
Private Sub Tbx_12_Change()
If IsDate(Me.Tbx_12) Or Me.Tbx_12 = "" Then Call CalculerTotaux(1)
End Sub
Private Sub Tbx_13_Change()
If IsDate(Me.Tbx_13) Or Me.Tbx_13 = "" Then Call CalculerTotaux(1)
End Sub
Private Sub Tbx_14_Change()
If IsDate(Me.Tbx_14) Or Me.Tbx_14 = "" Then Call CalculerTotaux(1)
End Sub
Private Sub Tbx_15_Change()
If IsDate(Me.Tbx_15) Or Me.Tbx_15 = "" Then Call CalculerTotaux(1)
End Sub
Private Sub Tbx_16_Change()
If IsDate(Me.Tbx_16) Or Me.Tbx_16 = "" Then Call CalculerTotaux(1)
End Sub
à part intégrer l'évènement _change dans le module de classe ctextbox.. je ne vois pas comment.. il n'y a qu'une ligne de code
par contre, dans l'initialize du formulaire de choix tu peux déjà faire une boucle
ca suppose de recréer la table "t_actions" et d'être sûr d'avoir assez de checkbox sur ton formulaire
VB:
With Sheets("Données").ListObjects("t_Actions")
For I = 1 To .ListRows.Count
Me.Controls("Chk_" & I).Caption = .DataBodyRange(I, 1).Value
Next I
End With
'Me.Chk_1.Caption = Sheets("Données").Range("I2").Value
'Me.Chk_2.Caption = Sheets("Données").Range("I3").Value
'Me.Chk_3.Caption = Sheets("Données").Range("I4").Value
'Me.Chk_4.Caption = Sheets("Données").Range("I5").Value
'Me.Chk_5.Caption = Sheets("Données").Range("I6").Value
'Me.Chk_6.Caption = Sheets("Données").Range("I7").Value
'Me.Chk_7.Caption = Sheets("Données").Range("I8").Value
'Me.Chk_8.Caption = Sheets("Données").Range("I9").Value
'Me.Chk_9.Caption = Sheets("Données").Range("I10").Value
'Me.Chk_10.Caption = Sheets("Données").Range("I11").Value
End Sub
à part intégrer l'évènement _change dans le module de classe ctextbox.. je ne vois pas comment.. il n'y a qu'une ligne de code
par contre, dans l'initialize du formulaire de choix tu peux déjà faire une boucle
ca suppose de recréer la table "t_actions" et d'être sûr d'avoir assez de checkbox sur ton formulaire
VB:
With Sheets("Données").ListObjects("t_Actions")
For I = 1 To .ListRows.Count
Me.Controls("Chk_" & I).Caption = .DataBodyRange(I, 1).Value
Next I
End With
'Me.Chk_1.Caption = Sheets("Données").Range("I2").Value
'Me.Chk_2.Caption = Sheets("Données").Range("I3").Value
'Me.Chk_3.Caption = Sheets("Données").Range("I4").Value
'Me.Chk_4.Caption = Sheets("Données").Range("I5").Value
'Me.Chk_5.Caption = Sheets("Données").Range("I6").Value
'Me.Chk_6.Caption = Sheets("Données").Range("I7").Value
'Me.Chk_7.Caption = Sheets("Données").Range("I8").Value
'Me.Chk_8.Caption = Sheets("Données").Range("I9").Value
'Me.Chk_9.Caption = Sheets("Données").Range("I10").Value
'Me.Chk_10.Caption = Sheets("Données").Range("I11").Value
End Sub
Oui j'avais tapé ce code à la va-vite pour une petite démonstration, j'allais corriger le tir, mais merci de l'avoir fait pour moi, c'est cool
Non il y a les 7 jours de la semaine codés de la même façon. On parle bien du contrôle de saisies des heures ?