Boucle en VBA access 2000
Fermé
herve250wrf
Messages postés
13
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 février 2011
-
13 oct. 2008 à 16:43
herve250wrf - 14 oct. 2008 à 12:17
herve250wrf - 14 oct. 2008 à 12:17
A voir également:
- Boucle en VBA access 2000
- Vba range avec variable ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
- Incompatibilité de type vba ✓ - Forum Programmation
- Psp 2000 vs 3000 ✓ - Forum PSP
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
10 réponses
ok j'ai refait la modif inverse mais comme je débute en vba je galaire un peut
j'ai basée mes les requette qui donne les etat sur la contion suivante "Formulaires![Classeur]![Numéro de commande]"
mon probléme et que la boucle ne tourne pas
je pense que soit la macro soit les requette ne sont pas basées sur la bonne source
meci de votre aide je suis dans la m.. ça doit tournée pour ce midi
voici la macro
Private Sub classeur_Click()
Dim stDocName As String
Dim Compteur As Integer
Dim i As Integer
Dim comp As Integer
Set rs = CurrentDb.OpenRecordset("Table edition pour classeur")
rs.MoveFirst
Do Until rs.EOF
i = [numero de commande]
MsgBox (i)
'Client simier
If [Numéro client] = 1070 Then
Else
'Bon de prépa1
stDocName = "Classeur Bon Prépa"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'BL
If [facturation] = "EA" Then
stDocName = "Classeur BL EA"
DoCmd.OpenReport stDocName, acNormal
Else
stDocName = "Classeur BL PP"
DoCmd.OpenReport stDocName, acNormal
End If
'Etiquette palette1
stDocName = "Classeur etiquette Palette"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'Etiquette caisse
stDocName = "Classeur Etiquette Caisse"
DoCmd.OpenReport stDocName, acNormal
End If
rs.MoveNext
Loop
On Error Resume Next
Set rs = Nothing
End Sub
j'ai basée mes les requette qui donne les etat sur la contion suivante "Formulaires![Classeur]![Numéro de commande]"
mon probléme et que la boucle ne tourne pas
je pense que soit la macro soit les requette ne sont pas basées sur la bonne source
meci de votre aide je suis dans la m.. ça doit tournée pour ce midi
voici la macro
Private Sub classeur_Click()
Dim stDocName As String
Dim Compteur As Integer
Dim i As Integer
Dim comp As Integer
Set rs = CurrentDb.OpenRecordset("Table edition pour classeur")
rs.MoveFirst
Do Until rs.EOF
i = [numero de commande]
MsgBox (i)
'Client simier
If [Numéro client] = 1070 Then
Else
'Bon de prépa1
stDocName = "Classeur Bon Prépa"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'BL
If [facturation] = "EA" Then
stDocName = "Classeur BL EA"
DoCmd.OpenReport stDocName, acNormal
Else
stDocName = "Classeur BL PP"
DoCmd.OpenReport stDocName, acNormal
End If
'Etiquette palette1
stDocName = "Classeur etiquette Palette"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'Etiquette caisse
stDocName = "Classeur Etiquette Caisse"
DoCmd.OpenReport stDocName, acNormal
End If
rs.MoveNext
Loop
On Error Resume Next
Set rs = Nothing
End Sub
Normal pour plusieurs raisons
La 1re "Do While i Is Empty " vu que I n'est pas empty ta boucle ne récupère que le 1er enregistrement!
2. Si les enregistrements de ton formulaire sont stockés dans une table, vaut mieux ouvrir un recordset de ta table et lire tous les enregistrement.
Set rs= currentdb.openrecordset"Ma Table")
rs.movefirst
do until rs.eof (au lieu de ton do while I Is Empty)
...
rs.movenext
loop
on error resume next
set rs = nothing
end sub
La 1re "Do While i Is Empty " vu que I n'est pas empty ta boucle ne récupère que le 1er enregistrement!
2. Si les enregistrements de ton formulaire sont stockés dans une table, vaut mieux ouvrir un recordset de ta table et lire tous les enregistrement.
Set rs= currentdb.openrecordset"Ma Table")
rs.movefirst
do until rs.eof (au lieu de ton do while I Is Empty)
...
rs.movenext
loop
on error resume next
set rs = nothing
end sub
merci pour vos reponse,
pour le première question de blux (si j'ai une erreur) c'est non tout roule bien
pour la solution de bnb elle ne résout pas mon probléme
mes etat sont liè au numéro de commande du formulaire je pense que c'est çà mon probléme
sur quel valeur je doit faire pointer mon etat ?
pour le première question de blux (si j'ai une erreur) c'est non tout roule bien
pour la solution de bnb elle ne résout pas mon probléme
mes etat sont liè au numéro de commande du formulaire je pense que c'est çà mon probléme
sur quel valeur je doit faire pointer mon etat ?
blux
Messages postés
26122
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 juin 2024
3 293
13 oct. 2008 à 21:39
13 oct. 2008 à 21:39
Ta zone qui contient le numéro de commande...
[numero...].value ?
[numero...].value ?
Merci pour cette réponse blux mes rien ne change si je rentre [numero de commande] dans les requettes la macros me fait une edition de toute les commandes et non pas que de la selection
blux
Messages postés
26122
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 juin 2024
3 293
14 oct. 2008 à 09:37
14 oct. 2008 à 09:37
ben là, c'est normal, tu ouvres tes états sans restriction sur un critère (wherecondition), donc il édite tous les enregistrements de la requête/table sur laquelle il est basé...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Blux,
Voici le tout
le formulaire est baseés sur une table crée par une requette
le formulaire affiche une serie d'enregistrement en locurance la liste des expedition de la semaine
pour les etat il sont bien bases sur la meme table.
j'ai réussit à faire passer à l'enregistrement suivant maismaintenet je ne trouve pas la boucle qui tourne bien tout du moin sans message d'erreur
Voici ma modification en gras
Private Sub Classeur_Click()
Dim stDocName As String
Dim i As Integer
i = [numero de commande]
MsgBox (i)
'Client simier
If [Numéro client] = 1070 Then
Else
'Bon de prépa1
stDocName = "Classeur Bon Prépa"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'BL
If [facturation] = "EA" Then
stDocName = "Classeur BL EA"
DoCmd.OpenReport stDocName, acNormal
Else
stDocName = "Classeur BL PP"
DoCmd.OpenReport stDocName, acNormal
End If
'Etiquette palette1
stDocName = "Classeur etiquette Palette"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'Etiquette caisse
stDocName = "Classeur Etiquette Caisse"
DoCmd.OpenReport stDocName, acNormal
End If
DoCmd.GoToRecord , , acNext
End Sub
Voici le tout
le formulaire est baseés sur une table crée par une requette
le formulaire affiche une serie d'enregistrement en locurance la liste des expedition de la semaine
pour les etat il sont bien bases sur la meme table.
j'ai réussit à faire passer à l'enregistrement suivant maismaintenet je ne trouve pas la boucle qui tourne bien tout du moin sans message d'erreur
Voici ma modification en gras
Private Sub Classeur_Click()
Dim stDocName As String
Dim i As Integer
i = [numero de commande]
MsgBox (i)
'Client simier
If [Numéro client] = 1070 Then
Else
'Bon de prépa1
stDocName = "Classeur Bon Prépa"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'BL
If [facturation] = "EA" Then
stDocName = "Classeur BL EA"
DoCmd.OpenReport stDocName, acNormal
Else
stDocName = "Classeur BL PP"
DoCmd.OpenReport stDocName, acNormal
End If
'Etiquette palette1
stDocName = "Classeur etiquette Palette"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'Etiquette caisse
stDocName = "Classeur Etiquette Caisse"
DoCmd.OpenReport stDocName, acNormal
End If
DoCmd.GoToRecord , , acNext
End Sub
J'ai trouvez une solution provisoir
si vous avez une idée je suis preneur
merci
Voici ma solution
Private Sub Classeur_Click()
Dim stDocName As String
Dim Compteur As Integer
Dim i As Integer
Dim j As Integer
For i = 1 To 3000
j = [numero de commande]
MsgBox (j)
'Client simier
If [Numéro client] = 1070 Then
Else
'Bon de prépa
stDocName = "Classeur Bon Prépa"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'BL
If [fact] = "EA" Then
stDocName = "Classeur BL EA"
DoCmd.OpenReport stDocName, acNormal
Else
stDocName = "Classeur BL PP"
DoCmd.OpenReport stDocName, acNormal
End If
'Etiquette palette
stDocName = "Classeur etiquette Palette"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'Etiquette caisse
stDocName = "Classeur Etiquette Caisse"
DoCmd.OpenReport stDocName, acNormal
End If
DoCmd.GoToRecord , , acNext
Next
End Sub
si vous avez une idée je suis preneur
merci
Voici ma solution
Private Sub Classeur_Click()
Dim stDocName As String
Dim Compteur As Integer
Dim i As Integer
Dim j As Integer
For i = 1 To 3000
j = [numero de commande]
MsgBox (j)
'Client simier
If [Numéro client] = 1070 Then
Else
'Bon de prépa
stDocName = "Classeur Bon Prépa"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'BL
If [fact] = "EA" Then
stDocName = "Classeur BL EA"
DoCmd.OpenReport stDocName, acNormal
Else
stDocName = "Classeur BL PP"
DoCmd.OpenReport stDocName, acNormal
End If
'Etiquette palette
stDocName = "Classeur etiquette Palette"
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
'Etiquette caisse
stDocName = "Classeur Etiquette Caisse"
DoCmd.OpenReport stDocName, acNormal
End If
DoCmd.GoToRecord , , acNext
Next
End Sub
blux
Messages postés
26122
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 juin 2024
3 293
13 oct. 2008 à 16:47
13 oct. 2008 à 16:47
Salut,
tu as une erreur ?
tu as une erreur ?
blux
Messages postés
26122
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 juin 2024
3 293
14 oct. 2008 à 10:29
14 oct. 2008 à 10:29
Si j'ai bien compris, tu souhaites éditer une série de documents quand on appuie sur un bouton dans un formulaire...
blux
Messages postés
26122
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 juin 2024
3 293
14 oct. 2008 à 11:03
14 oct. 2008 à 11:03
Donc la premiere chose est de savoir ce qui est affiché dans ton formulaire : un seul enregistrement ou une série d'enregistrements.
Ensuite, il faut savoir sur quoi est basé cet affichage (one-shot ou requête), pour en déduire l'action a effectuer pour le balayage des données.
Puis, en dernier lieu, ouvrir les états (basés sur les mêmes données que le formulaire) avec une restriction sur l'enregistrement en cours...
Ensuite, il faut savoir sur quoi est basé cet affichage (one-shot ou requête), pour en déduire l'action a effectuer pour le balayage des données.
Puis, en dernier lieu, ouvrir les états (basés sur les mêmes données que le formulaire) avec une restriction sur l'enregistrement en cours...