Gruick
XLDnaute Accro
Bonjour,
Afin d'améliorer la réponse au sujet https://www.excel-downloads.com/threads/gestion-flotte-vehicules.143568/, je suis devant deux solutions :
- la première consiste à transformer ma macro en deux fonctions, mais ça ne calcule pas (même en mettant des "Calculate"), sauf si je retape dans la cellule concernée la fonction créée,
- la deuxième consiste à en faire la même macro événementielle, sur chaque nouvelle feuille, ce qui alourdira le fichier, et comment la recopier par macro ?
Si vous avez une idée, une astuce, une trouvaille... je patauge dans mon lisier. Merci d'avance
Gruick
Afin d'améliorer la réponse au sujet https://www.excel-downloads.com/threads/gestion-flotte-vehicules.143568/, je suis devant deux solutions :
- la première consiste à transformer ma macro en deux fonctions, mais ça ne calcule pas (même en mettant des "Calculate"), sauf si je retape dans la cellule concernée la fonction créée,
Code:
Function Contrôle()
For c = Cells(2 ^ 16, 4).End(xlUp).Row To Cells(14, 4).Row Step -1
If Cells(c, 4) = "CT" Then
Contrôle = DateSerial(Year(Cells(c, 1)) + 1, Month(Cells(c, 1)), Day(Cells(c, 1))): Calculate
Exit Function
End If
Next c
Contrôle = DateSerial(Year(Cells(4, 5)) + 1, Month(Cells(4, 5)), Day(Cells(4, 5))): Calculate
End Function
Code:
Function Révision()
For r = Cells(2 ^ 16, 4).End(xlUp).Row To Cells(14, 4).Row Step -1
If Cells(r, 4) = "Révision" Then
Révision = ((Cells(r, 2) + 30000) \ 30000) * 30000: Calculate
Exit Function
End If
Next r
Révision = ((Cells(5, 5) + 30000) \ 30000) * 30000: Calculate
End Function
- la deuxième consiste à en faire la même macro événementielle, sur chaque nouvelle feuille, ce qui alourdira le fichier, et comment la recopier par macro ?
Code:
Private Sub Worksheet_Activate()
For c = Cells(2 ^ 16, 4).End(xlUp).Row To Cells(14, 4).Row Step -1
If Cells(c, 4) = "CT" Then
Cells(8, 3) = DateSerial(Year(Cells(c, 1)) + 1, Month(Cells(c, 1)), Day(Cells(c, 1)))
GoTo Révision
End If
Next c
Cells(8, 3) = DateSerial(Year(Cells(4, 5)) + 1, Month(Cells(4, 5)), Day(Cells(4, 5)))
Révision:
For r = Cells(2 ^ 16, 4).End(xlUp).Row To Cells(14, 4).Row Step -1
If Cells(r, 4) = "Révision" Then
Cells(8, 6) = ((Cells(r, 2) + 30000) \ 30000) * 30000
Exit Sub
End If
Next r
Cells(8, 6) = ((Cells(5, 5) + 30000) \ 30000) * 30000
End Sub
Gruick