Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 29/11/2010, 23h09   #1
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
Par défaut Code VBA de "Affichage modal"

Bonsoir à tous!

Je m'interroge sur une info de la FAQ (par Tofalu):
Citation:
Il faut définir la propriété Affichage modale du formulaire à Oui.

L'utilisateur ne pourra ainsi accéder à un autre formulaire tant qu'il n'aura pas fermé celui-ci.
Y a t'il moyen de changer la notion d'affichage modal par code vba?

En effet j'ai un formulaire à onglets avec plein de sous-formulaires dans chaque onglet et j'aimerais empêcher l'utilisateur de quitter le sous-formulaire en cours tant qu'il n'a pas rempli qlq champs.

Merci d'avance
Cinesra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 23h13   #2
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
Me.modal = true/false ne marche pas: lorsque j'appuie sur la touche Entrée après avoir rempli un champ texte pour passer au champ texte suivant, le champ suivant est illisible (apparement je peux écrire mais je ne vois pas ce que j'écris!!!).

Une idée qlqun?
Cinesra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 00h57   #3
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
Apparemment en se servant de l'événement Avant mise à jour (avant MAJ), on peut arriver à qlqchose.

Quelqu'un a une autre idée?
Cinesra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 10h16   #4
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Bonjour.
Est ce que mettre les propriétés du sous formulaire:
Fenêtre modale: Oui
Bouton fermer: Non
puis d'ajouter dans le sous formulaire un bouton "Sortie" qui soit rendu visible lorsque les champs devant être renseignés le sont effectivement ne conviendrait-il pas?
Cordialement.
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 16h24   #5
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Suite...
En faisant des essais de parcours de la collection forms (collection des formulaires ouverts) pour l'appli que je développes actuellement, je me suis rendu compte que ce code permettait de modifier par VBA la propriété modale d'un formulaire
Code :
1
2
3
4
5
6
7
8
9
Sub test3()
  Dim MyForm As Form
  Dim i As Integer
  For Each MyForm In Forms
    If MyForm.name = "Formulaire2" Then Forms(i).Modal = False
    Debug.Print MyForm.name
    i = i + 1
 Next
End Sub
Cordialement
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 16h44   #6
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
Merci pour tes réponses PapouDomi, j'ai bien essayé d'utiliser Me.modal = true/false (Me faisant référence à mon sous-formulaire en cours d'utilisation) mais je rencontre des problèmes lors des changement de focus entre mes zones de texte.

Du coup, pour l'instant j'utilise la propriété BeforeUpdate (après Mise A Jour/MAJ) en tachant de prévoir absolument toutes les sorties de zone de texte possible (lost focus, fermeture du formulaire, sortie du sous-formulaire, clic sur un bouton Next/Back, ...etc)...pas facile et très long (une vraie prise de tête en somme!).

Merci quand même
Cinesra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 19h08   #7
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Par défaut à tester

Bonjour,

Je ne pense pas que la notion de formulaire modal ait un sens pour un sous-formulaire.
L'attribut modal s'applique à la fenêtre d'un formulaire.
Or un sous-formulaire est incorporé dans un contrôle sous-formulaire.

Pour empêcher de quitter un contrôle sous-formulaire on peut jouer sur l'événement "Sur Sortie" du contrôle.

Code :
1
2
3
4
5
6
7
8
Private Sub CtlSousFormulaire_Exit(Cancel As Integer)
Dim bSortiePermise As Boolean
 
bSortiePermise = ... logique à coder ...
 
Cancel = Not bSortiePermise
 
End Sub
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 00h33   #8
Nouveau Membre du Club
 
Inscription : novembre 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 105
Points : 36
Points : 36
Je me suis servi des événements AfterUpdate et LostFocus pour finir

LostFocus englobe les cas: appuie sur touche entrée, clic sur une autre zone du sous-formulaire, quit de la base de donnée ou du formulaire principal.

AfterUpdate prends en compte le fait de clicker sur un autre onglet ou en dehors du sous-formulaire.
Cinesra 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 01h48.


 
 
 
 
Partenaires

Hébergement Web