Forums XLPages

Tous les messages (leagr)

Code modification pas de temps VBA
#1
Débutant XLPages

Inscription: 20/09/2022
De France

Messages: 1

Système d'exploitation:
PC
Version Excel utilisée:
2019
Posté le : 20-09-2022 22h51

Bonjour,

Je m'adresse à vous aujourd'hui car je me lance dans VBA pendant mon stage et je ne parviens pas à trouver l'erreur dans un code que j'ai fais. Pour vous expliquer la situation j'ai un tableau avec des valeurs de température (colonne 2), d'humidité et d'illumination relevées à différentes dates (format jj/mm/aaaa hh/mm/ss, colonne 1) pour un pas de temps allant de 1 à 11s (il n'est pas toujours régulier).

J'aimerais avoir un nouveau tableau avec un pas de temps de 10min pour lequel la valeur affichée à chaque temps t est la moyenne des températures sur les 10 min précédentes.

 

Pour cela :
- je demande à l'exécuteur de saisir le pas de temps désiré au cas où je veuille le refère pour un autre pas de temps (pdt_voulu)
- grâce à une boucle If, dès que la somme des écarts de temps entre deux mesures (pdt) atteint cette valeur, (obtenu grâce à DateDiff)
- je calcule la moyenne des températures sur l'intervalle
- que je fais figurer dans un nouveau tableau colonnes 7 et 8 avec :
     * en colonne 7 la dernière date prise en compte dans le calcul de la moyenne de température pour cet intervalle
     * en 8 la moyenne de température de l'intervalle.

 

Normalement j'intègre ça dans une boucle for allant de 2 à 77460 mais comme cela était lourd à gérer j'essaie dans un premier temps de l'appliquer jusqu'à la ligne 1000.


Le fait est que rien n'apparaît dans les colonnes si ce n'est le nom des colonnes.

Je vous laisse mon code juste ici au cas où vous pourriez m'aider.

 

Merci d'avance pour vos réponses.

 

Private Sub CommandButton1_Click()

With Worksheets("Feuil1")

 

Dim lignei As Single
Dim pdt As Single
Dim pdt_voulu As Single
Dim som_temp As Single
Dim moy_temp As Single
Dim date1 As Date
Dim date2 As Date
Dim ligne_result As Single

 

pdt_voulu = InputBox("Pas de temps =", "Choix du pas de temps en minutes")

 

.Cells(1, 7) = "Date"
.Cells(1, 8) = "Température"

 

For lignei = 2 To 1000
.Range(.Cells(lignei, 7), .Cells(lignei, 8).End(xlDown)).Clear
Next lignei


For lignei = 2 To 1000
temp = 0
pdt = 0

 

If pdt <= pdt_voulu Then
som_temp = temp + .Cells(lignei, 2).Value
date1 = .Cells(lignei, 2)
date2 = .Cells(lignei, 3)
pdt = DateDiff("n", date1, date2, vbMonday) 'date1 antérieure à date2, "n" car on veut en minutes
Else
ligne_result = ligne_result + 1
moy_temp = som_temp / (lignei - 2) '-2 car lignei = 2 quand il n'y a qu'une valeur et parce que on retamme une boucle donc lignei augmente de 1 et pas le nombre de valeurs prises en compte dans la temp
.Cells(ligne_result, 7).Date = .Cells(lignei, 1).Date
.Cells(ligne_result, 8).Value = moy_temp
End If

 

Next lignei

 

End With

 

End Sub

Hors Ligne
Rapport   Haut