XL 2010 VBA - Sélection par base de temps

Twing83

XLDnaute Junior
Bonjour,

Voici mon petit problème du jour et que je ne sais pas du tout comment aborder.

J'ai un fichier XLS avec 3 colonnes contenant des données (Date, Num et FC) et j'aimerai dans une quatrième colonne (Résultat) mettre automatiquement un caractère (X par exemple) si la ligne répond à certaines conditions.
Mes conditions sont les suivantes :
- je renseigne dans une cellule la valeur de FC recherchée : fc
- je renseigne dans une cellule une base de temps en secondes : n
Je cherche donc à mettre un X pour chaque fc depuis la plus ancienne date à la plus récente au pas de n secondes (mes données réelles ne sont pas stricto-sensu au pas de 1s, il me faut donc récupérer la date la plus proche si lce n'est pas pile-poil n-1 + n).
En vous remerciant par avance.
 

Pièces jointes

  • Test.xlsx
    111.8 KB · Affichages: 5
Solution
Re,

Décidément quand ça veut pas, ça veut vraiment pas :mad:. Vais faire la sieste moi ! 😴.
Une dernière version qui accepte les durées supérieures à 60 secondes.
=SI(C8<>B$2;"";SI(MOD(ARRONDI(24*60*60*(A8-INDEX(A:A;EQUIV(B$2;C:C;0)));0);$B$4)=0;"X";""))

Twing83

XLDnaute Junior
Bonjour vgendron,

Merci pour cette proposition qui effectivement fonctionne très bien dans mon exemple de fichier, mais...(il y a toujours un mais, la vie serait tellement plus simple autrement... 😊 ).

Comme je le mentionne dans ma demande d'aide, je cherche la première valeur (la plus ancienne), et en partant de celle-ci toutes les valeurs suivantes avec le pas de temps renseigné en $B4.

Dans ta formule "=SI(ET(C8=$B$2;MOD(SECONDE(A8);$B$4)=0);"X";"")" on affecte un X à toutes les dates ayant 0 en unité des secondes, ce n'est pas exactement ce que je recherche.

Si ma date de début avait été par exemple 06/09/2021 11:55:09 l'occurence suivante que je souhaite marquer serait 06/09/2021 11:55:19 avec n =10 ou 06/09/2021 11:55:21 avec n =12.

Petite précision et non des moindres, ma base de temps (n) n'est pas limité à 60s, mes fichiers de données couvrent une période de 24H, je souhaite donc pouvoir marquer les échantillons toutes 1s à 3600s (de manière totalement libre donc...) suivant mon besoin de granularité...
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,
Si ma date de début avait été par exemple 06/09/2021 11:55:09 l'occurence suivante que je souhaite marquer serait 06/09/2021 11:55:19 avec n =10 ou 06/09/2021 11:55:21 avec n =12.

J'ai supprimé mon précédent message car la formule était fausse, essayez ce qui suit :

On change la fonction en D8 pour celle-ci :
=SI(C8<>B$2;"";SI(MOD(SECONDE(SI(C8<>B$2;"";A8-INDEX(A:A;EQUIV(B$2;C:C;0))));B$4)=0;"X";""))

Oubliez, c'est faux aussi. Voir ci-dessous version v2.
 
Dernière édition:

Twing83

XLDnaute Junior
Re,


J'ai supprimé mon précédent message car la formule était fausse, essayez ce qui suit :

On change la fonction en D8 pour celle-ci :
=SI(C8<>B$2;"";SI(MOD(SECONDE(SI(C8<>B$2;"";A8-INDEX(A:A;EQUIV(B$2;C:C;0))));B$4)=0;"X";""))
@mapomme,
Effectivement c'est mieux, ça corrige ce que j'ai reporté au #4.👍
Par contre ça ne fonctionne qu'avec un pas max de 60s mais pas au-delà...
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Décidément quand ça veut pas, ça veut vraiment pas :mad:. Vais faire la sieste moi ! 😴.
Une dernière version qui accepte les durées supérieures à 60 secondes.
=SI(C8<>B$2;"";SI(MOD(ARRONDI(24*60*60*(A8-INDEX(A:A;EQUIV(B$2;C:C;0)));0);$B$4)=0;"X";""))
 

Pièces jointes

  • Twing83- Intervalle- v2.xlsx
    173.8 KB · Affichages: 6
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 140
Membres
103 129
dernier inscrit
Atruc81500