Nombre d'évènements "A" compris entre deux évènements "B"
loutre
-
-NoeGo- Messages postés 55 Statut Membre -
-NoeGo- Messages postés 55 Statut Membre -
Bonjour,
je réalise une étude comportementale. Parmi une liste de comportements (mettons A jusqu'à E) répertoriés au cours de X observations, je cherche à calculer une moyenne du nombre d'évènements "A" compris entre deux évènements "B" pour chaque observation x.
J'ai pensé à utiliser la fonction SOMMEPROD mais je me débat depuis plusieurs jours avec Excel sans parvenir à trouver une solution.
auriez-vous une idée de formule ?
Merci d'avance !
je réalise une étude comportementale. Parmi une liste de comportements (mettons A jusqu'à E) répertoriés au cours de X observations, je cherche à calculer une moyenne du nombre d'évènements "A" compris entre deux évènements "B" pour chaque observation x.
J'ai pensé à utiliser la fonction SOMMEPROD mais je me débat depuis plusieurs jours avec Excel sans parvenir à trouver une solution.
auriez-vous une idée de formule ?
Merci d'avance !
A voir également:
- Nombre d'évènements "A" compris entre deux évènements "B"
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Supprimer une conversation messenger pour les deux personnes ✓ - Forum Facebook
- I deux point - Forum Windows
4 réponses
Bonjour,
Est-il possible d'avoir le fichier ? Parce que je n'arrive pas trop à voir ce que vous souhaitez.
Vous pouvez, le partager avec ce site : https://www.cjoint.com/
Bonne journée,
-NoeGo-
Est-il possible d'avoir le fichier ? Parce que je n'arrive pas trop à voir ce que vous souhaitez.
Vous pouvez, le partager avec ce site : https://www.cjoint.com/
Bonne journée,
-NoeGo-
bonjour NoeGoe,
voici un document simplifié : j'ai juste extrait les colonnes qui m 'intéressent pour ce pb en particulier (le document de base est tres volumineux et comprend plus de 1400000 lignes)
http://www.cjoint.com/c/GBhjPMrRmvY
voici un document simplifié : j'ai juste extrait les colonnes qui m 'intéressent pour ce pb en particulier (le document de base est tres volumineux et comprend plus de 1400000 lignes)
http://www.cjoint.com/c/GBhjPMrRmvY
Voici une solution.
J'ai créer une macro pour le calcul parce que je ne vois pas comment faire avec des formules classiques...
N'hésites pas si tu as des questions sur la macro, j'ai essayer de la commenter au maximum.
Voici le lien vers le fichier :
https://www.cjoint.com/c/GBhlRJpOCwP
Et le code :
J'ai créer une macro pour le calcul parce que je ne vois pas comment faire avec des formules classiques...
N'hésites pas si tu as des questions sur la macro, j'ai essayer de la commenter au maximum.
Voici le lien vers le fichier :
https://www.cjoint.com/c/GBhlRJpOCwP
Et le code :
Option Explicit
Function MoyenneXEntreDeuxY(CelluleX As Range, CelluleY As Range, Plage As Range) As Double
'Moyenne du nombre de X entre deux Y
Application.Volatile 'Recalcule à chaque modification du fichier la valeur de la fonction
Dim Cellule As Range
Dim CptX As Long
Dim NbX As Long
Dim NbY As Long
Dim i As Integer
Dim Colonne As Integer
NbX = 0 'Initialisation du nombre de X à 0
NbY = 0 'Initiatisation du nombre de Y à 0
If Plage.Columns.Count <> 1 Then 'Verification que la plage de recherche ne contient qu'une colonne
MsgBox "Erreur : la plage ne peut contenir qu'une colonne"
MoyenneXEntreDeuxY = 0
Else
Colonne = Plage.Column 'Recupération de la colonne de la sélection
For Each Cellule In Plage
If Cellule.Value = CelluleY.Value Then 'Si on a une cellule Y, alors on compte le nombre de X qu il y a avant le prochain Y
i = 1
If Cellule.Row + i > Plage.Row + Plage.Rows.Count - 1 Then 'Verification que lon ne depasse pas la selection
Else
CptX = 0 'Initialisation du compteur de X
While Cells(Cellule.Row + i, Colonne).Value <> CelluleY.Value And Cellule.Row + i <= Plage.Row + Plage.Rows.Count - 1 'tant quon ne trouve pas un autre Y et quon est toujours dans la plage de recherche
If Cells(Cellule.Row + i, Colonne).Value = CelluleX.Value Then 'Si cest un X alors on le compte
CptX = CptX + 1
End If
i = i + 1 'ajout de 1 dans i pour parcourir les cellules apres le Y
Wend
NbX = NbX + CptX 'On ajoute le nombre de X compté dans le total
NbY = NbY + 1 'On indique quon a encore un Y
End If
End If
Next Cellule
MoyenneXEntreDeuxY = NbX / NbY 'Calcul de la moyenne
End If
End Function
Merci beaucoup d'avoir pris le temps de réaliser cette macro !
Je t'avoue que je ne sais pas les utiliser... je suppose qu'il me suffit juste de copier ce code dans la section appropriée dans Excel et de juste compléter les plages concernées ?
En tous cas si j'arrive à la faire fonctionner c'est génial merci beaucoup ! :)
Je t'avoue que je ne sais pas les utiliser... je suppose qu'il me suffit juste de copier ce code dans la section appropriée dans Excel et de juste compléter les plages concernées ?
En tous cas si j'arrive à la faire fonctionner c'est génial merci beaucoup ! :)
Bonsoir,
Désolé je n'ai pas eu le temps de revenir ici avant.
Pour utiliser la macro, le plus simple est de prendre le fichier que j'ai envoyé dans mon précédent message et de copier tes données dans ce fichier pour utiliser la macro. Après, tu as juste à utiliser la fonction MoyenneXEntreDeuxY et indiquer les paramètres que j'ai indiqué dans le fichier.
Si tu ne peux pas copier tes données dans mon fichier, alors il faudrait en effet copier le code de la macro. Pour cela, il faut passer par l'onglet developpeur (a rendre visible dans les options Excel si tu ne l'a pas dans le rubal), choisir l'option visual basic (la première la plus a gauche) puis créer un module et copier le texte dans le module créé.
N'hésite pas a rechercher des tutos, c'est assez simple, mais mon explication est succincte et sans illustrations...
Bonne soirée,
-NoeGo-
Désolé je n'ai pas eu le temps de revenir ici avant.
Pour utiliser la macro, le plus simple est de prendre le fichier que j'ai envoyé dans mon précédent message et de copier tes données dans ce fichier pour utiliser la macro. Après, tu as juste à utiliser la fonction MoyenneXEntreDeuxY et indiquer les paramètres que j'ai indiqué dans le fichier.
Si tu ne peux pas copier tes données dans mon fichier, alors il faudrait en effet copier le code de la macro. Pour cela, il faut passer par l'onglet developpeur (a rendre visible dans les options Excel si tu ne l'a pas dans le rubal), choisir l'option visual basic (la première la plus a gauche) puis créer un module et copier le texte dans le module créé.
N'hésite pas a rechercher des tutos, c'est assez simple, mais mon explication est succincte et sans illustrations...
Bonne soirée,
-NoeGo-
Bonjour,
J'ai pensé à utiliser la fonction SOMMEPROD
Avec tes codes 'OBSNR' à partir de F2 et cette formule, cela ne te donne pas ce que tu cherches ?
En tout cas les résultats sont assez similaires à la macro parfaite de -NoeGo- (salut à toi)
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
J'ai pensé à utiliser la fonction SOMMEPROD
Avec tes codes 'OBSNR' à partir de F2 et cette formule, cela ne te donne pas ce que tu cherches ?
=SOMMEPROD((C:C=F2)*(D:D="A"))/SOMMEPROD((C:C=F2)*(D:D="B"))
En tout cas les résultats sont assez similaires à la macro parfaite de -NoeGo- (salut à toi)
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry