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 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 

Re: Code modification pas de temps VBA
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1521

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 21-09 13h45

Bonjour Leagr, bienvenue sur XLpages.com smiley

 

Pas facile de voir l'effet de ta procédure VBA sans avoir un minimum de données pour tester...

 

Je te conseille de joindre un fichier exemple de données (anonymisées) en pièce jointe à ton post.

Quelques lignes de données seulement devraient suffire (avec entêtes de colonne).

 

Le cas échéant, voir :

Comment joindre un fichier dans le Forum ?

 

(Attention, fichier excel si possible zippé, et de 120 Ko maximum)

 

Dans l'attente, je t'informe que dans ta ligne :

.Cells(ligne_result, 7).Date = .Cells(lignei, 1).Date

Cette ligne devrait déjà te générer une erreur VBA car la propriété "Date" n'est pas une propriété reconnue pour un objet "Cells".

 

Bien cordialement,

 

 


Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes