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 06/07/2011, 10h33   #1
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 63
Points : 27
Points : 27
Par défaut Soucis pour dégriser un champ

Bonjour à tous,

Je rencontre un soucis que je ne comprends absolument pas. Je m'explique:

Je souhaite que 2 zones de texte de l'un de mes formulaires soient grisés et non modifiables lorsqu'ils contiennent des informations.
Mais aussi qu'ils soient nons grisés et modifiables lorsqu'ils sont vides.

Mon soucis:
Les zones de texte sont bien modifiables lorsqu'elles sont vides, et non modifiables lorsqu'elles sont remplies.
Par contre, elles sont grisées quelque soit le cas (vide ou rempli).

Voici mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Form_Load()
    Me.Zone_géographique.SetFocus
 
    If Me.N°_de_série = Empty Then
        Me.N°_de_série.Locked = False
        Me.N°_de_série.BackColor = RGB(255, 255, 255)
    Else
        Me.N°_de_série.Locked = True
        Me.N°_de_série.BackColor = vbButtonFace
    End If
 
    If Me.N°_national = Empty Then
        Me.N°_national.Locked = False
        Me.N°_national.BackColor = RGB(255, 255, 255)
    Else
        Me.N°_national.Locked = True
        Me.N°_national.BackColor = vbButtonFace
    End If
End Sub
Si jamais quelqu'un à une idée

facedeharicot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 11h32   #2
Membre du Club
 
Homme Pierrick
Étudiant
Inscription : avril 2011
Messages : 57
Détails du profil
Informations personnelles :
Nom : Homme Pierrick
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 57
Points : 45
Points : 45
Citation:
Envoyé par facedeharicot Voir le message
Bonjour à tous,

Je souhaite que 2 zones de texte de l'un de mes formulaires soient grisés et non modifiables lorsqu'ils contiennent des informations.
Bonjour!
Je ne suis pas certain, mais pourquoi ne pas utiliser la propriété .enabled des textbox?

Bonne journée!
koluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 14h59   #3
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 63
Points : 27
Points : 27
Merci pour ta réponse. J'avais bien pensé à .enabled mais ça ne fonctionne pas mieux :/

Mes Textbox sont bien activées et non verrouillées

Pour le moment j'ai un semblant de solution:
- j'ouvre mon formulaire vierge (nouvel enregistrement) grâce à un bouton situé sur un autre formulaire et je fais les actions suivantes:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub btnOpenNewForm_Click()
    'ouverture du formulaire frmAutoGestion
    DoCmd.OpenForm "frmAutoGestion"
 
    Forms!frmAutoGestion![N° de série].Locked = False
    Forms!frmAutoGestion![N° de série].BackColor = RGB(255, 255, 255)
 
    Forms!frmAutoGestion![N° national].Locked = False
    Forms!frmAutoGestion![N° national].BackColor = RGB(255, 255, 255)
 
    'Ajout d'une ligne dans la table en cours 
    DoCmd.GoToRecord , , acNewRec 
End Sub

Là où ça se gâte c'est lorsque je veux éditer un enregistrement:
Mes cases sont bien grisées mais qu'elles soient pleines ou vides comme si ma condition ne fonctionnait pas... Peut-être que mes actions sont à mettre ailleurs que dans le Form_Load ??
facedeharicot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h47   #4
Membre du Club
 
Homme Pierrick
Étudiant
Inscription : avril 2011
Messages : 57
Détails du profil
Informations personnelles :
Nom : Homme Pierrick
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 57
Points : 45
Points : 45
J'ai la tete dans le ... paté, alors je galère un peu à comprendre ce que tu veux faire. Corrige moi si je me trompe:
A l'ouverture du formulaire sur un nouvel enregistrement, il y a deux Textbox qui doivent être grisées et non modifiables si elle contiennent des données.
Si c'est bien sa, alors:
-si tu connais le nom des textbox qui doivent etres grisées, tu fais simplement:
Code :
1
2
3
4
5
6
7
 
if textbox1 <> "" then
textbox1.enabled = false
end if
if textbox2 <> "" then
textbox1.enabled = false
end if
-Si tu ne connais pas leur nom, alors il faut faire une boucle sur toutes les textbox, et utiliser le code ci-dessus.

De plus, tu dis qu'elles "restent grisées", vérifie les propriétés backcolor des textbox!

ps: Si t'y arrive toujours pas, tente de leur faire passer une nuit en cellule de dégrisement... (cf titre!)
koluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 09h02   #5
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 63
Points : 27
Points : 27
Merci beaucoup koluche

Pour clarifier les choses:
J'utilise la méthode de recherche multicritère de Cafeïne donc lors d'un double clic sur une des lignes de résultat de ma listbox, j'accède à un formulaire "frmAutoGestion" contenant les informations (liées à un enregistrement d'une table) sur ce que je cherche.
C'est lors de cette action que 2 de mes textbox doivent être grisées si occupées et non grissées si libres...

J'ai par ailleurs rajouter sur mon formulaire de recherche un bouton "Nouvelle entrée" qui m'ouvre mon formulaire "frmAutoGestion" mais cette fois, celui-ci est vierge donc aucune textbox n'est grisée...

Avec ce que tu m'as donné dans ton dernier message, tout fonctionne très bien.

J'ai dû cependant ajouter quelques lignes sur le click de mon bouton "Nouvelle entrée":

Code :
1
2
3
4
5
6
7
8
9
10
Private Sub btnOpenNewForm_Click()
    'ouverture du formulaire frmAutoGestion
    DoCmd.OpenForm "frmAutoGestion"
 
    Forms!frmAutoGestion![N° de série].Enabled = True
    Forms!frmAutoGestion![N° national].Enabled = True
 
    'Ajout d'une ligne dans la table en cours 
    DoCmd.GoToRecord , , acNewRec
End Sub
Voici le code contenu dans le Load de mon formulaire "frmAutoGestion" (ne pas faire atention au nommage de mes textbox

Code :
1
2
3
4
5
6
7
8
Private Sub Form_Load()
    If N°_de_série <> "" Then
        N°_de_série.Enabled = False
    End If
    If N°_national <> "" Then
        N°_national.Enabled = False
    End If
End Sub
Remplacer "= Empty" ou "= Null" par <> "" était effectivement LA solution

Merci encore pour l'aide, je reviendrai
facedeharicot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 09h12   #6
Membre du Club
 
Homme Pierrick
Étudiant
Inscription : avril 2011
Messages : 57
Détails du profil
Informations personnelles :
Nom : Homme Pierrick
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 57
Points : 45
Points : 45
De rien, bonne journée!
ps:n'oublie pas
A bientot.
koluche est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h22.


 
 
 
 
Partenaires

Hébergement Web