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 25/05/2011, 13h00   #1
Membre régulier
 
Inscription : janvier 2011
Messages : 311
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 311
Points : 77
Points : 77
Par défaut Formule de comparaison récalcitrante

Bonjour à tous,

Je m'arrache les cheveux avec ce petit bout de code qui ne marche pas :

Il s'agît d'un code bouton qui permet de calculer et indiquer en euros une remise...

Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub BtnRemiseEuros_Click()
If IsNull(Me.Remise) = True Then
Me.Remise = 0
End If
If Me.Remise.Value > Me.TotalLigne.Value Then
MsgBox ("La remise introduite dépasse le prix total HT, veuillez introduire une somme égale ou inférieure au prix total HT"), vbCritical, "Remise incorrecte"
Me.Remise = 0
End If
Me.TauxRemise = Me.Remise & " €"
Me.TotalRemise = Me.Remise * 1
End Sub
Que je mette n'importe quelle somme dans le cadre "Remise" il interprète çà comme ne correspondant pas à la condition et me sors inlassablement le message d'erreur contenu dans le MSGBOX...

Que fais-je mal ?

Merci d'avance
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 17h00   #2
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Bonjour,

Si le test fait la valeur de Me.remise.value est > que Me.TotalLigne.Value il affiche le message.

Donc il faut mettre un point d'arrêt à hauteur du
Code :
If Me.Remise.Value > Me.TotalLigne.Value Then
et contineur en Pas Pas avec F8.
Quand vous avez appuyé une fois sur F8 vous passer le pointeur sur Me.remise.value et vous verrez dans une infobulle le contenu de la variable, idem pour l'autre et après essayer de comprendre pourquoi ces valeurs sont telles que vous les constatez.
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 01h59   #3
Membre régulier
 
Inscription : janvier 2011
Messages : 311
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 311
Points : 77
Points : 77
Je ne comprends pas votre réponse !

J'ai déjà analysé comme vous le dites, or l'analyse ne donne aucune indication dans ce cas...

Le message sort qu'il s'agisse d'un chiffre supérieur ou inférieur à celui à comparer, et pour moi , cela n'a aucun sens.

La comparaison ne marche donc pas.
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 02h16   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 962
Points : 30 962
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il peut s'agir d'un problème de type et tes données peuvent être interprétées comme du texte.

Essayes cela en utilisant une conversion de données.

Code :
If Cdbl(Me.Remise.Value) > Cdbl(Me.TotalLigne.Value Then)
Ce n'est qu'une hypothèse.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 12h17   #5
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Les champs nulls

Bonjour Chikandgo,

Je ne suis pas le plus fort en code, mais je crois quand même pouvoir t'aider.
Chaque fois que j'ai utilisé IsNull, j'y ai aussi laissé quelques cheveux, jusqu'à ce que je lise sur un forum, le pourquoi. Il paraît que c'est l'expression Null qui se propage.

Il faut pour résoudre cela évaluer, les champs qui peuvent avoir la valeur null avec Nz.

Pour ton cas, j'écrirais le code ainsi:

Code :
1
2
3
4
5
6
7
8
9
Private Sub BtnRemiseEuros_Click()
'Je crée une variable qui contiendra la valeur de ton champ Remise'
Dim VarRemise as variant
'Je lui attribue la valeur de Remise, et 0, si Remise est null'
VarRemise = nz(Remise, 0)
'Et je continue l'écriture du code avec la valeur contenue dans VarRemise'
If VarRemise = 0 then
Blablabla,
end sub
Je n'ai peut-être pas utilisé le bon type pour la variable, ce n'est peut-être pas la bonne réponse.

Je fais pourtant toujours ainsi quand j'ai à faire avec ce 'null' et ça marche.

Bien à toi

Marcel
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 18h47   #6
Membre régulier
 
Inscription : janvier 2011
Messages : 311
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 311
Points : 77
Points : 77
Citation:
Envoyé par Philippe JOCHMANS Voir le message
Bonjour

Il peut s'agir d'un problème de type et tes données peuvent être interprétées comme du texte.

Essayes cela en utilisant une conversion de données.

Code :
If Cdbl(Me.Remise.Value) > Cdbl(Me.TotalLigne.Value Then)
Ce n'est qu'une hypothèse.

Philippe
Ca marche nickel !

Je ne comprends tjs pas pourquoi ça faisait çà !
En tous cas, je vais l'utiliser le plus souvent possible ...

Merci mille fois !
clickandgo 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 15h30.


 
 
 
 
Partenaires

Hébergement Web