Comptage impulsions irrégulières.

S

Seb

Guest
Bonjour, n'arrivant pas à débloquer mon problème (sous Excel 2002), je me permets de vous le soumettre (voir fichier joint):

Enoncé: J'ai un signal périodique, de valeur 0 ou 1, avec des cycles d'apparition variables dans le temps (durées de l'état 1 également variable)...

Question: Existe-t-il une fonction qui permette de compter automatiquement le temps écoulé entre 2 'fronts montants' (début de signal) qui se suivent ?

Précisions: J'ai quelques milliers d'impulsions à traiter, d'où l'intérêt de trouver pour moi une fonction qui me permette d'automatiser ce comptage. Je 'bidouille' sous Excel mais ça s'arrête là, je n'ai aucune connaissance en macro (je le précise car je me demande si il ne va pas falloir que je m'y mette...).

Merci pour vos suggestions.
 
S

Seb

Guest
A priori j'ai raté le rattachement de mon fichier exemple... [file name=Test_comptage.zip size=3821]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Test_comptage.zip[/file]
 

Pièces jointes

  • Test_comptage.zip
    3.7 KB · Affichages: 17

porcinet82

XLDnaute Barbatruc
Salut Seb,

Come je ne suis pas sur d'avoir bien compris ton petit soucis, je me permet de te demander quelques précisions. Est ce que tu veux compter le temps entre le changement de signal (en prenant le début de ton fichier, j'aurais par exemple entre le premier 0 et le premier 1 : 22s - 1 s = 21s)?

Mais également, comment veux-tu présenter les résultats?

Tiens nous au courant.

@+
 
S

Seb

Guest
En voulant faire un fichier très light j'ai peut-être hommis certaines infos.
La valeur qui m'intresse est le temps passé entre 2 'fronts montants' consécutifs, ou changement de la valeur de '0' à '1', voir commentaire dans courbe du fichier joint.
Et dans le cas que je vous présente il s'agit bien de 21 secondes, mais pas comme tu me le précises.
Le 1er changement d'état (de '0' à '1') se fait à 22 s, et le second à 43 s, il s'est donc passé (43-22) 21 s entre les 2.

Pour la présentation des résultats il y à certainement différentes possibilités.
Pour la petite histoire ces impulsions représentent une accélaration (montée en régime), elles vont apparaître de plus en plus rapprochées dans le temps.
La finalité de cet exercice sera de tracer une courbe temps/régime.

Pour la représentation des résultats disont que je souhaite à chaque impulsion créer une cellule avec le temps qui la sépare de la précédente (par exemple dans le fichier que je vous ai joint je souhaite voir apparaitre une seule cellule avec la valeur 21 s dedant). A partir de ces données je serais capable de tracer ma courbe temps/régime.

N'hésitez pas à me demander d'autres précisions, j'essaierai d'être le plus clair possible.
Merci !
 

porcinet82

XLDnaute Barbatruc
re,

Avec la macro suivante, il me semble que ca fonctionne, mais je te laisse le soin de le tester.
Quelques explication, les temps sont indiqués dans la colonne D a partir de la cellule D2 (j'ai laissé la place pour un intitulé). Tiens moi au courant si tu veux d'autres explications ou si tu veux faire des modif.
Code:
Sub test()
Dim i As Integer, tps As Integer, k As Integer
Dim num As Variant

k = 2
Application.Goto Sheets('Données').Range('A1')
For i = 3 To Range('B65536').End(xlUp).Row
    num = Cells(i, 2).Value
    If Not Cells(i - 1, 2).Value = num And num = 1 Then
        Cells(k, 4).Value = Abs(tps - Cells(i, 1).Value)
        tps = Cells(i, 1).Value
        k = k + 1
    End If
Next i
Cells(2, 4).Delete Shift:=xlUp
End Sub

@+
 
S

Seb

Guest
Bonsoir Porcinet82, je reviens à la charge...
:unsure:
La macro marche très bien dans l'exemple que j'ai fais suivre, mais un bug apparaît quand je la retranspose dans mon application:
'Erreur d'exécution '9': L'indice n'appartient pas à la sélection.' .
Mon fichier étant très lourd je rattache juste une petite partie à ce message.

Quelques questions:

1/ Qu'est-ce qui fait bugger la macro ?

2/ Quelle partie de la macro gère l'endroit où apparaissent les résultats (ici on commence à partir de D2) ?

3/ Je dérive un peu du fil initial de mon post, mais c'est pour la même application: comment retenir une ligne de donnée sur 5, pour alléger mes fichiers (qui utilisent quasilent la totalité dispo...) ?

Pour cette dernière question, n'hésites pas si tu le juges utile à me faire ouvrir un autre post...

Merci ! [file name=Courbe_temps_regime__PART_5.zip size=30494]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Courbe_temps_regime__PART_5.zip[/file]
 

Pièces jointes

  • Courbe_temps_regime__PART_5.zip
    29.8 KB · Affichages: 14

JeanMarie

XLDnaute Barbatruc
Bonsoir Seb

Regarde le fichier joint, c'est une solution en formule.

@+Jean-Marie [file name=Courbe_temps.zip size=40985]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Courbe_temps.zip[/file]
 

Pièces jointes

  • Courbe_temps.zip
    40 KB · Affichages: 17

porcinet82

XLDnaute Barbatruc
Salut Seb, JeanMarie,

Je veins de regarder le fichier de JeanMarie et décidément ces formules me font vraiment peur :eek: et je me dis qu'un jour faudrait que je m'y mette, mais c'est pas gagné :sick:

Sinon Seb, regarde le fichier joint, va voir dans la macro, je t'ai commenté le code, et tu trouveras ainsi les reponses a tes 2 premières questions.
Pour la 3eme, ce que tu veux, c'est garder seulement une ligne sur 5? Si c'est ca, utilise la macro suivante et ca devrait le faire :
Code:
Sub supr_lig()
Dim i As Integer, x As Byte

Application.Goto Sheets('PART 5').Range('A1')
For i = Range('A65536').End(xlUp).Row - 1 To 2 Step -1
    x = x + 1
    If x = 4 Then
        x = 0
    Else
        Rows(i).Delete
    End If
Next i
End Sub

Tiens nous au courant si tu as d'autres soucis.

@+
 
S

Seb

Guest
Bonsoir à tous les 2 et merci pour votre réactivité et vos propositions !!!
:)

Jean-Marie: Ta proposition est intéressante, elle 'marque' le temps à chaque début de signal '1', alors que je souhaite connaître à chaque début de signal le temps écoulé par rapport au début du précédent. Je vais néanmoins m'en inspirer pour faire ma fonction. ;)

Porcinet82: Je n'ai pas trouvé ton fichier joint (oubli ?) et j'ai le même problème (erreur d'exécution...) qu'avec la macro précédente. Peux-tu me joindre le dernier fichier ou tu me commentes le code que j'essaie de m'en dépatouiller STP ?

Merci beaucoup !
 

porcinet82

XLDnaute Barbatruc
Bonjour a tous,

Effectivement j'avais oublier le fichier, obliger de le refaire :angry:

[file name=Seb_v2.zip size=29796]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Seb_v2.zip[/file]

Tiens nous au courant.

@+
 

Pièces jointes

  • Seb_v2.zip
    29.1 KB · Affichages: 23

Statistiques des forums

Discussions
312 506
Messages
2 089 127
Membres
104 042
dernier inscrit
tropsy89