Bonjour à tous,
J'ai rédigé un formulaire avec des macros pour faciliter la saisie et calculer des champs en automatique.
Seulement, j'ai deux questions:
1- Le document doit obligatoirement être déprotégé au départ, puisqu'il va chercher des mots clés sur un logiciel métier (mots clé qui ne se mettent pas à jour si le docuement est initialement en mode formulaire). Ensuite l'utilisateur, pour accéder aux fonctionnalités du formulaire doit faire : Outil/protection/protéger le document/autoriser formulaire. Comment faire en sorte que cette manipulation soit automatique et ne demande pas la manipulation de l'utilsateur (qui est un utilisateur très limité en connaissances bureautiques)?
2- Certains champs de formulaire sont calculés automatiquement. Comment faire en sorte que l'utilisateur ne puisse pas les modifier ?
A toutes fins utiles, je mets un bout de ma macro ci-dessous:
Sub heuresetsalairemensuel()
Dim i As Integer
MsgBox ("Attention, le nombre d'heures hebdomadaire ne doit pas dépasser 35 heures.")
respect35h:
heureshebdo = InputBox("Quel est le nombre d'heures hebdomadaire?")
'Controle d'erreur, respect des 35 heures
If heureshebdo > 35 Then
MsgBox ("Le nombre saisi dépasse 35. le nombre d'heures hebdomadaire ne doit pas dépasser 35 heures.")
GoTo respect35h
End If
'controle d'erreur : si il y a un "." à la place de "," --> transformer "." en ","
i = 1
While i <= Len(heureshebdo)
If Mid(heureshebdo, i, 1) = "." Then
heureshebdo = Mid(heureshebdo, 1, i - 1) & "," & Mid(heureshebdo, i + 1, Len(heureshebdo))
End If
i = i + 1
Wend
'fin ctrl erreur
heuresmens = heureshebdo * 4.333333
heuresmens = Format(heuresmens, "#0.00")
MsgBox ("le nombre d'heures mensuel est de " & heuresmens & "heures.")
ActiveDocument.FormFields("dureectt").Result = heuresmens
sal = ActiveDocument.FormFields("pts").Result * 5.302 / 151.67 * heuresmens
sal = Format(sal, "#0.00")
MsgBox ("La valeur du point est de 5,302 €. Le nombre d'heures mensuel est de " & heuresmens & " heures. Le nombre de points est de " & ActiveDocument.FormFields("pts").Result & " points, soit un salaire mensuel de base de " & sal & " : " & ActiveDocument.FormFields("pts").Result & " * 5,302 / 151,67 * " & ActiveDocument.FormFields("dureectt").Result & ".")
ActiveDocument.FormFields("salaire").Result = sal
End Sub
Merci pour votre aide!
J'ai rédigé un formulaire avec des macros pour faciliter la saisie et calculer des champs en automatique.
Seulement, j'ai deux questions:
1- Le document doit obligatoirement être déprotégé au départ, puisqu'il va chercher des mots clés sur un logiciel métier (mots clé qui ne se mettent pas à jour si le docuement est initialement en mode formulaire). Ensuite l'utilisateur, pour accéder aux fonctionnalités du formulaire doit faire : Outil/protection/protéger le document/autoriser formulaire. Comment faire en sorte que cette manipulation soit automatique et ne demande pas la manipulation de l'utilsateur (qui est un utilisateur très limité en connaissances bureautiques)?
2- Certains champs de formulaire sont calculés automatiquement. Comment faire en sorte que l'utilisateur ne puisse pas les modifier ?
A toutes fins utiles, je mets un bout de ma macro ci-dessous:
Sub heuresetsalairemensuel()
Dim i As Integer
MsgBox ("Attention, le nombre d'heures hebdomadaire ne doit pas dépasser 35 heures.")
respect35h:
heureshebdo = InputBox("Quel est le nombre d'heures hebdomadaire?")
'Controle d'erreur, respect des 35 heures
If heureshebdo > 35 Then
MsgBox ("Le nombre saisi dépasse 35. le nombre d'heures hebdomadaire ne doit pas dépasser 35 heures.")
GoTo respect35h
End If
'controle d'erreur : si il y a un "." à la place de "," --> transformer "." en ","
i = 1
While i <= Len(heureshebdo)
If Mid(heureshebdo, i, 1) = "." Then
heureshebdo = Mid(heureshebdo, 1, i - 1) & "," & Mid(heureshebdo, i + 1, Len(heureshebdo))
End If
i = i + 1
Wend
'fin ctrl erreur
heuresmens = heureshebdo * 4.333333
heuresmens = Format(heuresmens, "#0.00")
MsgBox ("le nombre d'heures mensuel est de " & heuresmens & "heures.")
ActiveDocument.FormFields("dureectt").Result = heuresmens
sal = ActiveDocument.FormFields("pts").Result * 5.302 / 151.67 * heuresmens
sal = Format(sal, "#0.00")
MsgBox ("La valeur du point est de 5,302 €. Le nombre d'heures mensuel est de " & heuresmens & " heures. Le nombre de points est de " & ActiveDocument.FormFields("pts").Result & " points, soit un salaire mensuel de base de " & sal & " : " & ActiveDocument.FormFields("pts").Result & " * 5,302 / 151,67 * " & ActiveDocument.FormFields("dureectt").Result & ".")
ActiveDocument.FormFields("salaire").Result = sal
End Sub
Merci pour votre aide!