Rechercher valeur proche dans une autre feuil

Résolu/Fermé
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011 - Modifié par nicoco98 le 13/12/2010 à 16:11
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011 - 20 déc. 2010 à 16:43
Bonjour,

Cela fait un moment que je n'ai pas sollicité votre aide, mais de nouveau, j'aurais besoin d'un petit coup de pouce!!

Je vais essayer d'expliquer le plus clairement possible mon problème et ce que je souhaite obtenir... je vous joins un fichier exemple où cela devrait être encore plus clair... je l'espère!!

Dans le cadre de mon travail je suis l'évolution de la température dans une serre dite "passive" où l'on stock de la chaleur la journée... Plusieurs sondes acquièrent toutes les 10 minutes différentes températures au sein de la serre (dans le sol, au niveau des plantes etc.).

J'ai actuellement les données d'acquisition d'un hiver entier, soit plus de 20 000 valeurs pour chaque sonde... comprenez qu'à trier manuellement, c'est mission impossible!!

J'ai créé une première colonne où il y a le nombre de nombre théorique de mesure que je peux avoir par jour... une mesure toutes les 10 minutes, donc au maximum 144 valeurs par jour.

En A, on retrouve la date, et en B on retrouve l'heure.

Dans un 2ème onglet, j'ai mes mesures, triées sur le même principe (1 colonne jour et 1 autre heure), avec la température correspondante qui m'intéresse.

Problème: sur 10 sondes, la plupart vont faire mesure "décalées"...

Dans l'idéal, il y a une 1ère mesure qui démarre à 00:00 , puis une à 00:10, 00:20 et ainsi de suite...

Le problème c'est qu'il y a une sonde qui va démarrer à 00:02, une autre à 00:08 etc. et une autre va elle démarrer qu'à 15:04 car il y a eu un souci...

Je cherche donc à peaufiner ma formule (onglet "comparaison" colonne D), afin de pouvoir copier une valeur non pas exacte (cela arrivera très peu souvent), mais une valeur à plus ou moins 5 minutes.... Si elle existe! Si aucune de ces conditions, alors ne rien faire...

J'ai réussi à créer une formule matricielle qui marche si les heures coïncident exactement, mais je n'arrive pas à intégrer un intervalle permettant de rechercher une valeur à plus ou moins 5 minutes...

Je vous joins un fichier en exemple où cela sera sans doute plus clair... J'espère que vous pourrez m'aider!!

Je me « casse » la tête sur ce tri, car le but est de pouvoir par la suite créer un graphique où l'on sélectionne l'intervalle de dates que l'on veut étudier, afin de comparer les différentes sondes...

Merci beaucoup !

Cordialement

Nicolas


Fichier exemple: https://www.cjoint.com/?0mnqfTAiRQI




A voir également:

20 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
13 déc. 2010 à 16:20
Bonjour,
merci de mettre la pièce jointe au format XL 97-2003
dans cette attente
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 13/12/2010 à 16:29
Bonjour
essayez cette formule, qui n'est pas matricielle
=SOMMEPROD(('Sonde n°1'!$B$2:$B$1000=A2)*('Sonde n°1'!$C$2:$C$1000>B2-5/1440)*('Sonde n°1'!$C$2:$C$1000<B2+5/1440)*('Sonde n°1'!$D$2:$D$1000))

A noter qu'elle renvoie à en D2 feuille comparaison puisque la 1° valeur 15:00 de Sonde n°1 n'est pas dans la fourchette.

Elle ressort la valeur correspondante à la ligne situé dans la fourchette +/- 5mn par rapport à B2 .

Crdlmnt

A noter:
le code n'admet pas d'adresse de champ avec colonne seule (type A:A ou B:B mais exige des N° de ligne.
Aucune valeur alpha admise dans la colonne D

Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
13 déc. 2010 à 16:38
Bonjour,

@ Michel: je viens d'essayer d'envoyer une version excel 07-2003, mais le fichier est trop gros pour etre envoyé!!

Comment faire? Là il est au format .xlsm car je m'étais lancé dans des macros... sans succès d'ailleurs!! Et si je vous l'envoie en .xlsx? cela sera peut etre moins volumineux?

@ Vaucluse: Je teste ça de suite et vous tiens informé! Merci en tout cas!
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 13/12/2010 à 17:01
Bonjour Michel
Ici, si tout se passe bien le fichier en XLS
http://www.cijoint.fr/cjlink.php?file=cj201012/cij7Usf4PZ.xls

crdlmnt

Ps pour nicoco pour transcrire le fichier en 97-2003
logo microsoft, enregistrer sous et chosir dans le type Excel 97-2003

a+


Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
Modifié par nicoco98 le 13/12/2010 à 17:25
Re Vaucluse,

Votre formule marche.... presque parfaitement!!! Merci beaucoup!!

Premièrement, je viens de la tester en partie dans un autre fichier... et le calcul est super lent... je peux voir défiler le % de la progression en bas... alors que je ne l'ai appliqué que pour 1/2 mois!! Donc sur 6 mois et sur 10 sondes... ça risque de prendre vraiment du temps!!

Si y'a une solution tant mieux, sinon tampis, c'est pas genant il faudra juste être patient!! (ou suggérer à mon patron de remplacer nos PC... qui ne sont sans doute pas des plus performants non plus!!)

Sinon, le petit "bug" rencontré est le suivant: le 13 janvier à 00:00, il me marque 0 comme si il n'y avait pas de valeur correspondante... or il y a bien une mesure du 12 janvier à 23:59 ...

Mais bon... ça complique bcp les choses je pense car on change aussi de jour! moi la valeur me va, il y a 1 minute d'écart!! Mais je ne sais pas si c'est possible d'intégrer cela dans la formule magique!!

Néanmoins... cela m'aide déjà énormément!! merci beaucoup!!

edit: pour créer la version 97-2003, j'ai fait la même manip que vous avez indiqué!! ça a marché, mais après quand j'ai voulu "uploader" mon fichier sur le site "cijoint", celui-ci m'a dit que mon fichier était trop volumineux... enfin bon, votre lien marche c'est le principal! merci encore!
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
13 déc. 2010 à 18:31
Il y a des solutions puisqu'on peut intégrer dans la formule des conditions sur les valeurs à trouver, mais je crois que ce ne sera pas si facile de traiter votre fichier, sauf si vous admettez des valeurs 0 dans votre tableau d'édition.
En effet, la liste de Sonde n°1n'a pas un pas régulier de 10, ce qui entraîne un certain nombre de 0 dans la, liste éditée
par exemple entre ligne 140 et 141 où il passe une heure 10, ce qui fait que l'on ne trouve pas de valeur sur quelques lignes non incluses?

En ce qui concerne la valeur 0 en colonne B (minuit donc)
je conseille
de ne pas center la recherche sur +/-5 mn mais sur 0/+10, ça ne devrait pas changer grand chose
au résultat cherché
de considérer le total de la date + l'heure pour recadrer le minutage dans la bonne journée.
Ce qui donnerait:

=SOMMEPROD(('Sonde n°1'!$B$2:$B$50000+'Sonde n°1'!$C$2:$C$50000>A2+B2)*('Sonde n°1'!$B$2:$B$50000+'Sonde n°1'!$C$2:$C$50000<A2+B2+10/1440)*('Sonde n°1'!$D$2:$D$50000))

Mais je vous laisse tester complètement, je l'ai fait sur une 100 de lignes, ça à l'air de marcher

A noter que ceci n'exclut pas le fait que , quand le <pas est supérieur à 10 mn les valeurs 0 s'affichent.

Et en conclusions, celle ci n'ira surement pas plus vite que la précédente!%Mais la lenteur ne concerne à mon avis que la 1° mise en place du tableau, ça devrait aller plus vite une fois installé.

Bon courage. Bonne chance

Crdlmnt
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
13 déc. 2010 à 18:31
Pas eu trop le temps de regarder. au passage merci vaucluse d'avoir transmis en version XL old time

20000 lignes c'est trop pour des listes excel et surtout pour des sommeprod ou matricielles (sommeprod est une vraie-fausse matricielle): il faut utiliser les variables tableaux et encore, ton classeur est très lourd et donc tu risques une "corruption" --> refus d'ouverture. Maxi conseillé par Microsoft:15000lignes

Je regarde la formule de Vaucluse et tente de l'adapter!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 13/12/2010 à 19:38
c'est fait et c'est instantané sur les quelques 2000 lignes

mais...
comme par hasard, je n'ai pas sauvegardé avant de quitter !!! #@+!!&$

demain matin...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
13 déc. 2010 à 22:25
encore moi,

Vu les programmes télé ce soir...
Option Explicit
Option Base 1

Sub affecter_mesure()
Dim Derlig As Long, cptr As Long
Dim T_mesure, T_compare, T_sonde
Dim limite As Double

limite = 5 / 1440 '5 minutes
With Sheets("sonde n°1")
    Derlig = .Cells(.Cells.Rows.Count, 4).End(xlUp).Row
    'Derlig = 20 'test
    T_mesure = .Range("C2:D" & Derlig).Value
End With
T_compare = Application.Transpose(Sheets("comparaison").Range("B2:B" & Derlig).Value)
ReDim T_sonde(Derlig)

For cptr = 1 To Derlig - 1
    If T_mesure(cptr, 1) - T_compare(cptr) < limite Then
        T_sonde(cptr) = T_mesure(cptr, 2)
    Else
        T_sonde(cptr + 1) = T_mesure(cptr, 2)
    End If
Next

Application.ScreenUpdating = False
With Sheets("comparaison")
    .Range("D2:D" & Cells.Rows.Count).Clear
    .Range("D2").Resize(Derlig, 1) = Application.Transpose(T_sonde)
    .Activate
End With
End Sub


a vérifier (surtout les cadences limite avec panne(s) dans sonde n°1
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
13 déc. 2010 à 23:02
Bonsoir!

Merci pour le temps passer sur mon problème! c'est vraiment sympa!!

Je test ça demain matin au travail et vous tiens au courant!

Merci encore.
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
14 déc. 2010 à 11:11
Bonjour,

Je viens de travailler un peu sur votre Macro Michel ; le 1er problème est "réglé" puisque qu'il m'affiche bien la bonne valeur pour l'histoire du 13janv 00:00, il va bien me chercher la valeur du 12janv 23:59

Donc pour ça j'ai l'impression que c'est ok!

Ensuite, il s'avère que dans mon fichier "Sonde n°1", il n'y a pas eu de mesure de 11h49 à 12h17, donc je devrais avoir un "trou" de 2 valeurs (12:00 et 12:10).
Même problème quelques heures plus tard le même jour, pas de mesure de 14:27 à 15:37 (trou de 6 mesures)

Or là avec la macro il n'a pas noté cette abscence de valeur pendant ces 2 laps de temps... (je me base sur ce jour là pour tester les formules/macro car on y retrouve les problèmes que je peux renconter!!)

Je vais essayer de regarder un peu la macro, et de comprendre la structure...

Merci à tous les 2! votre aide est bien précieuse!!

Nicolas
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 déc. 2010 à 12:04
bonjour,

oui, c'est ce que je craignais: des interruptions de plus de 10 minutes !!!
j'essaierai de regarder c'taprèm
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
14 déc. 2010 à 12:41
Bonjour tous
J'ai testé pour information ma seconde proposition sur 20000 ligne!
(ici à toutes fins utiles,on ne sait jamais)
https://forums.commentcamarche.net/forum/affich-20135601-rechercher-valeur-proche-dans-une-autre-feuil#6
pas de doute, Michel à bien raison:
18 mn enregistrement compris.
autant dire qu'il ne faut pas jouer avec ça.:-(
Bien cordialement

0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
14 déc. 2010 à 14:02
Merci d'avoir pris le temps d'essayer Vaucluse!! C'est très sympa!!

D'autant plus que je viens de m'apercevoir que je n'avais pas "que" 10 sondes à traiter... mais 32 exactement!! Ce qui prendrait une bonne grosse journée de calcul je pense :S
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
14 déc. 2010 à 15:25
Pas de quoi, c'est un genre de sujet qui m'amuse

Pour le fun,une autre proposition qui fonctionne dans la seconde sur 20000 lignes, du moins d'après mes essais et qui passe allègrement sur les écarts de pas de plus de 10 mn, ou sur la valeur 0 de minuit.
La combine serait de ne pas mettre les T° en face des heures mais les heures en face des T°
voir sur feuille sonde la proposition avec la formule recherche qui recherche les arrondis correspondants.
http://www.cijoint.fr/cjlink.php?file=cj201012/cij9YCGTN6.xls

A priori ça va beaucoup plus vite sur 20000 lignes.

Crdlmnt




0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
14 déc. 2010 à 16:36
...merci!!

J'ai beau chercher... mais je ne comprends pas tout en fait!!

Votre proposition: convertir les heures "réelles" au dixième d'heure le plus proche c'est bien ça?

Par exemple convertir 15:09 en 15:10 ou encore 12:03 en 12:00

C'est bien ça?

Ce qui permettrai derrière de "simplifier" la formule afin que celle-ci est juste à voir si les heures et jour sont égaux, auquel cas, il me copiera la température correspondante, sinon il passera à la ligne suivante... j'ai tjs raison?

En tout cas, ça me semble possible et être une bonne solution!! A condition de comprendre cette formule... car là, ce qui me chagrine c'est qu'elle arrondi au dixième inférieur: sur votre exemple, la formule converti la 1ère mesure (15:09) en 15:00... or cela m'arrangerais qu'elle convertisse plutot l'heure en 15:10 (l'écart n'est plus que d'une minute et non plus neuf...)

J'espère avoir bien compris le but de la manip en tout cas!! Car effectivement si toutes les heures sont sous la forme :00, :10, :20, :30, :40 et :50... alors il n'y aura plus qu'à faire une simple comparaison du jour et de l'heure, cela me semble assez simple vu comme ça!!
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 14/12/2010 à 17:19
Re

ci dessous la formule revue qui devrait bien aller avec quelques explications
=TEMPSVAL(HEURE(C2)&":"&RECHERCHEV(SI(MINUTE(C2)<5;MINUTE(C2);MINUTE(C2)+5);$G$1:$G$7;1))

1° la formule RECHERCHEV sans le code FAUX ou 0 à la fin cherche la valeur la plus proche dans le tableau J1:J7
le code HEURE isole sous forme de texte la valeur des heures (et elle seulement) de l'affichage en C2
idem avec le code MINUTE() pour les minutes
le code TEMPSVAL transforme en heures le texte construit par la formule.

Dans la formule complète:
HEURE(C2) trouve les heures de C2
&":"& concatène ces heures avec les deux points pour reconstituer un format heure
la fonction RECHERCHEV cherche la valeur proche du nombre de minute dans le tableau J1:J7
la condition SI définit la valeur à utiliser, à savoir:
les minutes de C2 directement si elles sont inférieures à 5
les minutes majorées de 5 si elles sont supérieures

TEMPSVAL transforme le texte ainsi obtenu en format heure.

En fait , mon idée était que vous puissiez installer ce code directement en ligne sur les feuilles Sonde , en créant une colonne de référence pour vos graphiques ou pour construire votre feuille comparaisons par rapport à la liste d'heure qui y est implantée.

Mais je ne sais pas ce que cela va donner dans l'ensemble de votre fichier?. Ceci dit, cette formule n'est pas matricielle et donc demande moins de calculs.

Par ailleurs:
si vous installer cette colonne dans la feuille Sonde, vous pouvez la compléter avec
+B2.
Cet ensemble vous donnera un nombre caractéristique de chaque ligne et pourra probablement éviter le matriciel dans la feuille comparaison, où il suffira de chercher dans la feuille SONDE le total des cellule A2+B2 plutôt que de concatener

d'ou des calculs peut être longs mais plus rapides quand même , je pense.



Crdlmnt







-
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
14 déc. 2010 à 17:34
Merci pour l'astuce de la fin ;-) cela sera plus simple en effet que d'avoir recours à une matrice...

Du coup je comprends mieux les fonction de minute tempsval... c'est plus clair, merci!!

J'espère pouvoir trouver le dernier petit problème demain... là je dois partir en réunion ; mais le soucis de la formule recherchev, c'est que quand elle cherche la valeur la plus proche de "59", bah elle choisi "50" et non pas "00" :S

Sinon la formule marche presque parfaitement et devrait m'éviter de rentrer dans les macros, ce qui m'arrange bcp!! (enfin surtout ceux qui utiliseront mon fichier derrière...)

Encore une fois... merci pour le temps passé!

cordialement

Nicolas
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 14/12/2010 à 17:49
A priori, pour que entre 16:55 et 16:59 le résultat soit 17:00 (etc..) :
_rallonger le champ de référence: $G$1:$G$7 devient $G$1:$G$8
_ placer la valeur 60 en G7
crdlmnt
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 déc. 2010 à 17:57
cela sera plus simple en effet que d'avoir recours à une matrice...

Excusez moi de vous avoir dérangé avec mes matrices; dommage c'était pratiquement terminé avec un temps d'environ 0,15 sec pour env. 20000 lignes... j'aurais fichu une après midi en l'air!

Ciao
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
14 déc. 2010 à 18:07
Et pourquoi ne pas faire profiter CCM de ta solution, Michel,je pense que tes compétences qui sont largement supérieures au miennes peuvent s'adresser à beaucoup de monde, même si sur ce sujet elles ne sont pas utilisées...ce qui reste à prouver car je pense que le problème que tu as soulevé du nombre de ligne et de la dimension du fichier est loin d'être résolu.

En tout cas on sera plus près de 3 mn que de 0,15 secondes!

enfin, c'est toi qui vois

Crdlmnt?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 déc. 2010 à 18:13
J'ai supprimé le fichier

au point de vue compétences, j'apprécie très souvent tes astuces avec les formules, donc...

Bonne soirée
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
14 déc. 2010 à 18:19
c'est dommage quand même
Bonne soirée aussi
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
Modifié par nicoco98 le 15/12/2010 à 19:43
Bonsoir!

Merci bcp pour la macro!! elle me sera utile j'en doute pas!! Là je m'en suis sorti avec les formules (merci Vaucluse au passage)... après quelques "ruses", j'ai l'impression que ça marche! mais c'est assez long... je peux compter les secondes entre chaque pourcentage quand excel fait les calculs... rien qu'en appliquant la formule pour les données d'une seule sonde!! (mais je crois que nos PC n'aident pas non plus...)

Je test la macro demain matin et vous tiens informé Michel!

Dans tous les cas: merci, encore, à vous 2!! Vous m'avez bcp aidé!!

Bonne soirée

Nicolas
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 15/12/2010 à 20:21
j'avais oublié de désactivé une instruction "pour essai" !!! et j'avais une mauvaise Incrémentation dans la feuille 1
https://www.cjoint.com/?0mputqTlonD envoi de 20:21H
temps pour 1500 mesures: 0,04-0,05 sec au lieu de 2,5...
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
16 déc. 2010 à 11:07
Bonjour Michel,

Votre macro marche impec... dans votre fichier!! J'essaye de l'adapter à mon fichier... mais je n'arrive pas à la "débugger"!

J'ai un soucis pour l'étape que vous avez appelé "initialisation", il y a une erreur dans la ligne:
Start = .Range("depart")

J'ai pourtant appliqué la meme structure à mon fichier au'au votre... je ne vois pas ce que je dois faire de plus!!

Si vous avez une idée... merci!!

En tout cas, les calculs sont plus que rapide!! c'est génial!
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
16 déc. 2010 à 11:11
Autant pour moi!! J'ai trouvé!

Départ est le nom de la 1ère cellule... logique!!

Merci quand meme!!
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
16 déc. 2010 à 12:04
@ Michel: j'ai réussi à intégrer votre macro dans mon fichier, elle marche et me donne les mêmes résultats que la votre!

Mais il y a un soucis avec les dates... vous avez créé une colonne où sont écrit dans la meme cellule le mois et le jour... j'en ai fait de meme dans mon fichier, dans chaque cellule il y a donc "date heure".

Mais il y a des trous qu'il ne devrait pas avoir... mais je ne comprends pas bien pourquoi!

J'ai remarqué que vos dates commencent à 01/01/1900... peut etre y a t il une raison?!

Si vous avez une idée... je suis preneur! Je m'y remettrais cette après-midi de toute façon!

Merci!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
16 déc. 2010 à 12:45
Bonjour

as tu utilisé la pièce jointe de 20:21h (permalink #27)
sinon,ca expliquerait peut-être les trous ==> affectation bizarre de la sonde !!

le coup des dates est dû au fait que j'ai utilisé la poignée d'implémentation: le premier top dans la colonne comparaison étant au format hh:mm (cad date-heure) XL marque la date et l'heure; sans précision de date il marque le 01/01/1900
la manipulation des dates et heures est toujours "prise de t^te" dans XL (ce qui explique le temps passé à s'énerver là dessus).

mon systeme est prévu pour des interruptions <24h; Tu dis si tu peux avoir des interruptions + longues. j'ai commencé à regarder mais ce n'est pas évident pour l'instant
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 16/12/2010 à 14:42
re,

J'ai copier la colonne de comparaison dans ma maquette pour éviter des difficultés

14:40: j'ai soulevé un lièvre aux différence d'heure au passage de minuit comme d'hab. je ragarderai courant pm ou... merci d'^tre patient!
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
16 déc. 2010 à 14:44
J'ai bien utilisé la dernière version oui, enfin celle du liens que vous avez fourni dans votre dernier message hier soir!

Quant aux mesures s'arretant plus de 24h... c'est difficile de vérifier mais je pense que cela peut malheureusement arriver... pas simple!

Quant aux heures... au départ j'avais une colonne heure (ex: 13:30), et une colonne date (ex: 12/01/10)... j'ai donc simplement ajouté ces 2 données, et du coup dans une seule et même colonne j'ai à la fois la date et l'heure... ce qui me donne une valeure unique pour chaque ligne!!

C'est donc cette colonne que j'ai "collée" dans votre macro... ça commence bien mais au bout de quelques lignes, il y a des trous... alors qu'il y a bien une mesure à ce moment!!

Je suis en ce moment même dessus... je vous tiens au courant de l'évolution!

Merci encore!
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
Modifié par nicoco98 le 16/12/2010 à 15:00
J'aurais voulu vous joindre ce que j'obtiens... cela aurait été plus clair!!

Mais en faisant enregistrer sous et au format XL 97-2003... le fichier fait plus de 4MO et je ne peux donc pas l'uploader sur le site "cijoint".... :-(

Je ne comprends pas!

Mais sinon, pour mon 1er jour ça marche... et dès le passage au second, il y a un soucis! Ca ne doit pas être grand chose je pense...
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
16 déc. 2010 à 15:04
Je viens de voir voir l'édit de votre dernier message!! le problème est bien au niveau du passage à 0:00... pas simple à faire comprendre à excel j'ai l'impression :/

La patience c'est pas un problème! merci à vous surtout pour le temps passer dessus :-)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 17/12/2010 à 10:29
le passage "minuit" est résolu semble t il (chuis prudent à force!)
les interruptions sont prises en compte pendant la m^me journée. par ex mesure à 0:00 ou 18:32 --->interruption possible lusqu'à 23:59
je vais chercher...
pièce jointe supprimée (edit du 17/12 10:30)
Michel
Vous programmez en VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...(P. Fauconnier/dvp)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 déc. 2010 à 10:50
Bonjour,

Comment sont signalées les dates dans le tableau mesures : saisie manuelle ou provenance externe (logiciel de mesures)? les dates sont elles inscrites à chaque changement ou sur toutes les lignes ?
Actuellement je gère jour , jour+1 etc mais comme tu m'as indiqué qu'une interruption pouvait durer plus de 24 heures, il faut que j'ai l'information jour+1- jour+2 ou jour +3, donc la date...par ex: interruption à 10:01, reprise 1 jour plus tard à 10:10

la date de départ "mesures" est elle la m^me que la date de départ comparaison?

Voilà, j'ai besoin de réponses précises pour continuer car là, je suis en stand-by

au passage: je refuse de travailler sur des classeurs de plus de 2 à 2,5 Mo... donc je n'aurai téléchargé, le premier a été réduit à 1 Mo. tu risques gros avec ces classeurs obèses (expérience perso) car une corruption de fichier peut détruire le patrimoine de données de l'entreprise et bonjour les chorales occitanes dans le bureau du chef !!!
cordialement
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
Modifié par nicoco98 le 17/12/2010 à 11:10
Bonjour!!

Merci pour le "warning" sur les gros fichiers... mais je ne vois pas bien comment l'on fait pour réduire la taille de celui-ci?! si vous avez une idée... ça m'intéresse!!

Pour ce qui est des données... si j'ai bien compris, voilà les infos:

dans la feuille comparaison, j'ai créé une colonne avec le nombre maxi de mesure que je pourrais avoir si il y en avait tous les jours, toutes les 10 minutes, et ce sans interruptions! (donc ça me fait 144*365=52560 lignes) (avec un début au 1er janvier 00:00)

Je sais que c'est "trop", car je n'aurais jamais autant de mesure, mais c'était pour moi le moyen le plus simple que j'ai trouvé quand j'ai commencé le tri... je me suis dit qu'au moins on avait la base maximale, et que ça pourrait aider...

Pour ce qui est des mesures, j'ai un fichier par sonde, qui vient d'un logiciel externe oui. Ce fichier comporte 1 seule feuille et 3 colonnes complètes: dans la colonne A, il y a le numéro de la mesure (une saison égale environ 20 000 mesures), dans la colonne B on a la date et l'heure dans la même cellule, et en C on retrouve la mesure de température!!

Manuellement ou avec une petite macro, je suis capable de diviser en 2 colonnes le jour et la date... c'est ce qui me semblait etre le plus simple!!

La date de départ des mesures... on va dire que c'est toujours la même!! Je n'ai qu'une sonde qui démarre un jour plus tard que les autres... pour que ce soit homogène, je vais donc supprimer le 1er jour d'acquisition, pour que toutes les mesures démarrent le 13 janvier!!

J'espère que ça va aider!!!

Merci encore!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 déc. 2010 à 13:02
merci,

Campagne de 20000 mesures soit 139 jours: pourquoi prévoir une colonne de 365 jours ?

sous quelle forme le logiciel de mesures t'envoie les moments de mesures
par ex
40660,624 ou 27/4/11 14:58 ou...?
est ce du texte ou du nombre?
Ou
est ce que je considère que tu me livres 2 colonnes : date et heure séparée (en nombre et non texte?)
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
17 déc. 2010 à 13:44
La campagne que j'étudie a demarrée mi-janvier 2010 et se termine mi-juin, donc pour celle-ci une demi année aurait suffit!!

Mais là nouvelle campagne qui est en cours actuellement a démarrée début décembre et va durer jusque juin!! donc c'est pour ça que je me suis dit que prendre l'année complète comme base de comparaison ne serait pas genant!

Mais sinon c'est vrai qu'à priori je n'aurais jamais de mesure... disons de juillet à novembre!

Si cela est plus simple, on peut donc prendre de décembre à juin... ça fait déjà moins de ligne c'est vrai!!

Les fichiers que je recois sont des .xls ; et dans la colonne B, dates et heures sont écrit comme ça, dans la même cellule: 13/01/2010 11:03:00 (copier coller d'une cellule) et le format d'origine de la cellule est : jj/mm/aaaa hh:mm

Ca, c'est les données de base, sans que je touche à quoi que ce soit...

La manip que je fais ensuite, qui est très rapide, est de dupliquer la colonne B, puis à l'aide de l'outil "convertir" de XL, je sépare donc le contenu des cellules... en qques secondes j'obtiens donc une colonne où il y a que les dates, sous la forme 13/01/2010 et une autre où il y a que les heures, sous la forme 13:30

quant aux températures... c'est des chiffres! (écrit avec un point et non une virgule)

J'espère que ça va t'aider!! j'ai essayé de faire au plus clair...

Donc fais au plus simple pour toi, mes données de base à trier peuvent etre sous la forme date+heure dans la meme cellule, ou alors etre séparées... c'est comme ça t'arrange!

Merci!!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 déc. 2010 à 13:50
OK, merci
yapuka
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 19/12/2010 à 16:55
Bonjour,

Ci joint maquette
https://www.cjoint.com/?0mtp8KDrkBB

j'aurais dû poser ma question sur le format des données bien avant: ca m'aurait évité de tomber sur des impossibilités! ca m'a fait refaire pas mal de trucs mais vu le temps aujourd'hui!!
j'ai opté pour une 1 seule colonne au format jj/mm/aaaa hh:mm

la macro remplit le tableau de comparaison (colonnes A et B) ajustant ainsi sa hauteur en fonction de la période de mesures et indique le changement de jour dans la colonne A

J'ai réduit sur la maquette le nombres de mesures à 500: la lecture des essais de la macro est très longue et fastidieuse et il me semble avoir étudié les différents cas d'interruptions( journés et heures-minutes). le temps est de 0,032 secondes (ram 512) soit environ 1 à 1,5 sec pour 20000 mesures

au passage évite au maximum les select-sélection et copy-paste .dans tes macros; Si je la retrouve, je t'enverrais une démo la- dessus que j'avais fait pour un forumeur/ccm.

16:55h
Voci la dite démo: on passe de 53,5 sec à 1,3 sec...
https://www.cjoint.com/?0mtq45WwpRv

Cordialement
Michel
Vous programmez en VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...(P. Fauconnier/dvp)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 20/12/2010 à 09:34
Bonjour,
Ci joint petite modifs suite à étourderies:
https://www.cjoint.com/?0mujBMgoffv

-Prise en compte d'un écart de mesure inférieur à 10 sec: il est corrigé à 10 sec
- on peut changer la valeur du "top": 1440 est divisible par 1,2,3,5 et donc par une multiplication de 1 ou N de ces nombres premiers...
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
20 déc. 2010 à 11:46
Bonjour Michel,

Merci pour la macro, mais malheureusement je n'arrive pas à la tester... :-(

Voilà le message que j'ai quand j'essaye de la lancer:

"Erreur d'éxécution 9"
"L'indice n'appartient pas à la sélection"

La ligne correspondante: "Orere = hhmn(T_orere(Rang, 2))"

Je ne comprends pas bien! Et surtout je n'ai aucune idée de la cause cette petite erreur...

Si tu as une idée... merci!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
20 déc. 2010 à 12:49
Re,

C'est ma modif de ce matin sur les écarts<10 qui était inutile et qui a tout déréglé; comme je n'avais pas testé :-((
donc
https://www.cjoint.com/?0mumSlUHhX7
j'espère que ce coup ci ce sera OK (on peut rêver!!!)
excuses moi
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
Modifié par nicoco98 le 20/12/2010 à 16:04
Re,

Merci!! Je t'avoue que je ne suis pas capable de comparer par rapport à celle de ce matin, en lisant ta macro... ne n'y comprend pas grand chose à vrai dire!! Et c'est là qu'on se rencontre qu'il y a beaucoup à apprendre et qu'il doit y avoir des tas de trucs possible à faire en VBA!!

Donc... là je viens de tester cette dernière version... pas simple!!

Pour être honnête, j'hésite à te dire si il y a ou pas un soucis ("lol"), car je ne voudrais pas abuser non plus...

Mais bon, tu t'es beaucoup investi alors je préfère être honnête!

1/ pour pouvoir me servir de ton fichier, j'ai donc collé mes données "sources" dans la feuil2... au format jour+heure dans la colonne B et température en C.

Là la macro me dit soucis...: solution que j'ai trouvé, remplacer la date de 2010 dans mes données brutes par 2011 et hop ça tourne!!

J'ai compris qu'il fallait aussi renseigner dans la feuille n°1, en A2, la date de départ c'est bien ça?

Donc ça... c'est un détail! j'ai compris comment faire! un coup de ctrl+f et c'est réglé en 2 secondes!!

2/ c'est le passage à 00:00... qui semble poser problème :S
A chaque nouvelle journée il y a un trou, la macro ne décale pas les valeurs... mais elle ne veut pas trouver celles correspondant à 00:00 (exemple elle ne me met rien pour le 13/01/2011 à 00:00 alors quil existe une mesure le 12/01/2011 à 23:59)

A part ça, ça fonctionne très bien!! Et je t'en remercie!! Ca me fait déjà une très grosse partie du travail et c'est super!! C'est pas pas quelques valeurs à rentrer à la main qui vont me poser pb...

Je vais donc partir sur cette base, car là je dois vraiment avancer dans l'analyse de ces résultats, en comparant avec le fichier source, je peux comparer le nombre de cellule non vide et ainsi m'assurer qu'il y a toutes les valeurs!! bon après si y'en manque...c'est plus dur pour les retrouver!!

Merci encore!!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
20 déc. 2010 à 16:27
chaque nouvelle journée il y a un trou, la macro ne décale pas les valeurs... mais elle ne veut pas trouver celles correspondant à 00:00 (exemple elle ne me met rien pour le 13/01/2011 à 00:00 alors quil existe une mesure le 12/01/2011 à 23:59)

Désolé, mais ma maquette au 13/9/11 à 00:00 indique la mesure du 12/9/11 à 23:57h.

:-(
0
nicoco98 Messages postés 59 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 24 février 2011
20 déc. 2010 à 16:43
j'ai fait tourné ta macro un peu... mais je n'ai pas cherché ce type de cas!! J'ai vu que ça marchait alors j'ai direct mis mes données...

Mais si ça marchait avant, pas de raisons que ça ne soit pas le cas avec d'autres données du même genre!

Dès que je peux, j'essaye de trouver précisément de quoi ça peut venir... en espérant qu'on arrive à trouver!!

Mais dans tous les cas, encore une fois, merci beaucoup!! ton aide est très appréciable!
0