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 02/02/2012, 10h50   #1
Invité régulier
 
Homme
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 8
Points : 8
Par défaut Sélection automatique d'un nouvel enregistrement dans ZdL

Bonjour à tous !

J'aurai besoin d'un petit coup de pouce


Un formulaire A contient une zone de liste déroulante basée sur les enregistrement d'une table : Id (lié) et Nom
Dans le cas où l'enregistrement souhaité n'existe pas, un bouton me permet d'ouvrir un formulaire B en mode acDialog pour créer ce nouvel enregistrement.
Un Zdl.requery met ensuite la liste à jour.

Tout marche jusque là.


Mais j'aimerai maintenant que le nouvel enregistrement créé soit automatiquement sélectionné dans ma ZdL du formulaire A.
Voilà où j'en suis :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Ajout_Famille_Btn_Click()
    Dim SQL As String
    Dim RS As DAO.Recordset
    Dim db As DAO.Database
 
    OuvrirForm "Famille_ajout", acDialog
    Me.Famille_CmbBox.Requery
 
    Set db = CurrentDb
    SQL = "SELECT MAX(IdFamille) AS Id FROM Famille;"
    Set RS = db.OpenRecordset(SQL)
    Set db = Nothing
    Me.Famille_CmbBox = RS("Id")
    Set RS = Nothing
End Sub
Mais ça ne me satisfait pas car si on ne créé pas de nouvel enregistrement dans le formulaire B (Famille_ajout) et qu'on annule, ça sélectionne quand même le dernier créé (et qui n'a potentiellement rien à voir !).

Mais là, je bloque
Un peu d'aide pour organiser ça serait la bienvenue !
Tevsox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 11h05   #2
Membre confirmé
 
Avatar de spaiku
 
Chef de projet MOA
Inscription : septembre 2007
Messages : 191
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2007
Messages : 191
Points : 250
Points : 250
Question : quand tu crées un nouvel enregistrement, l'utilisateur renseigne un seul ou plusieurs champs ? S'il en renseigne un seul, tu peux passer par une inputbox. Tu peux ensuite tester la valeur retournée : si elle est nulle, tu quittes la fonction.
spaiku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 11h20   #3
Invité régulier
 
Homme
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 8
Points : 8
(Je n'ai pas précisé que le code que j'ai donné est dans mon formulaire A.)


J'ai ce cas de figure à plusieurs endroits : il y a toujours au moins un champ obligatoire à remplir que je peux tester.

En fait, je crois que tu pointe justement le problème spaiku.

Je ne sais pas comment tester, dans le formulaire A, ce que j'ai fais dans le formulaire B.
Il faudrait que je puisse passer l'information de l'un à l'autre quand je valide, mais je ne sais pas comment...
Actuellement, je ne fais qu'aller rechercher avec A dans la table ce que B vient de faire !
Tevsox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 11h29   #4
Membre confirmé
 
Avatar de spaiku
 
Chef de projet MOA
Inscription : septembre 2007
Messages : 191
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2007
Messages : 191
Points : 250
Points : 250
J'ai déjà eu le problème aussi. A l'époque, j'avais procédé de la manière suivante :
1) Dans le formulaire B, je déclare des variables de portée module. Disons qu'il n'y en a qu'une, et qu'elle s'appelle ValRetour, de type String
2) Dans le formulaire A, j'écris un truc du style :
Code :
1
2
3
4
5
6
7
8
Dim Frm as FormulaireB
Set Frm = New FormulaireB
FormulaireB.Visible = True
While FormulaireB.ValRetour = "" then
     DoEvents
Wend
'Traitement sur ValRetour
Set Frm = Nothing
3) Sur le formulaire B, tu as juste à renseigner la valeur de ValRetour, et le traitement se poursuit.
spaiku est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/02/2012, 09h32   #5
Invité régulier
 
Homme
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 8
Points : 8
Je ne connaissais pas cette façon de faire, je vais tester ça dès que possible
Tevsox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 15h04   #6
Invité régulier
 
Homme
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 8
Points : 8
Voilà, tout est bon, grâce à ton aide

Mon code du formulaire "père" :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Ajout_Famille_Btn_Click()
    Dim FormFamille As Form_Famille_ajout
    Dim Famille As String
 
    Set FormFamille = New Form_Famille_ajout
    FormFamille.Visible = True
    While FormFamille.ValRetour = ""
        DoEvents
    Wend
    Famille = FormFamille.ValRetour
    Set FormFamille = Nothing
    Famille_CmbBox.Requery
    Famille_CmbBox.Value = Famille
End Sub
Et dans le formulaire "fils", j'ai simplement fais :
Code :
Public ValRetour As String
Et j'affecte la valeur voulue à la validation.

Merci !
Tevsox 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 14h17.


 
 
 
 
Partenaires

Hébergement Web