Aide macro, faire une moyenne de certaines cellules seulement qd evenement specifique

Douie

XLDnaute Nouveau
Bonjour a tous!

J'aurais une question sur une partie de la macro que je suis en train de faire.
Grosso modo, je travaille avec des capteurs qui prennent des mesures toutes les 5 minutes pendant 1 jour.

En faisant la moyenne des mesures pour chaque heure, je me retrouve avec 24 valeurs d'un parametre que nous appelerons A (1 pour chaque heure).

J'ai aussi un autre parametre B qui m'informe sur le luminosite de la journee. Si ce parametre est au dessus de 1, il fait jour si il est en dessous, il fait nuit. J'ai donc une colonne C avec l'instruction suivante: SI(Bi > 1, 1, 0).

Maintenant j'ai donc une valeur de C pour chaque 5 minutes, ce qui ne m'interesse pas puisque le reste de mon projet se passe en heures. Je fais donc une moyenne de ce parametre C pour chaque heure. J'ai donc 24 valeurs (colonne D) qui sont soit 0, soit 1, soit entre les deux (0=nuit toute l'heure, 1=jour toute l'heure, entre les deux = soleil se leve ou se couche pendant cette heure).

Donc voici ce aue je veux faire par macro:

Je souhaite que mon nouveau parametre X soit la moyenne des parametres A que quand le jour est leve, c'est a dire seulement quand le parametre D correspondant a la meme heure est superieur a 0.5.

Donc comment dire X = MOYENNE(Ai, Aj, Ak) que quand Di, Dj, Dk ... > 0.5 ?

Colonne A = 24 valeurs (celles dont on veut la moyenne)
Colonne B = Valeurs toutes les 5 minutes
Colonne C = 1 si Ci>1 sinon 0
Colonne D = Moyenne de C sur une heure, donc 24 valeurs

X = 1 seule valeur.

