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 09/12/2010, 16h28   #1
Membre régulier
 
Guillaume
Inscription : décembre 2007
Messages : 161
Détails du profil
Informations personnelles :
Nom : Guillaume
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : décembre 2007
Messages : 161
Points : 91
Points : 91
Par défaut Modification de la valeur (numérique) par défaut d'un champ : '#Nom ?'

Bonjour !

Dans une application, je souhaite permettre à l'utilisateur de modifier les valeurs par défaut de 2 champs du formulaire "Analyse Std". Je précise que ces valeurs sont des réels doubles affichés au format pourcentage.

J'ai donc prévu un petit formulaire "Paramétrages" qui :
1- rapatrie les valeurs dans 2 champs indépendants à l'ouverture
Code :
1
2
3
4
    DoCmd.OpenForm "Analyse Std", acDesign, , , , acHidden
    Me.Param_EcartA.Value = CDbl(Replace(Forms("Analyse Std").EcartA.DefaultValue, ".", ","))
    Me.Param_EcartB.Value = CDbl(Replace(Forms("Analyse Std").EcartB.DefaultValue, ".", ","))
    DoCmd.Close acForm, "Analyse Std"
2- permet à l'utilisateur de changer celles-ci à sa convenance
3- enregistre les valeurs saisies comme nouvelles valeurs par défaut dans le formulaire "Analyse Std"
Code :
1
2
3
4
5
6
    DoCmd.OpenForm "Analyse Std", acDesign, , , , acHidden
    Forms("Analyse Std").EcartA.DefaultValue = Me.Param_EcartA.Value
    Forms("Analyse Std").EcartB.DefaultValue = Me.Param_EcartB.Value
    DoCmd.Save acForm, "Analyse Std"
    DoCmd.Close acForm, "Analyse Std"
    MsgBox "Les nouveaux paramétrages ont été sauvegardés avec succès !", vbInformation, "Paramètres mis à jour"

Le problème c'est qu'après cette procédure, le formulaire "Analyse Std" m'affiche #Nom ? dans les champs concernés.
Pourtant lorsque je vais consulter en mode édition les valeurs par défaut des champs, les données ont bien été reprises... et si je resaisis exactement les mêmes infos, les champs s'affichent à nouveau correctement...

Je mets une base exemple en pièce jointe pour être plus clair...
Fichiers attachés
Type de fichier : zip modif_valeurs_par_defaut.zip (20,8 Ko, 0 affichages)
dut-dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 17h52   #2
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 255
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 255
Points : 1 870
Points : 1 870
Bonsoir,

Je suis interloqué devant le replace(...,".",",")
Je pense que 2 numériques dans access sont dans le même standard régional !

J'écrirais donc plus simplement :
Code :
Param_EcartA = Forms("Analyse Std").EcartA.DefaultValue
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 10h00   #3
Membre régulier
 
Guillaume
Inscription : décembre 2007
Messages : 161
Détails du profil
Informations personnelles :
Nom : Guillaume
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : décembre 2007
Messages : 161
Points : 91
Points : 91
Citation:
Envoyé par nico84 Voir le message
Bonsoir,

Je suis interloqué devant le replace(...,".",",")
Je pense que 2 numériques dans access sont dans le même standard régional !

J'écrirais donc plus simplement :
Code :
Param_EcartA = Forms("Analyse Std").EcartA.DefaultValue
Malheureusement cette syntaxe est indispensable... (tu peux essayer toi même avec la base d'exemple du 1er message)

--------------

Pour revenir au problème : c'est bien le Forms("Analyse Std").EcartA.DefaultValue = Me.Param_EcartA.Value qu'il faut modifier.

Quand on sollicite l'aide d'Access au sujet de la propriété Valeur par défaut d'un champ on lit :
"Propriété DefaultValue : Spécifie une valeur String saisie automatiquement dans un champ[...]"
Ce ne serait cette histoire de String qui pose problème ?
dut-dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 19h01   #4
Membre régulier
 
Guillaume
Inscription : décembre 2007
Messages : 161
Détails du profil
Informations personnelles :
Nom : Guillaume
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : décembre 2007
Messages : 161
Points : 91
Points : 91
Ce que je ne comprends pas c'est que si j'essaie d'afficher la valeur par défaut de l'un des champs de Analyse Std, il me renvoie une valeur avec un point à la place de la virgule ???

Code :
MsgBox Forms("Analyse Std").EcartA.DefaultValue
C'est pour ça que j'utilise le Replace() et le CDbl() pour pouvoir reconvertir la valeur au format numérique (et l'afficher sous la forme d'un pourcentage)...
dut-dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 20h04   #5
Membre régulier
 
Guillaume
Inscription : décembre 2007
Messages : 161
Détails du profil
Informations personnelles :
Nom : Guillaume
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : décembre 2007
Messages : 161
Points : 91
Points : 91
J'ai finalement réussi à obtenir le fonctionnement désiré !

Comme je n'arrivais pas à faire comprendre à Access que je plaçais une valeur numérique dans la propriété DefaultValue des champs de Analyse Std, j'ai remplacé le contenu par "=CDbl('mavaleur')"

Du coup j'ai également dû construire une formule "capilotractée" pour récupérer une valeur numérique (affichée au format pourcentage) dans les champs de mon formulaire paramétrage...

Voici les lignes principales :
Code :
Forms("Analyse Std").EcartA.DefaultValue = "=CDbl('" & Me.Param_EcartA.Value & "')"
Code :
Me.Param_EcartA.Value = CDbl(Mid(Forms("Analyse Std").EcartA.DefaultValue, InStr(1, Forms("Analyse Std").EcartA.DefaultValue, "'", vbTextCompare) + 1, InStr(InStr(1, Forms("Analyse Std").EcartA.DefaultValue, "'", vbTextCompare) + 1, Forms("Analyse Std").EcartA.DefaultValue, "'", vbTextCompare) - InStr(1, Forms("Analyse Std").EcartA.DefaultValue, "'", vbTextCompare) - 1))
Je poste également la version corrigée de ma base exemple pour ceux que ça intéresse.
Fichiers attachés
Type de fichier : zip modif_valeurs_par_defaut(corrigée).zip (22,3 Ko, 2 affichages)
dut-dut 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 21h05.


 
 
 
 
Partenaires

Hébergement Web