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 28/11/2011, 17h20   #1
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Par défaut Souci boucle et filtre enregistrements

Bonsoir à tous et à toutes

Nouveau petit souci sur la boucle ci dessous

La boucle fonctionne mais elle renvoie pour le nombre d'enregistrements de la table, les valeurs du 1er enregistrement

Elle ne tient pas compte de la condition incluse dans la boucle


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
'Générer les lignes de localisation des points
Dim golong, golat, ligne1, numligne As String
Dim goouinon As String
numligne = 0
 
 
Dim rs As DAO.Recordset
Dim SQL As String
Dim stTemp As String
 
SQL = "Select * From TAffaire"
Set rs = CurrentDb.OpenRecordset(SQL)
While Not rs.EOF
golong = Forms("FAffaire").Controls("golong").Value
golat = Forms("FAffaire").Controls("golat").Value
goouinon = Forms("FAffaire").Controls("goouinon").Value
 
 
numligne = numligne + 1
Select Case goouinon
    Case "O"
        ligne1 = "var point" & numligne & " = new GLatLng(" & golong & ", " & golat & ");"
        'MsgBox (ligne1)
        Print #numfic, ligne1
 
    Case Else
    ' A COMPLETER
End Select
 
rs.MoveNext
Wend
Est ce par ce que je récupère les valeurs du formulaire et non directement de la base ?

Merci pour votre aide précieuse !

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 18h26   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
'Générer les lignes de localisation des points
Dim golong as string
dim golat as string
dim ligne1 as string 
dim numligne As long
 
Dim goouinon As String
numligne = 0
 
 
Dim rs As DAO.Recordset
Dim SQL As String
Dim stTemp As String
 
SQL = "Select * From TAffaire"
Set rs = CurrentDb.OpenRecordset(SQL)
While Not rs.EOF
golong = Forms("FAffaire").Controls("golong").Value
golat = Forms("FAffaire").Controls("golat").Value
goouinon = Forms("FAffaire").Controls("goouinon").Value
 
 
numligne = numligne + 1
Select Case goouinon
    Case "O"
        ligne1 = "var point" & numligne & " = new GLatLng(" & golong & ", " & golat & ");"
        'MsgBox (ligne1)
        Print #numfic, ligne1
 
    Case Else
    ' A COMPLETER
End Select
 
rs.MoveNext
Wend
DéJà il y a une petite erreur dans la définition des variables, quand tu mets dim a, b, c as quelquechose, VBA crée 2 variables de type variant et 1 variable de type "quelquechose".

Ensuite est-ce que goouinon est un champ texte ou un champ boolean ?

Comme ton test ne fonctionne pas je supose que c'est un boolean dans ces cas làm, le code est le test sont

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
'
' ici tes définitions
'
 
dim goouinon as boolean
goouinon = Forms("FAffaire").Controls("goouinon").Value 'Note : on peut aussi écrire goouinon = Forms![FAffaire]![goouinon].
 
'
' ici ton code
'
 
Select Case goouinon
    Case true
 
'
' ici la suite de ton code
'
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 07h04   #3
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Bonjour René

Merci pour cette réponse

Je modifie la définition des variables et vois si cela fonctionne

Concernant la variable goouinon, elle n'est pas de type boléen. C'est un champ texte où je saisis la lettre "O" pour oui.

C'est donc pour cela que j'ai mis case "O" dans le select case

A bientot

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 17h55   #4
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Bonsoir

J'ai fait la manip, et cela ne marche pas mieux

J'ai toujours autant de lignes que d'enregistrements et pas de tri selon le select case ni de sélection des bonnes valeurs (cela prend toujours les valeurs du 1er enregistrement)

A bientot

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 18h36   #5
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Dans ton case else, ajoute et exécute ton code en pas à pas. Tu vas voir ce que voit Access dans la fenêtre d'exécution immédiate ([ctrl][g] pour l'afficher) ça devrait te donner une piste.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 18h40   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Ok, je viens de comprendre.

Ton formulaire "FAffaire" est un formulaire qui affiche plusieurs enregistrements et tu veux que le pointeur d'enregistrement se déplace avec ton parcours de recordset c'est bien cela ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 07h11   #7
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Bonjour René

Si je comprends bien, faire une boucle sur une table en prenant pour critères les valeurs affichées d'un formulaire, ca ne peut pas aller bien loin, puisque la boucle ne boucle pas sur le formulaire.... C'est donc un peu normal que les valeurs reprises sont toujours celles affichées sur le formulaire (j'ai testé avec d'autres valeurs affichées, c'est bien ce qui se passe)

Il faut donc que mes variables reprennent la valeur des enregistrements et non des zones de textes du formulaire

Remplacer

Code :
goouinon = Forms("FAffaire").Controls("goouinon").Value
par

goouinon = table TAffaire goouinon . Value

ou quelque chose comme cela ....

Je cherche depuis 40 minutes et ne trouve pas

Avez vous la réponse ?

Merci pour votre aide

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 13h29   #8
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Bonjour à tous

Il y en a qui pensent à devenir Président en se rasant le matin.
Moi, parfois je pense au code VBA qui n'avance pas
Chacun a les ambitions qu'il mérite

Ne trouvant pas de moyen de "balayer" ma table access (voir post précédent), j'ai trouvé le moyen d'y arriver par un autre chemin
- J'exporte la table access en fichier XLS
- Je balaye ce fichier XLS ainsi créé et en tire les valeurs souhaitées

Cela fera surement hurler les puristes, qu'ils m'en pardonnent

Merci encore à tous ceux qui ont pris du temps pour m'aider sur ce point (et sur les multiples autres postés depuis quelques semaines)

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 17h43   #9
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Vu ton besoin, une jointure entre tes 2 tables (celle que tu affiches et celle que tu parcours par code) devrait permettre de résoudre le problème sans tableau Excel.

Moins il y a de pièces dans le puzzle de ton appli, moins tu risques de pannes.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r 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 00h11.


 
 
 
 
Partenaires

Hébergement Web