Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 . 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 . 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…