[Excell] Réalisation d'un "compteur"

Résolu/Fermé
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011 - 14 mai 2011 à 19:20
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011 - 31 juil. 2011 à 13:25
Bonjour,

A l'aide d'une carte d'acquisition j'obtiens un signal binaire en fonction du temps. Celui-ci est constitué de 0 et de 1. Ces signaux, je peux les enregistrer en csv et faire une connexion avec un autre fichier excell. L'idée est que lorsque j'écrase mon fichier csv par un nouveau relevé, le second fichier excell recalcule tout. Ce n'est pas compliqué sauf sur un point:

J'aimerais, pour avoir la vitesse instantanée d'un tour, diviser 1 (1 tour) par le temps entre deux signaux au niveau 1 (de mon signal).

Rien de plus simple certes, sauf que lorsque que j'écrase mon premier fichier csv par le second, qui correspond a un autre essai , les signaux changent et mes 1 se déplacent.

Comment puis je faire pour pouvoir faire ce calcul automatiquement svp?

Je vous remercie de votre attention.

Cyberfuel


A voir également:

12 réponses

eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
14 mai 2011 à 21:14
Bonsoir,

Le 1er 1 en colonne B est en ligne :
=EQUIV(1;B1:B2000;0)
2nd 1 :
=EQUIV(1;B1:B2000;0)+EQUIV(1;DECALER(B1:B2000;D2;);0)

1er temps au format excel en colonne A :
INDEX(A1:A2000;EQUIV(1;B1:B2000;0))
2nd temps :
INDEX(A1:A2000;EQUIV(1;B1:B2000;0)+EQUIV(1;DECALER(B1:B2000;D2;);0))

Ta vitesse est donc de :
=1/(INDEX(A1:A2000;EQUIV(1;B1:B2000;0)+EQUIV(1;DECALER(B1:B2000;D2;);0))-INDEX(A1:A2000;EQUIV(1;B1:B2000;0)))

Si ça ne colle pas avec tes données tu peux déposer un classeur exemple sur cijoint.fr et coller le lien fourni ici.

eric
1
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
Modifié par eriiic le 15/05/2011 à 17:11
Re,

Tes dates sont en plus au format anglais mm/jj/aaaa ce qui rallonge encore les formules.
J'ai préféré te décomposer le calcul sur plusieurs cellules que tu puisses suivre la construction et éviter une formule trop longue..
Pour le calcul de vitesse j'ai supposé qu'il fallait fournir le temps en secondes.
http://www.cijoint.fr/cjlink.php?file=cj201105/cijlEdrpSW.xls

Si tu en as besoin souvent on peut envisager une fonction personnalisée en vba.
Soit pour convertir les temps, soit pour fournir la vitesse directement (ou les deux...)

eric

PS : la fonction personnalisée qui permet de convertir le temps en date excel :
Function convertT(temps As String) As Date
    Dim tt
    tt = Split(temps, " ")
    convertT = CDate(tt(0)) + CDate(Left(tt(1), 8)) + CDbl(Right(tt(1), 4)) / 86400 + (tt(2) = "PM") * 0.5
End Function
1
tontong Messages postés 2549 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 23 avril 2024 1 054
15 mai 2011 à 19:18
Je ne parvenais pas à un fonctionnement correct de la formule de conversion
=DATE(STXT(C2;7;4);STXT(C2;1;2);STXT(C2;4;2))+STXT(C2;12;12)+((DROITE(C2;2)="PM")*"12:00:00")
J'ai du remplacer le point par une virgule pour faire fonctionner (xl2003)
=DATE(STXT(C2;7;4);STXT(C2;1;2);STXT(C2;4;2))+SUBSTITUE(STXT(C2;12;12);".";",")+((DROITE(C2;2)="PM")*"12:00:00")
0
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011
15 mai 2011 à 00:42
Bin écoute je te remercie de m'avoir répondue. Je regardeça au plus tôt et je te tiens au jus.

Grand merci.

Cyberfuel
0
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011
15 mai 2011 à 10:29
Bonjour,

J'avoue que je n'arrive pas à obtenir ce que je veux. Je ne comprends pas très les fonctions mais ça m'a l'air bien faisable avec.

Je te joins le lien "cijoint.fr": http://www.cijoint.fr/cjlink.php?file=cj201105/cijEmTqHfb.xlsx

J'espère que tu pourra m'aider, la rotation moteur et le temps sont indiqués.

Je vais tenter avec une structure en "si".

Merci de ton aide.

Cyberfuel
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
15 mai 2011 à 12:44
C'est parce que tes dates sont au format texte et nécessitent une conversion.
Je verrais ça un peu plus tard si tu n'as pas eu de compléments, je suis occupé aujourd'hui...
eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011
15 mai 2011 à 12:50
Oui, c'est pourquoi j'ai fait une échelle de temps à partir de 0s et incrémenté de 17 hz à chaque fois.

Je planche sur le sujet. Je te remercie.

Bon dimanche

Cyberfuel
0
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011
15 mai 2011 à 22:04
D'abord, un énorme merci.

