Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/03/2011, 18h35   #1
Membre éclairé
 
Avatar de @rkane
 
Homme Patrick
developpeur amateur dans mon cadre professionnel
Inscription : juin 2006
Messages : 499
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : developpeur amateur dans mon cadre professionnel
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 499
Points : 360
Points : 360
Par défaut Probleme de boucle for / next

bonjour à tous

voilà j'ai un formulaire qui m'affiche les enregistrements et qui à chaque "saut" d'enregistrement effectue un calcul et l'enregistre dans une table pour un export excel ultérieur.
Le code est place sur le form_current :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Form_Current()
Dim dblPeriode As Double, nbJours As Long, NbHeures As Long, NbMin As Long, Reste As Double
Dim HeuresPassees As Date
 
If Depart < #7:30:00 PM# Then  ' départ apres minuit
HeuresPassees = #4:30:00 AM# + Nz(Depart - #12:00:00 AM#, 0)
Else                           'départ avant minuit
HeuresPassees = Nz(Depart - #7:30:00 PM#, 0)
End If
 
dblPeriode = HeuresPassees
nbJours = Int(dblPeriode)
Reste = dblPeriode - Int(dblPeriode)
NbHeures = DateDiff("h", #12:00:00 AM#, Reste)
Reste = Reste - (NbHeures / 24)
NbMin = DateDiff("n", #12:00:00 AM#, Reste)
Periode = (nbJours * 24 + Format(NbHeures, "00")) & " heures " & Format(NbMin, "00") & " minutes "
Duree = (nbJours * 24 + Format(NbHeures, "00")) * 60 + Format(NbMin, "00")
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End Sub
j'ai essayé en vain de créer une boucle qui fasse mouliner ce code et défiler les enregistrements après un clic sur un bouton, au lieu de les faire défiler à la main avec le saut de page par exemple.

for i = 1 to 365
code ci dessus
next i

les enregistrements portent sur une année calendaire au maximum après sélection de l'année dans une liste déroulante. Est-ce faisable ?
__________________

@rkane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2011, 11h56   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonjour,
Ce n'est pas très clair
pour passer à l'enregistrement suivant il y a
Code :
1
2
 
docmd.GoToRecord acDataForm,me.name,acNext
si j'ai bien compris.
helas est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/03/2011, 12h13   #3
Membre éclairé
 
Avatar de @rkane
 
Homme Patrick
developpeur amateur dans mon cadre professionnel
Inscription : juin 2006
Messages : 499
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : developpeur amateur dans mon cadre professionnel
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 499
Points : 360
Points : 360
ouaip.... je me doutais bien que ça semblerait un peu confus mon affaire

alors voilà, j'ai inseré ton bout de code dans ma boucle et finalement ça mouline bien, les enregistrements défilent tous seuls dans le formulaire et le calcul s'opere bien à chaque fois. En fait, dans le code de ma boucle je n'avais pas spécifié le nom du formulaire
Pile poil ce que je voulais, sauf que quand on arrive au dernier enregistrement j'ai un message d'erreur puisque la boucle ne trouve plus de grain à moudre.

Là je ne sais pas comment ça se gère, peux tu m'aider sur ce dernier point ?
__________________

@rkane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2011, 13h23   #4
Membre éclairé
 
Avatar de @rkane
 
Homme Patrick
developpeur amateur dans mon cadre professionnel
Inscription : juin 2006
Messages : 499
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : developpeur amateur dans mon cadre professionnel
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 499
Points : 360
Points : 360
rebonjour Helas

bon ben voilà j'ai palié le problème de la boucle comme ça :
Code :
1
2
3
4
5
6
7
8
9
Dim Cptr As Integer
 
Cptr = RecordsetClone.RecordCount - 1
 
For i = 1 To Cptr
 
DoCmd.GoToRecord acDataForm, Me.Name, acNext
 
Next i
Ca fonctionne nickel
__________________

@rkane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2011, 14h18   #5
Membre éclairé
 
Avatar de @rkane
 
Homme Patrick
developpeur amateur dans mon cadre professionnel
Inscription : juin 2006
Messages : 499
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : developpeur amateur dans mon cadre professionnel
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 499
Points : 360
Points : 360
j'en ai profité pour integrer une progressbar :

Citation:
Dim Cptr As Integer
Cptr = RecordsetClone.RecordCount - 1
For i = 1 To Cptr
ProgressBar4.Min = 0
ProgressBar4.Max = Cptr
DoCmd.GoToRecord acDataForm, Me.Name, acNext
ProgressBar4 = i
Next i

Merci à toi Helas
__________________

@rkane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h30.


 
 
 
 
Partenaires

Hébergement Web