Excel - Ignorer une cellule déjà utilisée

Résolu/Fermé
LD1 Messages postés 56 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 septembre 2011 - Modifié par LD1 le 31/08/2011 à 14:10
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 2 sept. 2011 à 02:17
Bonjour,

Voici mon problème, que je vais tenter d'expliquer le plus simplement possible, en m'appuyant sur un exemple fourni ici :

http://www.cijoint.fr/cjlink.php?file=cj201108/cijY5Gvx5X.xls

Sur cette feuille de calcul, j'ai 3 colonnes initiales correspondant à 3 séries de données :

- le temps (en ms)
- la présence ou l'absence d'un évènement A (en 0 ou 1)
- la présence ou l'absence d'un évènement B (en 0 ou 1)

Je voudrais calculer le nombre de fois où l'évènement A est provoqué par l'évènement B dans un laps de temps de 500 ms après ce dernier.

Jusque là, pas de problème, sauf que si un deuxième évènement B intervient avant un évènement A donné, je voudrais ne pas compter une deuxième fois ce dernier (case rouge sur l'exemple).

J'ai exploré une première piste de solution (colonne 5 et 6 sur l'exemple), qui consiste à retrancher 1 si un tel cas se produit, ce qui me permet d'obtenir un résultat corrigé. Mais finalement, cela s'avère être un échec, dans la mesure où cela parasite les résultats ultérieurs (la deuxième cellule coloriée en vert entraîne un -1, alors qu'elle est valide et doit être comptée).

En gros, la solution que j'imagine, mais que je ne parviens pas à mettre en oeuvre, serait de "marquer" une cellule utilisée (disons dans la deuxième colonne), de façon à l'ignorer dans les calculs ultérieurs... Est-ce que ça vous semble possible ?

Merci d'avance et n'hésitez pas si vous avez besoin de précisions !


A voir également:

4 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 31/08/2011 à 16:24
Bonjour,

Je propose une solution ici :

http://www.cijoint.fr/cjlink.php?file=cj201108/cijK6xjPn0.xls

Le principe est le suivant en colonne H il y a le moment d'apparition du dernier événement A.
En colonne I on teste si il y a un événement B et si il est dans les 500 ms para rapport au dernier A. Si les conditions sont respectées on note le moment d'apparition du A correspondant.

Ainsi en bas il suffit de compter le nombre de valeurs distinctes obtenues par la formule :
=SOMME((FREQUENCE(I2:I69;I2:I69)>0)*1)

Voila. Il y a peut-être plus simple.

A+


Cordialement,
1
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
31 août 2011 à 18:51
Pas de problème, j'aime bien les casse tête....

Voila j'ai inversé les formules dans le même esprit donc je crois que c'est mieux maintenant et le résultat est bien 2...

http://www.cijoint.fr/cjlink.php?file=cj201108/cij9G3z1fn.xls


A+

1
LD1 Messages postés 56 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 septembre 2011
31 août 2011 à 20:47
Désolé, je vais encore essayer de profiter de votre goût pour les casse-tête ;) , et de votre patience !

Je pense que ça s'approche (et j'étais même persuadé que mon problème était résolu), mais malheureusement, j'ai encore trouvé un problème (signalé par la couleur orange en bas de la feuille) :

http://www.cijoint.fr/cjlink.php?file=cj201108/cijvIQeCkA.xls

En fait, si un évènement A fait suite à un évènement B, pas de problème. Mais si on a une suite B-A-B-A qui se produit en moins de 500 ms, le résultat donne 2 alors qu'il devrait donner 1. C'est assez bizarre, car au vu de la formule, il devrait ne pas reporter la dernière valeur de temps ("1325", en rouge), puisque le dernier évènement était reporté à 1225...
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
1 sept. 2011 à 10:49
Bonjour,

je me replonge dans le problème.
Si je comprends bien il faut donc que deux évènements B soient séparés d'au moins 500 ms pour que le second soit considéré.

Cela veut dire qu'effectivement l'évènement B de la ligne 67 (au temps 1325) ne doit pas compter. Soit.
Mais alors également le B de la ligne 38 (au temps 745) et celui de la ligne 46 (au temps 905) ne comptent pas non plus car ils sont à moins de 500 ms du B de la ligne 28 (au temps 545) ?

A moins que cela dépende de la présence d'un évènement A entre les deux ?

Je suis un peu perdu... Mais j'ai bon espoir, nous allons y arriver c'est juste un soucis de clarification des conditions...

A+
0
LD1 Messages postés 56 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 septembre 2011
1 sept. 2011 à 12:06
Bonjour,

Désolé de mon temps de réponse, mais j'étais en réunion.
Je vais tenter de clarifier les conditions :

Si j'ai un évènement B, je veux savoir s'il y a au moins un évènement A dans un délai de 500 ms après l'évènement B. Donc Pour l'évènement B en D28, j'ai un évènement A en B41 et en B51. Je cherche ici à obtenir 1.
Là où ça se complique, c'est que l'évènement B en C38 est suivi par l'évènement A en B41, mais qui était déjà inclus dans les 500 ms après l'évènement B en D28. Donc celui-ci ne doit pas être compté (d'où ma question initiale qui cherchait à exclure d'un calcul une cellule déjà utilisée).
Et pour en rajouter une couche, l'évènement B en C46 est suivi de 3 évènements A dans les 500 ms qui suivent (en B51, B66 et B68). Donc, tous les évènements B après C46 ne doivent pas comptés, car les évènements A jusqu'à la fin sont déjà "utilisés" par l'évènement B de C46.

Voilà, j'espère que c'est plus clair ;)
0
LD1 Messages postés 56 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 septembre 2011
31 août 2011 à 17:58
Merci beaucoup !!

ça me paraît très proche de ce que je souhaite, et c'est un immense pas en avant, moi qui était bloqué depuis un moment par ce problème !

Par contre, je crois que le problème est pris à l'envers (cf nouveau fichier, où la case bleue entraîne un +1 dans le résultat alors qu'il n'y a pas d'évènement A après l'évènement B ajouté en C62)

http://www.cijoint.fr/cjlink.php?file=cj201108/cijDeMOzo1.xls

Je pense qu'il faudrait "inverser" la colonne H, mais je ne sais pas si je vais parvenir à respecter la logique de cette solution... Pouvez-vous me donner un nouveau coup de pouce ?

Merci encore en tout cas !
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 31/08/2011 à 18:34
Oui, j'avais compris à l'envers. J'ai calculé les évènements B se produisant après les A.
Mais dans l'exemple on est bien d'accord que le temps est croissant.
Donc l'évènement A de la ligne 26 se produit avant le B de la ligne 28 ? donc il ne compte pas
0
LD1 Messages postés 56 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 septembre 2011
Modifié par LD1 le 31/08/2011 à 18:40
Oui le temps est bien croissant, donc effectivement l'évènement A de la ligne 26 ne compte pas, puisque aucun évènement B ne s'est produit avant. En revanche, l'évènement B de la ligne 28 est bien suivi d'un évènement A (ligne 41), et ce, moins de 500 ms après l'évènement B.

Désolé pour ce petit casse-tête ;)
0
LD1 Messages postés 56 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 septembre 2011
1 sept. 2011 à 19:42
Re-bonjour,

Après mûr examen et en réfléchissant de nouveau à mon analyse, il apparaît que la solution que vous me proposiez est en fait la bonne !
En fait de nombreux cas limites dans l'ensemble de mes données m'ont amené à trancher, et je vais finalement retenir votre méthode de calcul...

Donc merci beaucoup pour le coup de main et à bientôt !
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
2 sept. 2011 à 02:17
Bonsoir,

J'avais pas eu encore le temps de réfléchir à votre dernière objection.
Heureux d'avoir pu vous aider.

A bientôt peut-être sur un autre fil
0