J'ai essayer de comprendre votre méthode, je crois avoir compris. Je l'ai appliqué au fichier suivant:
http://www.cijoint.fr/cjlink.php?file=cj201105/cijcadr9Pl.xlsx

J'ai appliqué votre méthode sur la première ligne (C9) et en remplaçant les dates par l'échelle de temps de la colonne (I).

Ensuite j'ai appliquer une fonction (SI) qui permet de garder le même calcul ou de l'incrémenter si la valeur en C= 1.

Ainsi, j'obtiens une vitesse constante sur un tour. Croyez vous que c'est juste?

Je vais appliquer cette méthode à un relever de vitesse connues voir si ça marche. Je vous tiendrez au courant.

Encore merci

Cyberfuel
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
Modifié par eriiic le 16/05/2011 à 23:07
Bonsoir,

Le pb que je vois sur ton tableau c'est que la vitesse est erronée sur les lignes qui justement servent à la calculer.
Et tu n'avais pas précisé qu'il n'y avait pas qu'un seul calcul de vitesse...

Je verrais plutôt ça à partir de la 2nd ligne :
en O :
=SI(LIGNE()<=P9;O9;LIGNE()-1+EQUIV(1;DECALER($C$1;LIGNE()-1;;$P$7-LIGNE()+1;);0))
en P :
=SI(LIGNE()<=P9;P9;O10+EQUIV(1;DECALER($C$1;O10;;$P$7-LIGNE()+1;);0))

Et pourquoi le 2nd 1 ne servirait pas comme 1er 1 à un autre calcul de vitesse ?

eric

http://www.cijoint.fr/cjlink.php?file=cj201105/cijAp76I50.zip
0
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011
17 mai 2011 à 11:08
Bonjour, je t'avoue que je suis un peut perdue.

Je reconnait que tu as raison, les lignes sur lesquels je veux calculer la vitesse sont fausses.

Effectivement je souhaite utiliser les deuxièmes 1 comme premiers 1 lors du calcul de vitesse suivant. Exemple:

A partir de la ligne 774, le premier 1 doit être celui de la ligne 774 et le deuxième celui de la ligne 817.

Je me penche sur ce point là d'ici peu.

En tout cas, gros merci pour le temps que tu passes dessus

Cyberfuel
0
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011
Modifié par Cyberfuel le 18/05/2011 à 10:22
Bonjour,

Je viens de plancher un petit peu sur mon bazar et je crois que je tiens le bon bout!

J'ai gardé une grosse partie des fonctions que a entré, j'ai modifié le Si est j'arrive a avoir une vitesse aux lignes incrémentées d'un 1 et celles entre deux 1.

De la ligne 0 jusqu'à la 773 ça ne marche mais c'est normal puisque ma carte d'acquisition n'a encore rien détectée!

Voici le fichier modifié: http://www.cijoint.fr/cjlink.php?file=cj201105/cijLveKc8N.zip

Par contre je ne comprends pas trop le rôle de la dernière ligne (ce que tu as rentré en P7) tu peux m'éclairer stp?

Encore une fois, grand merci

Cyberfuel
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
18 mai 2011 à 12:21
Bonjour,

Réutiliser le 2nd 1 simplifie les les formules.
Bien vu pour O10, en P9 je mettrais :
=O9+EQUIV(1;DECALER($C$1;O9;;$P$7-O9;);0)

$P$7 sert à effectuer la recherche jusqu'à la dernière ligne utilisée.
C'était difficile d'utiliser une valeur fixe comme 30000 car en dernière ligne ça faisait 30000+30000, on s'approchait trop de la dernière ligne utilisable sur excel 2003 (65536 lignes).
Si tu connais le nombre maxi de données et l'intervale maxi entre deux 1 tu peux remplacer $P$7-O9 (hauteur de la plage de recherche) par une valeur fixe.

eric
0
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011
20 mai 2011 à 13:02
Super,

Bin pour l'instant c'est ce que je veux, je validerai le modèle par un essai dès que je suis de retour de chez moi.

Dans tout les cas je te tiendrai au courant.

Et encore grand merci.

Cyberfuel
0
Cyberfuel Messages postés 12 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 1 août 2011
31 juil. 2011 à 13:25
Bonjour,

Désolé de ne revenir sur ce post que maintenant mais j'ai eu pas mal de soucis "hardware" pour mon banc d'essaie.

D'abord merci a toi, éric, tu m'as bien aidé.

Tout marche (presque) j'ai simplement un souci avec le traitement de mon compte tour. Le tambour sur lequel est fixé l'aimant change de sens de rotation, le problème c'est qu'à ce moment là, l'aimant repasse devant le capteur sans que le tambour ai fait un tour complet et donc j'ai un pic au niveau de ma vitesse. Je vais chercher comment faire appliquer un filtre à ma colonne pour ignorer les valeurs supérieures à une vitesse données.

Merci

Cyberfuel

(Dès que c'est nickel je t'enverrai le résultat pour que tu vois bien l'ensemble)
0