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: