Précédent   Forum des professionnels en informatique > 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.
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 14/05/2008, 11h31   #1
Invité régulier
 
Inscription : février 2003
Messages : 27
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 27
Points : 7
Points : 7
Par défaut [VBA] Pb de Decimal

Bonjour,

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

Code :
1
2
3
4
5
6
7
8
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 00
Vieux 14/05/2008, 11h49   #2
Membre habitué
 
Étudiant
Inscription : mai 2008
Messages : 130
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 130
Points : 146
Points : 146
Bonjour

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

comme ca
Code :
 Function myfunction() As String


Salut
nicolas_151 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 09h03   #3
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 202
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 202
Points : 14 410
Points : 14 410
Envoyer un message via Skype™ à Pierre Fauconnier
Bonjour

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

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 13h31   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 13
Points : 13
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 00
Vieux 21/05/2008, 18h44   #5
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 202
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 202
Points : 14 410
Points : 14 410
Envoyer un message via Skype™ à Pierre Fauconnier
Bonsoir Vince6262

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

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 19h52   #6
Inactif
 
Inscription : juillet 2007
Messages : 4 555
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4 555
Points : 5 002
Points : 5 002
Bonjour,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
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
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2008, 06h21   #7
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 202
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 202
Points : 14 410
Points : 14 410
Envoyer un message via Skype™ à Pierre Fauconnier
Bonjour Ucfoutu

Je ne vois pas l'intérêt de passer par une variable string
Code :
1
2
3
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...
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2008, 09h09   #8
Inactif
 
Inscription : juillet 2007
Messages : 4 555
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4 555
Points : 5 002
Points : 5 002
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...)
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2008, 09h12   #9
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 202
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 202
Points : 14 410
Points : 14 410
Envoyer un message via Skype™ à Pierre Fauconnier
Bonjour ucfoutu,

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

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

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 16h28   #10
Invité régulier
 
Inscription : février 2003
Messages : 27
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 27
Points : 7
Points : 7
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
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 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h14.


 
 
 
 
Partenaires

Hébergement Web