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 20/12/2010, 19h18   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
Par défaut Code pour pour ne pas afficher la valeur 0

Bonjour

Besoin d'aide,

Ma base contirnt un menu général avec un bouton qui ouvre le formulaire "AT" et un qui ouvre un formulaire de recherche.

Les contrôle du formulaire de recherche ouvre les formulaire associés avec la fonction stLinkCriteria;

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Modifiable6_Click()
On Error GoTo Err_Modifiable6_Click
 
    Dim stDocName As String
    Dim stLinkCriteria As String
 
    stDocName = "#At"
 
    stLinkCriteria = "[REFSITE]=" & Me![Modifiable6]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
 
End If
 
DoCmd.Close acForm, "Recherche"
Exit_Modifiable6_Click:
    Exit Sub
 
Err_Modifiable6_Click:
    MsgBox Err.Description
    Resume Exit_Modifiable6_Click
End Sub
Comment faire pour que la valeur "0" ne soit pas retourné. J'ai utilisé la fonction Me.RecordsetClone.Recordset que j'ai inscrit dans le code du formulaire "AT", cela fonctionne bien avec le formulaire recherche mais je ne peux plus ouvrir le formulaire "AT" à partir du menu général car sa valeur =0

Merci
Gonteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 09h32   #2
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello et bienvenue sur le Forum
voilà le code que j'utilise pour faire la même chose:
en imaginant que ta liste contienne des noms de sites et s'appelle liste_sites
Code :
1
2
3
Private Sub  c_Click()
    DoCmd.OpenForm "AT", , ,  "REFSITE=" & liste_sites  
End Sub
- à moins que le nom réel de ton formulaire soit #AT, le # est superflu
- la gestion d'erreur qui ne traite pas l'erreur est inutile
- nommer correctement les objets est indispensable pour la maintenance

Bonne continuation
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 14h30   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
Merci simplifi de l'intérêt que tu y portes...

Je m'explique plus clairement...

La base contient un formulaire "#AT". J'ai fait un formulaire "Recherche"qui avec l'aide de contrôles (zone liste déroulante & zone de texte relatifs à plusieurs champs du formulaire "#AT") retourne les formulaires "#AT" associés donc en cliquant sur une un item de la zone de liste déroulante ou en inscrivant un texte dans une zone de texte(+ bouton de commande) Seulement les formulaires "#AT" = à la commande sont retourné.

Cela fonctionne bien avec stLinkcriteria (comme le code ci-dessous) sauf qu'un formulaire vide est toujours retourné en plus du résultat.

J'ai trouvé un code sur la faq du site pour empêcher que cette valeur soit retourné que j'ai ajouté au module du formulaire "#AT" soit:

Code :
1
2
3
4
5
6
Private Sub Form_Open(Cancel As Integer)
    If Me.RecordsetClone.RecordCount = 0 Then
        MsgBox "Le formulaire ne s'ouvre pas car il est vide.", vbInformation
        Cancel = True 'Annule l'ouverture
    End If
End Sub
Cela fonctionne très bien pour mon formulaire recherche, le formulaire vide n'est plus retourné, le problème est que dans mon menu général, j'ai un bouton pour ouvrir "#AT" et un pour ouvrir "Recherche". Lorsque je clique pour ouvrir "#AT" C'est Msgbox qui ouvre car le formulaire est vide...


Salutations
Gonteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 00h12   #4
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
hello
j'ai du mal à comprendre ton problème, c'est un peu embrouillé
pour info: stlinkcriteria n'est pas une fonction mais une simple variable (string) qui est chargée avec un texte qui fait office de filtre.
dans ma simplification, j'ai juste mis le texte du filtre directement dans la commande open!!!

j'ai l'impression de comprendre (tu emploies alternativement le mot formulaire "#AT" au singulier et au pluriel) que tu voudrais que le formulaire te présente uniquement la ligne souhaitée sans ajouter la ligne (ou la fiche) correspondant au 'nouvel enregistrement'
Pour Cela, il suffit de spécifier: ajout autorisé = non (onglet données de l'objet formulaire)
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 14h16   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 0
Points : 0
Merci Simplifi,

Désolé, je ne suis pas vraiment expert en Access, merci de garder patience...

Lorsque je met autoriser ajout = non , une page en blanc est tout de même retourné. ce que je veux c'est un msgBox.

La base contient un formulaire nommé "#AT" dont la source est une requête. je peux ouvrir le formulaire en mode ajout à l'aide d'un bouton sur le menu général. Cela fonctionne bien.

J'ai fait un formulaire nommé "Recherche", que je peux également ouvrir à partir du menu générale. Le formulaire "Recherche" contient des zones de liste déroulante et des zonnes de texte (avec bouton commande) qui permettent d'ouvrir tous les formulaires "#AT"= au choix de la zone de liste. Voici un code pour un évènement sur clic de la zone de liste déroulante que j'utilise.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Modifiable6_Click()
On Error GoTo Err_Modifiable6_Click
 
    Dim stDocName As String
    Dim stLinkCriteria As String
 
    stDocName = "#At"
 
    stLinkCriteria = "[REFSITE]=" & Me![Modifiable6]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
 
 
 
 
DoCmd.Close acForm, "Recherche"
Exit_Modifiable6_Click:
    Exit Sub
 
Err_Modifiable6_Click:
    MsgBox Err.Description
    Resume Exit_Modifiable6_Click
End Sub
Cela fonctionne bien sauf qu'un formulaire vide (valeur 0) est toujours retourné avec le résultat. Comment empêcher qu'il soit retourné avec le résultat.

Comme expliqué dans un post précédent j'ai mis un code dans le module du formulaire "#AT"

Code :
1
2
3
4
5
6
Private Sub Form_Open(Cancel As Integer)
    If Me.RecordsetClone.RecordCount = 0 Then
        MsgBox "Le formulaire ne s'ouvre pas car il est vide.", vbInformation
        Cancel = True 'Annule l'ouverture
    End If
End Sub
Le résultat est exactement ce que je recherche mais le problème est que je ne peux plus ouvrir le formulaire"#AT" à partir du menu général car la valeur du formulaire "#AT" demandé est= 0

Merci encore, j'essaie d'être le plus clair possible selon mes connaissances dans Acess...
Gonteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 19h04   #6
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
je n'arrive toujours pas à comprendre ton problème
essaie de joindre un zip de ta base
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h05.


 
 
 
 
Partenaires

Hébergement Web