Excel - Ignorer une cellule déjà utilisée
Résolu
LD1
Messages postés
56
Date d'inscription
Statut
Membre
Dernière intervention
-
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
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 !
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:
- Excel - Ignorer une cellule déjà utilisée
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Déplacer une colonne excel - Guide
4 réponses
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,
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,
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+
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+
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...
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...
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+
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+
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 ;)
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 ;)
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 !
ç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 !
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 ;)
Désolé pour ce petit casse-tête ;)
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 !
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 !