Bonjour,
Je cherche à améliorer une macro. Voici la macro : https://www.excel-downloads.com/thr...s-dun-dossier-debogage.20058735/post-20442971
C'est super, grâce à @Dranreb cette macro me permet de simplifier le fichier (ci-joint) et de conserver un pas de temps de 15 min entre les valeurs.
Comment mettre une inputbox pour pouvoir saisir le pas de temps (1 min, 2, min, 5, 10 ou 15 min) ?
J'ai essayé de modifier cette instruction : Dim TRés(1 To 96, 1 To 2): LD = 1 avec Dim TRés(1 To pas, 1 To 2): LD = 1 en intégrant ceci :
Dim pasdetps As Integer
Dim pas As Integer
pasdetps = InputBox("Veuillez saisir le pas de temps svp (2 min, 5 min, 10 min, 15 min)", "Choix du pas de temps à appliquer", 15)
If pasdetps = "" Then Exit Function
If pasdetps = 2 Then pas = 720
If pasdetps = 5 Then pas = 288
If pasdetps = 10 Then pas = 144
If pasdetps = 15 Then pas = 96
mais j'ai un problème de "constante" dans l'expression Dim lors de l'exécution.
Comment faire svp ?
Je vous remercie pour votre aide.
La macro :
Je cherche à améliorer une macro. Voici la macro : https://www.excel-downloads.com/thr...s-dun-dossier-debogage.20058735/post-20442971
C'est super, grâce à @Dranreb cette macro me permet de simplifier le fichier (ci-joint) et de conserver un pas de temps de 15 min entre les valeurs.
Comment mettre une inputbox pour pouvoir saisir le pas de temps (1 min, 2, min, 5, 10 ou 15 min) ?
J'ai essayé de modifier cette instruction : Dim TRés(1 To 96, 1 To 2): LD = 1 avec Dim TRés(1 To pas, 1 To 2): LD = 1 en intégrant ceci :
Dim pasdetps As Integer
Dim pas As Integer
pasdetps = InputBox("Veuillez saisir le pas de temps svp (2 min, 5 min, 10 min, 15 min)", "Choix du pas de temps à appliquer", 15)
If pasdetps = "" Then Exit Function
If pasdetps = 2 Then pas = 720
If pasdetps = 5 Then pas = 288
If pasdetps = 10 Then pas = 144
If pasdetps = 15 Then pas = 96
mais j'ai un problème de "constante" dans l'expression Dim lors de l'exécution.
Comment faire svp ?
Je vous remercie pour votre aide.
La macro :
VB:
Sub TousQuartDHeuresTsFic()
Dim NomFic As String, Wbk As Workbook
ChDrive "C": ChDir "C:\Relevés" ' À adapter
NomFic = Dir("*.xl*")
Do While NomFic <> ""
Set Wbk = Workbooks.Open(NomFic)
TousQuartDHeures Wbk.Worksheets(1).[A1].CurrentRegion
Wbk.Close SaveChanges:=True
NomFic = Dir: Loop
End Sub
Sub TousQuartDHeures(ByVal Rng As Range)
Dim TDon(), Dt As Date, LD As Long, Tp0 As Date, V0 As Double, _
Tp1 As Date, V1 As Double, LR As Long, TpX As Date
Set Rng = Rng.Rows(2).Resize(Rng.Rows.Count - 1, 2)
TDon = Rng.Value
Dim TRés(1 To 96, 1 To 2): LD = 1
Tp0 = TDon(LD, 1): V0 = TDon(LD, 2): LD = 2
Tp1 = TDon(LD, 1): V1 = TDon(LD, 2)
Dt = Int(Tp0)
For LR = 1 To 96
TpX = Dt + (LR - 1) / 96: TRés(LR, 1) = TpX
Do While Tp1 < TpX And LD < UBound(TDon, 1)
Tp0 = Tp1: V0 = V1: LD = LD + 1: Tp1 = TDon(LD, 1): V1 = TDon(LD, 2)
Loop
TRés(LR, 2) = V0 + (V1 - V0) * (TpX - Tp0) / (Tp1 - Tp0)
Next LR
Rng.ClearContents
Rng.Resize(96, 2).Value = TRés
End Sub
Pièces jointes
Dernière édition: