[Excell] Réalisation d'un "compteur"
Résolu
Cyberfuel
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
Cyberfuel Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Cyberfuel Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
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 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:
- [Excell] Réalisation d'un "compteur"
- Compteur électrique - Guide
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
- Compteur contractions - Télécharger - Santé & Bien-être
- Trier un tableau excel - Guide
- Compteur point fléchette excel - Télécharger - Sport
12 réponses
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
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
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 :
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
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")
=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")
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
Grand merci.
Cyberfuel
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
Je planche sur le sujet. Je te remercie.
Bon dimanche
Cyberfuel
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
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
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
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
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
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
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
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
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
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
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
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
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)
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)