Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Zone de liste déroulante, récupération de données via le result de

19 réponses
Avatar
rododuc
Bonjour,

j'ai un tableau à deux colonnes:
Heures | Visiteurs
00h | 41000
01h | 45000
...

J'ai fait deux zone de liste déroulantes, heure début et heure de fin.
Les listes se basent sur les heures et je voudrais soit par une macro (click
bouton) ou directement via une formule récupérer la sommes de visiteurs de
par exemple 00h à 01h... Mais j'avoue ne pas y arriver.
Auriez-vous des infos ?

thx

10 réponses

1 2
Avatar
FdeCourt
Salut,

En supposant que tu as 4 plages nommées :
- visiteurs : colonne dans laquelle tu as ton nombre de visiteurs
- heures : colonne dans laquelle tu as les heures
- de : correspond à la cellule dans laquelle tu fais le choix de
l'heure de début
- a : correspond à la cellule dans laquelle tu fais le choix de
l'heure de fin

Tu peux utiliser la formule suivante :

=SOMMEPROD((visiteurs)*(heures>Þ)*(heures<=a))

Attention, sont incluses les heures de début et de fin

Cordialement,

F.
Avatar
FFO
Salut à toi
Les listes déroulantes sont en D2 et E2
Les Heures en colonne A
Les Visiteurs en colonne B
Dans le code de ton bouton de la feuille concernée mets ces lignes de code :


Début = Columns("A:A").Find(What:=Range("D2"), After:=Range("A1"),
LookIn:=xlValues, LookAt:=xlWhole).Row
Fin = Columns("A:A").Find(What:=Range("E2"), After:=Range("A1"),
LookIn:=xlValues, LookAt:=xlWhole).Row
MsgBox (Range("B" & Fin) - Range("B" & Début))

Le résultat (nombre de visiteurs dans le temps déterminé) est donné dans une
boîte de dialogue

Pour affecter d'autres cellules aux listes déroulantes modifies :

Range("D2") pour l'heure de début
Range("E2") pour l'heure de fin

Idem pour les données Heures et visiteurs avec :

Range("A1") pour les Heures
Range("B" & Fin) pour les Visiteurs
Range("B" & Début) pour les Visiteurs
Celà devrait convenir

Dis moi !!!!!
Avatar
rododuc
Salut

Et merci.
Ca marche pas mal en bidouillant un peu je m'explique.
Ma "zone de liste" (provenant du crontrol de formulaire dans l'onglet
développeur) me renvoie dans "cellule liée" des chiffres 1 à 24.
J'ai donc fait un truc du genre ="0"&G17-1&"h" pour que dans ta formule çà
match avec ma colonne heure.
Par contre dès que je sélectionne de 22h à 02h... çà ne fonctionne plus.
Je peux donc l'utiliser mais uniquement sur une plage de même journée.

Cordialement.

"FdeCourt" wrote:

Salut,

En supposant que tu as 4 plages nommées :
- visiteurs : colonne dans laquelle tu as ton nombre de visiteurs
- heures : colonne dans laquelle tu as les heures
- de : correspond à la cellule dans laquelle tu fais le choix de
l'heure de début
- a : correspond à la cellule dans laquelle tu fais le choix de
l'heure de fin

Tu peux utiliser la formule suivante :

=SOMMEPROD((visiteurs)*(heures>Þ)*(heures<=a))

Attention, sont incluses les heures de début et de fin

Cordialement,

F.
.



Avatar
rododuc
Salut,

Je ne comprend le "les listes déroulantes sont en D2 et E2" ?
En fait j'ai du mal m'exprimer.
J'ai quatre colonnes :
A|B|C|D
Heures |Visiteurs |Uniques |Pages Vues |Visites
00h |1 |176961 |109279
01h |2 |79856 |49855
02h |3 |43851 |27362
03h |4 |36447 |21623
04h |5 |44491 |25346
...

J'ai utilisé dans l'onglet développeur, insérer l'objet zone de liste avec
comme option : contrôle plage d'entrée la plage entière A, cellules liées F17
(pour heure de début).
Mon autre zone de liste : option contrôle plage d'entrée la plage entière
AB, cellules liées G17 (pour heure de fin).
Et j'ai placé un bouton mais j'avoue ne pas comprendre ton code VB...


Cordialement.



"FFO" wrote:

Salut à toi
Les listes déroulantes sont en D2 et E2
Les Heures en colonne A
Les Visiteurs en colonne B
Dans le code de ton bouton de la feuille concernée mets ces lignes de code :


Début = Columns("A:A").Find(What:=Range("D2"), After:=Range("A1"),
LookIn:=xlValues, LookAt:=xlWhole).Row
Fin = Columns("A:A").Find(What:=Range("E2"), After:=Range("A1"),
LookIn:=xlValues, LookAt:=xlWhole).Row
MsgBox (Range("B" & Fin) - Range("B" & Début))

Le résultat (nombre de visiteurs dans le temps déterminé) est donné dans une
boîte de dialogue

Pour affecter d'autres cellules aux listes déroulantes modifies :

Range("D2") pour l'heure de début
Range("E2") pour l'heure de fin

Idem pour les données Heures et visiteurs avec :

Range("A1") pour les Heures
Range("B" & Fin) pour les Visiteurs
Range("B" & Début) pour les Visiteurs
Celà devrait convenir

Dis moi !!!!!




Avatar
rododuc
Sub Bouton26_Clic()

Début = Columns("A:A").Find(What:=Range("I17"), After:=Range("A5"),
LookIn:=xlValues, LookAt:=xlWhole).Row
Fin = Columns("A:A").Find(What:=Range("J17"), After:=Range("A5"),
LookIn:=xlValues, LookAt:=xlWhole).Row
MsgBox (Range("B" & Fin) - Range("B" & Début))

End Sub

J'ai mis le code mais pleins d'erreurs ...

"rododuc" wrote:

Salut,

Je ne comprend le "les listes déroulantes sont en D2 et E2" ?
En fait j'ai du mal m'exprimer.
J'ai quatre colonnes :
A|B|C|D
Heures |Visiteurs |Uniques |Pages Vues |Visites
00h |1 |176961 |109279
01h |2 |79856 |49855
02h |3 |43851 |27362
03h |4 |36447 |21623
04h |5 |44491 |25346
...

J'ai utilisé dans l'onglet développeur, insérer l'objet zone de liste avec
comme option : contrôle plage d'entrée la plage entière A, cellules liées F17
(pour heure de début).
Mon autre zone de liste : option contrôle plage d'entrée la plage entière
AB, cellules liées G17 (pour heure de fin).
Et j'ai placé un bouton mais j'avoue ne pas comprendre ton code VB...


Cordialement.



"FFO" wrote:

> Salut à toi
> Les listes déroulantes sont en D2 et E2
> Les Heures en colonne A
> Les Visiteurs en colonne B
> Dans le code de ton bouton de la feuille concernée mets ces lignes de code :
>
>
> Début = Columns("A:A").Find(What:=Range("D2"), After:=Range("A1"),
> LookIn:=xlValues, LookAt:=xlWhole).Row
> Fin = Columns("A:A").Find(What:=Range("E2"), After:=Range("A1"),
> LookIn:=xlValues, LookAt:=xlWhole).Row
> MsgBox (Range("B" & Fin) - Range("B" & Début))
>
> Le résultat (nombre de visiteurs dans le temps déterminé) est donné dans une
> boîte de dialogue
>
> Pour affecter d'autres cellules aux listes déroulantes modifies :
>
> Range("D2") pour l'heure de début
> Range("E2") pour l'heure de fin
>
> Idem pour les données Heures et visiteurs avec :
>
> Range("A1") pour les Heures
> Range("B" & Fin) pour les Visiteurs
> Range("B" & Début) pour les Visiteurs
> Celà devrait convenir
>
> Dis moi !!!!!
>
>


Avatar
FdeCourt
Je crois que ton problème n'est pas très clair.
Qu'est ce que tu souhaites faire exactement ?
Connaitre le nombre de visiteurs entre deux heures, quelle que soit la
journées : tous les visiteurs qui sont passé entre 10:00 et 12:00
depuis X jours ?
Cordialement
F.
Avatar
FdeCourt
Hello,

Essayes avec cette formule (elle doit pouvoir être simplifiée, mais en
l'état elle devrait fonctionner) :

=SI(de>a;SOMMEPROD((visiteurs)*N(heures>Þ)+(visiteurs)*N
(heures<=a));SOMMEPROD((visiteurs)*(heures>Þ)*(heures<=a)))

Cordialement,

F.
Avatar
rododuc
Bonjour,

Oui de 10h à 12h mais potentiellement de 22h à 02h...
Le cas 22h à 02h ne fonctionnement mais tu m'as déjà pas mal aidé !!!


Cordialement.

"FdeCourt" wrote:

Je crois que ton problème n'est pas très clair.
Qu'est ce que tu souhaites faire exactement ?
Connaitre le nombre de visiteurs entre deux heures, quelle que soit la
journées : tous les visiteurs qui sont passé entre 10:00 et 12:00
depuis X jours ?
Cordialement
F.
.



Avatar
FdeCourt
Alors c'est étrange, la deuxième formule ne fonctionne pas non plus ?
Parce que je vois deux possibilités dans ton cas :
Ce qui est supérieur à 10:00 et inférieur à 12:00 (première formu le
qui fonctionne)
Ce qui est supérieur à 22:00 et inférieur à 02:00, dans ce cas, la
deuxième formule est censée fonctionner.
Est-ce que tu peux vérifier, quand tu affiche la colonne avec les
heures avec un format numérique (sur toute la colonne > Bouton de
droite, format et la tu choisis numérique) tu as bien que des valeurs
inférieur à 1 (genre 0,18, etc....)

Cordialement,

F.
Avatar
FdeCourt
Si les valeurs des heures ne sont pas toujours inférieures à 1,
essayes avec cette formule :
=SI(de>a;SOMMEPROD((visiteurs)*N(heures2>Þ)+(visiteurs)*N
(heures2<=a));SOMMEPROD((visiteurs)*(heures2>Þ)*(heures2<=a)))

J'ai ajouté un nom "heures2" qui a comme formule : =TEMPS(HEURE
(heures);MINUTE(heures);SECONDE(heures))

Cordialement,

F.
1 2