Quelle longue histoire! J'espere que vous m'avez compris! (Claviers anglais = pas d'accents, excusez donc mon orthographe!)

Merci encore
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide macro, faire une moyenne de certaines cellules seulement qd evenement speci

Bonjour Douie, bonjour le forum,

Tes explications sont claires mais avec un petit fichier exemple ça nous éviterait de récréer ton environnement...
Pour faire touner une macro il faut du contenu...

p.s. clavier anglais, des accents partout à À é É ç Ç ü Ü ê Ê...
 

Douie

XLDnaute Nouveau
Re : Aide macro, faire une moyenne de certaines cellules seulement qd evenement speci

Voila le fichier !


Les colonnes sont toutes decalees d'un puisaue j'ai rajoute les temps d'enregistrement des donnees.

En realite, je n'aurais pas qu'un seul jour mais 90.
Du coup, je cherche, en plus de la construction de mon parametre X, a faire automatiquement la colonne E (prendre pour chaque heure la moyenne de la colonne D).

Merci !

ps: Toujours pas trouve les accents !
 

Pièces jointes

  • Book1.xlsx
    17.7 KB · Affichages: 51
  • Book1.xlsx
    17.7 KB · Affichages: 53
  • Book1.xlsx
    17.7 KB · Affichages: 51

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide macro, faire une moyenne de certaines cellules seulement qd evenement speci

Bonjour Douie, bonjour le forum,

J'essaie de regarder ça cet après-midi où j'aurais un peu de temps.

Pour les accents c'était une vanne ! Mais si ça t'intéresse il faut paramétrer le Clavier International US et la langue Portugais (Brésil). Ensuite les accents se font par combinaison de touches [']+[la lettre à accentuer], áÁéÉíÍóÓúÚ, [`] + [la lettre à accentuer], àÀèÈìÌòÒùÙ, etc.
 

Douie

XLDnaute Nouveau
Re : Aide macro, faire une moyenne de certaines cellules seulement qd evenement speci

Ahah d'accord ! Vu que je ne suis la que temporairement je pense que je vais m'en passer ;) (deja que je galere avec les a et les q !)

Merci pour ton aide, si jamais tu as besoin de precision, j'essaie de coder toute l'aprem donc je pourrais renseigner rapidement !
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide macro, faire une moyenne de certaines cellules seulement qd evenement speci

Bonjour Douie. bonjour le forum,

Je n'arrive pas a bien comprendre. Je te propose quelque chose mais je sens que c'est pas ça du tout.Je ne comprends pas pourquoi la premiere moyenne commence à D4 et non pas à D3 ?
Regarde et dis-moi...
Le code :
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim nb As Byte 'déclare la variable nb (NomBre)
Dim tot As Double 'déclare la variable tot (TOTal)
Dim M As Double 'déclare la variable M (Moyenne)

Set pl = Sheets("Sheet1").Range("B3:B26") 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules de la plage pl
    If cel.Offset(0, 3).Value > 0.5 Then 'condition : si la valeur de la cellule en colonne E de cel est supérieure à 0.5
        tot = tot + CDbl(cel.Value) 'définit le total tot
        nb = nb + 1 'incrémente le nombre
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
M = tot / nb 'calcul de la moyenne
MsgBox M 'message affichant la moyenne
End Sub
Le fichier :
 

Pièces jointes

  • Douie_v01.xls
    60.5 KB · Affichages: 44

Douie

XLDnaute Nouveau
Re : Aide macro, faire une moyenne de certaines cellules seulement qd evenement speci

Bonjour !!

Merci pour ton aide, ça marche !
Oui, en fait j'ai purement zappé la 1ere valeur (D3) car pour toutes les autres heures, ma moyenne va de hh:05 à hh+1. Donc j'ai un minuit en trop au début et j'ai un minuit qui me manque à la fin ... Mais bon vu que à minuit il fait nuit, cela ne change pas ma moyenne si je ne prend pas ces cellules qui sont de toutes façon 0 =)

Je n'ai pas l'habitude des "raccourcis" en renommant ma plage de données, je ne sais pas trop comment faire donc voici le code que j'ai fait en me basant sur le tien, j'ai aussi rajouté la création de la colonne E:

Code:
Sub macro()

Dim j As Integer, i As Integer
Dim number As Double
Dim X As Double
Dim nb As Integer
Dim NETday As Double

number = 0
X = 0
nb = 0


For i = 0 To 23
    For j = 4 + 12 * i To 15 + 12 * i
        number = number + Sheets("Sheet1").Range("D" & j).Value
        Sheets("Sheet1").Range("E" & i + 3) = number / 12
    Next j
    number = 0
Next i

For i = 3 To 26
    If Sheets("Sheet1").Range("E" & i).Value >= 0.5 Then
        X = X + Sheets("Sheet1").Range("B" & i).Value
        nb = nb + 1
    End If
Next i
      
NETday = X / nb
Sheets("Sheet1").Range("F" & 3).Value = NETday

End Sub

Pour éviter d'utiliser à chaque fois des trucs du genre "Sheets("Sheet1").Range("D" & j).Value" je dois les renommer au début ?
Je pense que c'est bon, maintenant il va falloir que je revoie mes boucles pour que ça puisse tourner sur 90 jours à la suite.

Je vais continuer ça dimanche, je te remercie encore!
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide macro, faire une moyenne de certaines cellules seulement qd evenement speci

Bonjour Douie, bonjour le forum,

Réponse un peu tardie désolé...
Tu peux utiliser un With... End With avec le point devant ce qui y fait référence. Ça donne :
Code:
Sub macro()
Dim j As Integer, i As Integer
Dim number As Double
Dim X As Double
Dim nb As Integer
Dim NETday As Double

number = 0
X = 0
nb = 0
With Sheets("Sheet1")
    For i = 0 To 23
        For j = 4 + 12 * i To 15 + 12 * i
            number = number + .Range("D" & j).Value
            .Range("E" & i + 3) = number / 12
        Next j
        number = 0
    Next i
    For i = 3 To 26
        If .Range("E" & i).Value >= 0.5 Then
            X = X + .Range("B" & i).Value
            nb = nb + 1
        End If
    Next i
          
    NETday = X / nb
    .Range("F" & 3).Value = NETday
End With
End Sub
 

Discussions similaires

Réponses
18
Affichages
783
Réponses
7
Affichages
546

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87