Programmation vba boucle if

Fermé
azzouz90 Messages postés 26 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 4 janvier 2013 - 26 juil. 2011 à 11:10
azzouz90 Messages postés 26 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 4 janvier 2013 - 29 juil. 2011 à 23:38
Bonjour,

j'ai une base de données en access,je viens de réalisé une boucle If qui devrait crée un champ a partir d'un autre qui existe déjà mais j'arrive pas.
brièvement:j'ai un champs"time" qui contient des valeurs,non organiser, sous la forme heure/minute/seconde
mon but c'est de crée un autre champs,a partir du champs "time", qui contient une même valeur pour un intervalle de temps (chaque 5 minutes)
exemple; si le champs "time" contient ces valeurs 08:00:00
08:01:32
08:04:35
08:04:56
le champs résultat contiendra 00:00:00
00:00:00
00:00:00
00:00:00


si le champs "time" contient ces valeurs 08:05:01
08:07:22
08:07:26
08:09:59
le champs résultat contiendra 00:05:00
00:05:00
00:05:00
00:05:00
merci d'avance :)

5 réponses

vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
26 juil. 2011 à 11:19
bonjour,

if (time.value=une valeur or time.value = unevaleur etc...) then

resultat.value=00:00:00

else if (time.value etc.....) then
resultaT.value=00:05:00

end if

tu adapte au nom de tes champs et ca devrais aller je pense.

mais pourrais tu copier ici le morceau de code que tu as utilisé ?
0
azzouz90 Messages postés 26 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 4 janvier 2013
Modifié par azzouz90 le 26/07/2011 à 12:11
je vous remercie mais je crois que j'ai pas bien expliqué de quoi ça s'agit la base de données,c'est une base qui contient 4champs initiales date de communication,heure de communication,numéro appelé et durée de communication, le problème de votre solution c'est qu'elle s'agit d'un "travail manuel" et ma base de données contient plus que 72 000 lignes...
moi j'essais de travailler par intervalle:
if time.value in [08:00:00,08:05:00] then
resultat.value=00:00:00
mai toujours j'ai des probléme de syntaxe
j'espère que c'est bien compris,si vous avez une solution qui me convient j'attends votre aide
merci d'avance
0
blux Messages postés 26534 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
28 juil. 2011 à 09:37
Salut,

"if time.value in " n'existe pas en VBA, ni dans in quelconque langage.

Tu dois simplement rendre la chaine time lisible pour effectuer des tests : transformation en valeur numérique ou découpage pour ne travailler que sur les minutes.
0
azzouz90 Messages postés 26 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 4 janvier 2013
28 juil. 2011 à 11:03
slt,
j'ai pensés a une telle solution mais le problème c'est le champ time est sous forme de 12 heures (08H et 20H s'écrivent dans la base 08H)
avez vous une solution?
0
blux Messages postés 26534 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
28 juil. 2011 à 11:27
Aucune importance, si tu souhaites simplement récupérer les minutes.
Il te suffit de découper ton champ avec un mid et de faire le test ensuite.
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
29 juil. 2011 à 15:04
<idée>j'ai pas les fonctions en tête, mais soit tu travail avec un type string, et dans ce cas là normalement tu peu faire des comparaison de grandeur (a<b renvois vrai, si tu voi ce que je veux dire ^^)
ou sinon il doit y avoir des fonctions de traitement des dates et heures, dans ce cas là tu compare la valeur de la cellule actuel avec tes bornes (comme avec le mroceau de code)
mais d'un point de vue performance, 72000 lignes a traiter ca peux faire long.
du coup tu peux ptete travailler avec la mémoire en mettant tes données dans un tableau pour le traitement.</idée>

...

en faite je viens de m'apercevoir que vu que tu travaillais sur access, tu pouvais utiliser le sql, genre:
update latable set resultat = 00:00:00 where time between 08:00:00 and 08:05:00;
update latable set resultat = 00:05:00 where time between 08:05:01 and 08:10:00;

enfin tu voi et tu adapte (encore une fois, c'est que des idées, je respecte pas la syntaxe des types et autres broutilles)

bonne chance
0

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

Posez votre question
azzouz90 Messages postés 26 Date d'inscription mardi 26 juillet 2011 Statut Membre Dernière intervention 4 janvier 2013
29 juil. 2011 à 23:38
mon problème reste le mm,la syntaxe,mai merci com mm
0