Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Général VBA

Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.

Réponse
 
Outils de la discussion
Vieux 14/05/2008, 11h31   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: février 2003
Messages: 27
Par défaut [VBA] Pb de Decimal

Bonjour,

J'effectue le code suivant pour forcer 1 chiffre apres la virgule

Code :
Function myfunction() As Double
 
  Dim myVar As Double
  '....
  'Calcul
  '....
  myfunction = Format(myVar, "0.0")
End Function

a) si myVar = 1.0 la valeur retourné par myFunction est 1
b) si myVar = 1.1 la valeur retournée par myFunction est 1.1

Que faut il faire pour dans le cas a) myFunction retourne 1.0 et non 1.

Merci d'avance
Kyles est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/05/2008, 11h49   #2 (permalink)
Membre régulier
 
Date d'inscription: mai 2008
Âge: 23
Messages: 136
Par défaut

Bonjour

une solution simple
met ta fonction qui renvoi un caractère

comme ca
Code :
 Function myfunction() As String


Salut

Dernière modification par AlainTech ; 14/05/2008 à 15h34 Motif: Balises [code], pas color!
nicolas_151 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/05/2008, 09h03   #3 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 024
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonjour

Personnellement, je ne vois pas l'utilité d'une fonction pour cela... Peux-tu détailler ce que tu souhaites réaliser?
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 21/05/2008, 13h31   #4 (permalink)
Membre à l'essai
 
Date d'inscription: mai 2007
Messages: 49
Par défaut

c'est simple, il suffit de vérifié changer le chiffre avant la virgule par 0 et de vérifier que la valeur obtenu =0 si oui, changer le format de myVar

Pour changer le 1er chiffre il y a 2 solutions :
1) récupérer ce qu il y a après la virgule et le concaténer avec 0

2) faire une boucle dans laquelle tu retire 1 à ta variable à chaque fois jusqu'à ce qu'elle soit inférieure à 1
vince6262 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/05/2008, 18h44   #5 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 024
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonsoir Vince6262

Heu... C'est quoi le lien avec la question initiale? moi, je ne vois pas...
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 23/05/2008, 19h52   #6 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 2 955
Par défaut

Bonjour,

Code :
Private Sub Command1_Click()
  MsgBox myfunction(1)
  MsgBox myfunction(1.1)
  MsgBox myfunction(25.3)
  MsgBox myfunction(137)
End Sub
 
Function myfunction(coucou As Double) As String
  Dim couic As String
  couic = Str(coucou)
  myfunction = Format(coucou, "#.0")
End Function
__________________
Je ne regarde ni n'analyse aucun fichier joint, mais uniquement les portions de code incluses et donc affichées et commentées dans une discussion.
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/05/2008, 06h21   #7 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 024
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonjour Ucfoutu

Je ne vois pas l'intérêt de passer par une variable string
Code :
Function myfunction(coucou As Double) As String
  myfunction = Format(coucou, "#.0")
End Function
 
fonctionne très bien, d'où ma question sur l'utilité d'une fonction de ce genre (sauf dans le cas d'un exercice ultra basique dont, en tant que formateur, je ne saisis pas la porté pédagogique...)

Pour ma part, créer une fonction d'une ligne qui sera appelée par une ligne de code pour remplacer une ligne de code qui appellerait directement la fonction Format me semble totalement absurde... Sauf à découvrir les vraies (et complètes) motivations de Kiles...
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 24/05/2008, 09h09   #8 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 2 955
Par défaut

Bonjour, Pierre Fauconnier,

J'ai simplement oublié d'effacer les 2 lignes avec couic (dont tu auras remarqué que je ne l'utilise pas )

Pour le reste, ce n'était qu'un exemple, car notre ami parle de calculs dans sa fonction (à laquelle il ne passe curieusement aucun paramètre...)
__________________
Je ne regarde ni n'analyse aucun fichier joint, mais uniquement les portions de code incluses et donc affichées et commentées dans une discussion.
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/05/2008, 09h12   #9 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 024
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonjour ucfoutu,

Comme Kiles ne donne pas signe de vie depuis le 14, je vais attendre qu'il se manifeste...

Bon week-end.
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 05/06/2008, 16h28   #10 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: février 2003
Messages: 27
Par défaut [Resolu]

Bonjour,

Citation:
Envoyé par Pierre Fauconnier Voir le message
Bonjour ucfoutu,

Comme Kiles ne donne pas signe de vie depuis le 14, je vais attendre qu'il se manifeste...

Bon week-end.
Désolé pour le temps de réponse

Citation:
Envoyé par ucfoutu Voir le message
Bonjour, Pierre Fauconnier,
Pour le reste, ce n'était qu'un exemple, car notre ami parle de calculs dans sa fonction (à laquelle il ne passe curieusement aucun paramètre...)
la fonction en elle même ne sert à rien.. je devais être fatigué ce jour là...

Le problème se présentait lorsque la valeur apres la virgule est 0
Je souhaitais, que le nombre affiché soit N.x pour x = 0...n

si N = 1.0 alors la valeur affichée est 1 (KO)
SI N = 1.1 la valeur affichée est 1.1 (OK)

réponse ci-dessous :

Code :
 
Public Sub test2()
 
    Dim myvar As Double
    
    myvar = 1.1
    
    Debug.Print myvar
    
    myvar = 1
    
    Debug.Print Format(myvar, "#.0")
End Sub
Merci pour votre aide.
Kyles est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Général VBA

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide