Victor21
XLDnaute Barbatruc
Bonjour à tous !
L'un d'entre vous utilisant Excel 2010 pourrait-il tester la macro Worksheet_Change du fichier joint.
Chez moi, sous Excel 2003, elle fonctionne, mais l'utilisateur tourne avec Excel 2010 et me dit qu'elle plante lors du choix dans la zone D3:O40
D'avance, merci de bien vouloir tester (pour lui), et critiquer (pour moi)
Complément : la division par 2, c'est parce que les exercices sont rémunérés à 50% du taux horaire.
L'un d'entre vous utilisant Excel 2010 pourrait-il tester la macro Worksheet_Change du fichier joint.
Chez moi, sous Excel 2003, elle fonctionne, mais l'utilisateur tourne avec Excel 2010 et me dit qu'elle plante lors du choix dans la zone D3:O40
Le code :Ligne Target.value=Target value surlignée avec message :
Erreur d'exécution'-2147417848 (800 10 108)':
La méthode 'Value' de l'objet 'Range' a échoué.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Grade As String ' Grade de l'agent
Dim Off As Currency ' Officiers
Dim Sof As Currency ' Sous/Officiers
Dim Cap As Currency ' Caporaux
Dim Sap As Currency ' Sapeurs
' Initialisation des variables et constantes
Grade = Range("A" & Target.Row).Value ' Valeur en colonne A
Off = 11.2 ' Rémunération horaire des Officiers
Sof = 9.03 ' Rémunération horaire des Sous-Officiers
Cap = 8# ' Rémunération horaire des Caporaux
Sap = 7.45 ' Rémunération horaire des Sapeurs
' Permet de n'agir que sur la zone "Exercices"
If Intersect(Target, Range("D3:O40")) Is Nothing Or Target.Count > 1 Then Exit Sub
' En fonction du choix dans la liste déroulante (1;2;3; Excusé; Absent)
Select Case Target.Value
' Calcul du montant en fonction de la durée de présence et du grade
Case 1 To 3
If Grade = "LTN" _
Then Target.Value = Round(Target.Value * Off / 2, 2)
If Grade = "ADC" Or Grade = "ADJ" Or Grade = "SCH" Or Grade = "SGT" _
Then Target.Value = Round(Target.Value * Sof / 2, 2)
If Grade = "CCH" Or Grade = "CPL" _
Then Target.Value = Round(Target.Value * Cap / 2, 2)
If Grade = "SAP" Or Grade = "1CL" _
Then Target.Value = Round(Target.Value * Sap / 2, 2)
' En cas d'absence
Case Else
Target.Value = Target.Value
End Select
End Sub
D'avance, merci de bien vouloir tester (pour lui), et critiquer (pour moi)
Complément : la division par 2, c'est parce que les exercices sont rémunérés à 50% du taux horaire.
Pièces jointes
Dernière édition: