Extraction conditionnelle un peu compliquée

Y compris Power BI, Power Query et toute autre question en lien avec Excel
N
Nad-Dan
Passionné d'Excel
Passionné d'Excel
Messages : 7'305
Inscrit le : 27 avril 2007
Version d'Excel : 2003 FR-2007 FR-MAC 2004 FR

Message par Nad-Dan » 5 juin 2009, 15:55

Bonjour

Avec l'aide de Dan, j'ai converti les formules dans des macros.

Peux-tu tester si c'est suffisant ?
Tu entres une valeur en G1 et tu valides.

Fichier

Amicalement
Nad
A
Anthax
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 1 juin 2009
Version d'Excel : 2007 EN

Message par Anthax » 5 juin 2009, 17:15

Bonjour la France ! Quel temps fait-il à Souston ? (Souston... ah... mon enfance !)

Mon fichier complet original fait 220 000 lignes ! Il m'a fallu laisser l'ordi tourner toute la nuit pour faire les calculs pour les intervalles de 4h. Ce soir, je lance les 2H... Demain, les 1H ! On verra si j'ai besoin de 0,5 heures et de 3H !!!

En tout cas, je me répète peut-être, mais merci de ton soutien !
Amicalement,
Anthax
d
dubois
Passionné d'Excel
Passionné d'Excel
Messages : 9'273
Inscrit le : 8 décembre 2007
Version d'Excel : Vista Office 2007FR

Message par dubois » 5 juin 2009, 18:34

Bonjour à tous,
Bonjour Nad,

https://www.excel-pratique.com/~files/do ... t_Pair.xls

En reprenant le fichier du début, je filtre les heures pair,
si çà peut déjà simplifier les formules et alléger ?
on peut ajouter d'autres critères de filtre.
Amicalement
Claude.
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
N
Nad-Dan
Passionné d'Excel
Passionné d'Excel
Messages : 7'305
Inscrit le : 27 avril 2007
Version d'Excel : 2003 FR-2007 FR-MAC 2004 FR

Message par Nad-Dan » 5 juin 2009, 20:16

Bonsoir Claude

Merci de ton aide.
Peux-tu essayer de remplacer dans la macro le SUMPRODUCT ?
Je t'explique la demande d'Anthax :

1 - On vérifie que les cellules de la colonne D2:D dernière ligne sont divisible par G1 (partie MOD de la macro qui fonctionne très bien) - Si réponse = NON, alors la cellule colonne G prend valeur 0

2 - Si réponse = OUI, on calcule :

Plage colonne A=A2 ET (Plage colonne B+Plage colonne C (concatenation de la date et de l'heure)= B2+C2+la valeur en heure de G1) (exemple, valeur de G1 égal 2 doit retourner "02:00")
........................................................................................................................................................OU B2+C2-la valeur en heure de G1)

Si la réponse est VRAI, alors la cellule colonne G prend valeur 1 - Autrement, valeur 0

Autre façon d'expliquer la partie SOMMEPROD :
Si pour le même numéro en colonne A, l'intervalle Date+Heure est égal à G1 alors 1

L'intervalle vaut pour avant et après la Date+Heure recherchée.

Voilà, je pense que si on peut éviter le SOMMEPROD on gagnerait en rapidité d'exécution.

Si tu veux bien essayer ... Bien sûr cela vaut pour tous nos amis VBAïste

Amicalement
Nad
d
dubois
Passionné d'Excel
Passionné d'Excel
Messages : 9'273
Inscrit le : 8 décembre 2007
Version d'Excel : Vista Office 2007FR

Message par dubois » 5 juin 2009, 20:50

re,

Nad, je suis un peu largué, d'autant que je n'ai pas tout suivi, peux-tu écrire la formule,
j'essayerais de la mettre dans la macro.
C'est ce que tu veux ?
à+.....Claude.
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
N
Nad-Dan
Passionné d'Excel
Passionné d'Excel
Messages : 7'305
Inscrit le : 27 avril 2007
Version d'Excel : 2003 FR-2007 FR-MAC 2004 FR

Message par Nad-Dan » 5 juin 2009, 21:11

Re

Non Claude, la formule est déjà dans la macro (voir le dernier fichier que j'ai posté - Sub Divisible())), mais j'ai peur qu'elle ne ralentisse le code.

Ce qu'il faudrait, c'est justement la transformer en un code qui serait moins gourmand

Amicalement
Nad.
d
dubois
Passionné d'Excel
Passionné d'Excel
Messages : 9'273
Inscrit le : 8 décembre 2007
Version d'Excel : Vista Office 2007FR

Message par dubois » 5 juin 2009, 21:17

re,

Tu peux aussi mettre le résultat en dur (plus de formules dans le fichier)
en ajoutant cette ligne de code sous la formule :
        Else: .Offset(0, 3).FormulaR1C1 = "=IF(SUMPRODUCT((etc...
            .Offset(0, 3) = .Offset(0, 3) * 1
        End If
Claude.
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
N
Nad-Dan
Passionné d'Excel
Passionné d'Excel
Messages : 7'305
Inscrit le : 27 avril 2007
Version d'Excel : 2003 FR-2007 FR-MAC 2004 FR

Message par Nad-Dan » 5 juin 2009, 21:29

Merci Claude

Anthax, tu n'as plus qu'à essayer ce

Nouveau Fichier

et nous tenir au courant du temps de réponse.

Amicalement
Nad, Dan et Claude
A
Anthax
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 1 juin 2009
Version d'Excel : 2007 EN

Message par Anthax » 5 juin 2009, 21:50

Bon, je dois avouer que même moi qui suis à l'origine de ce post, j'ai du mal à suivre ! Lol !

Non, sérieusement : NAD fait un gros effort pour m'aider, et je lui en suis très reconnaissant...
Malheureusement, dans le dernier fichier que tu as posté, ça ne marche plus : la formule sort TOUS les points pour lesquels il existe une localisation X heures avant ou après... Or moi je ne veux que celles toutes les X heures à partir de minuit...

Donc l'avant-dernier fichier que tu as posté avec le commentaire "sans colonne intermédiaire" était mieux (sauf que la colonne intermédiaire me convenait bien !). Ainsi, on aurait :
- une colonne qui définit si l'horaire de la loc pourrait rentrer dans un planning "X heures" à partir de minuit ; (=If(MOD(...)=0,1,0)
- une colonne qui détermine TOUTES les localisations pour lesquels il existe une autre localisation X heures avant OU après ;
- et enfin une 3e colonne qui croise les données des deux premières colonnes (juste une multiplication) pour me sortir mes points.

Selon moi, c'est la meilleure façon de procéder... car ensuite selon les besoins de mon étude, je pourrais avoir à utiliser les valeur de la 2e colonne... peut-être !
Donc la formule qui est très lourde, c'est celle de la 2e colonne qui comporte plusieurs SUMPRODUCT et qui regarde dans 3 plages différentes (DeerUID, Date & Time) sur plus de 220 000 entrées !

Y'a un moyen de vous envoyer des photos afin de vous montrer les chevreuils, les loups et les pumas que je capture pour mon étude, histoire de vous montrer l'aspect génial qu'il peut y avoir derrière ces tableaux de données et ces formule indigestes ? 8)
A
Anthax
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 1 juin 2009
Version d'Excel : 2007 EN

Message par Anthax » 5 juin 2009, 22:02

Zut ! Le temps que j'écrive mon message, y'a eu d'autre posts !
Bon, je lis ça et je vous dis...
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message