Bonjour à tous,
Si vous êtes un peu matheux, cet algorithme est pour vous !
Dans le fichier joint, j'ai des données de pression que je souhaite analyser, et ainsi calculer chaque chute de pression (un graphique montre les 4 différentes chutes décrivant un pic)
L'algorithme est le suivant :
1/ Lorsque la pression passe pour la première fois sous 0,6 bar, on l'enregistre et on attend une chute de 0,3 bars (descente)
=> on lance le calcul jusqu'à obtenir la valeur minimum de la descente et on compte "+1 vide"
2/ Lorsque valeur courante supérieure à 0,3 bar du minimum = on est remonté
=> Reboucler jusqu'à compter tous les vides (4)
Malheureusement je ne m'en sors pas en enchaînant les conditions, je pense que des boucles while ou do until seraient un peu plus efficaces mais je ne maîtrise pas... Je vous conseille d'abuser des points d'arrêt pour savoir comment se comportent les boucles !
Mon code actuel :
Merci pour votre aide
Si vous êtes un peu matheux, cet algorithme est pour vous !
Dans le fichier joint, j'ai des données de pression que je souhaite analyser, et ainsi calculer chaque chute de pression (un graphique montre les 4 différentes chutes décrivant un pic)
L'algorithme est le suivant :
1/ Lorsque la pression passe pour la première fois sous 0,6 bar, on l'enregistre et on attend une chute de 0,3 bars (descente)
=> on lance le calcul jusqu'à obtenir la valeur minimum de la descente et on compte "+1 vide"
2/ Lorsque valeur courante supérieure à 0,3 bar du minimum = on est remonté
=> Reboucler jusqu'à compter tous les vides (4)
Malheureusement je ne m'en sors pas en enchaînant les conditions, je pense que des boucles while ou do until seraient un peu plus efficaces mais je ne maîtrise pas... Je vous conseille d'abuser des points d'arrêt pour savoir comment se comportent les boucles !
Mon code actuel :
Code:
Sub CalculChutePresson()
Dim nbVides As Integer
nbVides = 0 'Nombre de vides à compter, pris en compte une fois une chute de pression de 0,3 bar constatée
Dim videMini As Double
videMini = 0.6 'Valeur du vide mini. Réinitialisé à 0,6 à chauqe fois
ligneTotal = ActiveSheet.UsedRange.Rows.Count
For x = 2 To ligneTotal
valeurPression = Cells(x, 4).Value
valeurPressionApres = Cells(x + 1, 4).Value
valeurPressionAvant = Cells(x - 1, 4).Value
If valeurPression <= 0.6 Then
If valeur06 = "" Then
valeur06 = valeurPression
End If
End If
If valeur06 <> "" Then
If valeur06 - valeurPression > 0.3 Then
If valeurPression <= videMini Then
videMini = valeurPression
If videMini < valeurPressionApres Then
nbVides = nbVides + 1
videMini = 0.6
End If
End If
End If
End If
Next x
End Sub
Merci pour votre aide