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 > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 09/10/2008, 13h44   #1 (permalink)
Débutant(e)
 
Date d'inscription: septembre 2005
Messages: 122
Par défaut Problème format de variable

Bonjour,

je souhaiterais recuperer seulement les decimales d'un chiffre.

exemple : 4500.23

recuperer que 23.

Je ne vois pas trop comment faire ...

Merci d'avance.
cchampion2fr est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 14h03   #2 (permalink)
Membre éprouvé
 
Date d'inscription: juillet 2004
Messages: 436
Envoyer un message via MSN à helios77
Par défaut

tu veux faire çà selon une formule Excel ou par du code VBA ?
Tes décimales, y en aura toujours que 2 ?
helios77 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 14h06   #3 (permalink)
Débutant(e)
 
Date d'inscription: septembre 2005
Messages: 122
Par défaut

par du code vba!
sur excel c'est trop facile
Oui 2 decimales.

Je recupere en fait le chiffre dans une variable toto.
cchampion2fr est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 14h12   #4 (permalink)
Membre éprouvé
 
Date d'inscription: juillet 2004
Messages: 436
Envoyer un message via MSN à helios77
Par défaut

Tu peux essayer ceci

Code :
 
Dim toto As Double
toto = 4025.83
toto = toto - CInt(toto)
If toto < 0 Then toto = toto + 1
 
MsgBox Round(toto * 100)
 
helios77 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 14h16   #5 (permalink)
Débutant(e)
 
Date d'inscription: septembre 2005
Messages: 122
Par défaut

merci..
mais pas un truc plus simple..?? formatage cellule par exemple
cchampion2fr est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 15h04   #6 (permalink)
Débutant(e)
 
Date d'inscription: septembre 2005
Messages: 122
Par défaut

Je viens d'essayer ca ne marche pas...

qq a une idee pour recuperer les decimales svp?
cchampion2fr est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 15h46   #7 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 3 109
Par défaut

Bonjour,
Si ton séparateur est bien le point et que ce que tu récupères est bien de type numérique (et pas string) :

Code :
Dim toto As Single, resul As Single
 toto = 4025.83
 'Il est iumportant de passer par resul déclaré en single (sinon ===>> 82.999999....)
 resul = (toto - Int(toto)) * 100
 MsgBox resul
que tu pourraus d'ailleurs faire également ainsi :

Code :
resul = (toto * 100 Mod Int(toto))
__________________
Deux points essentiels à mes yeux :
1) 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.
2) j'abandonne carrément (et sans appel) ma participation à une discussion dès lors qu'est posée une seconde question différente de la première (et ce, même si, dans l'esprit du demandeur, la 2ème est "complémentaire" de la 1ère).
3) ATTENTION : si je reçois un MP relatif à une question technique sans mon consentement ou mon invite à le faire ===>> a) je n'y réponds pas et b) je fais en sorte que l'expéditeur ne puisse plus m'adresser de MP
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 18h00   #8 (permalink)
Débutant(e)
 
Date d'inscription: septembre 2005
Messages: 122
Par défaut

Cela marche mais pas du tout si on a des 0 apres la virgule.

Exemple : 0.0005666
Recuperer les 4 premiers chiffres apres la virgule..

je ne vois pas comment faire!!
qq a une idee?
Merci
cchampion2fr est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 18h12   #9 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 112
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonjour

C'est avant tout un problème de math (voire un problème d'arithmétique)

Il faut vraiment y mettre du tien si tu ne veux pas décourager les contributeurs de ce forum...

Code :
Sub Test()
Dim toto
Dim nombre
 
toto = 45.0056788
nombre = 4
toto = Int((toto - Int(toto)) * 10 ^ nombre)
toto = Format(toto, String(nombre, "0"))
End Sub

Si tu veux 5 décimales, tu adaptes en modifiant la valeur de Nombre...

Forme condensée
Code :
toto = 45.0056788
nombre = 4
toto = Format(Int((toto - Int(toto)) * 10 ^ nombre), String(nombre, "0"))
Question (sans me vouloir blessant): Comprends-tu ce code ou te contentes-tu de l'appliquer sans le comprendre?

Ceci n'est jamais que le regroupement de tes nombreuses questions qui tirent tous azimuts. Tu dois, si tu veux progresser, comprendre ce que tu fais et empiler tes briques de connaissances...
__________________
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.

Dernière modification par Pierre Fauconnier ; 09/10/2008 à 18h26
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 18h17   #10 (permalink)
Membre Expert
 
Avatar de jacques_jean
 
Date d'inscription: janvier 2006
Localisation: St Cyr s/mer (83)
Âge: 64
Messages: 1 264
Par défaut

Bonjour,

Helios77 :

Citation:
Tes décimales, y en aura toujours que 2 ?
Votre réponse :

Citation:
Oui 2 decimales.
et maintenant :

Citation:
Cela marche mais pas du tout si on a des 0 apres la virgule.

Exemple : 0.0005666
Recuperer les 4 premiers chiffres apres la virgule..
???????

Heureusement qu'il y a des répondeurs persévérants.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu la réponse à votre question.
jacques_jean est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 18h22   #11 (permalink)
Débutant(e)
 
Date d'inscription: septembre 2005
Messages: 122
Par défaut

merci.

je comprenais le truc avant mais là c'est quand meme different je trouve....

je ne poserai pas des questions sans avoir cherché au prealable qd meme...!

desole.

Jacques jean-->je ne travaille pas que sur une seul probleme..et oui il n'y avait que 2 decimales dans ce que je voulais au debut mais dans la suite et dans un autre fichier que je devais traité, les 4 chiffres apres la virgules sont apparus pour 4....

je dois retravailler apres le chiffre en plus donc ca perturbe aussi pas mal...bref merci!

Dernière modification par Pierre Fauconnier ; 09/10/2008 à 19h33 Motif: Merci d'éditer le message pour le modifier ou le compléter
cchampion2fr est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 18h31   #12 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 3 109
Par défaut

Citation:
Envoyé par cchampion2fr Voir le message
merci.

je comprenais le truc avant mais là c'est quand meme different je trouve....

je ne poserai pas des questions sans avoir cherché au prealable qd meme...!

desole.
Et alors ,
Des méthodes différentes, tu en trouveras autant que tes neurones les chercheront...
En voilà une autre :
Code :
Dim toto As Double, totostr As String
toto = 45.0056788
totostr = Trim(Str(toto))
MsgBox Mid(totostr, InStr(totostr, ".") + 1)
et on peut en inventer d'autres...
Celle-là aura pour seul mérite celui de te forcer à étudier, dans ton aide en ligne, Mid, Trim, Str et Instr ...

Que celà te perturbe "pas mal" est normal... comme est normal que le développement n'est pas une partie de marelle...
Pour l'instant, nous sommes ceux qui sommes perturbés... par ton flot de questions "pas à pas" qui donne l'impression que ton développement n'est précédé d'aucune analyse... comme si tu avançais sans même savoir où tu veux aller exactement... C'est plutôt gênant.
__________________
Deux points essentiels à mes yeux :
1) 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.
2) j'abandonne carrément (et sans appel) ma participation à une discussion dès lors qu'est posée une seconde question différente de la première (et ce, même si, dans l'esprit du demandeur, la 2ème est "complémentaire" de la 1ère).
3) ATTENTION : si je reçois un MP relatif à une question technique sans mon consentement ou mon invite à le faire ===>> a) je n'y réponds pas et b) je fais en sorte que l'expéditeur ne puisse plus m'adresser de MP
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 18h36   #13 (permalink)
Membre habitué
 
Avatar de Ormonth
 
Date d'inscription: février 2008
Localisation: Loire Atlantique
Messages: 164
Par défaut

Bonsoir,

Une autre piste (pas une soluce) qui se moque du nombre de décimale, pour peu qu'il y en ait

Code :
Sub gg()
Dim toto As Variant
 
toto = CStr(Cells(8, 2))
toto = Mid(toto, InStr(toto, ".") + 1)
toto = Val(toto)
MsgBox toto
 
End Sub
à décortiquer avec F1 sur les mots clefs et en réfléchissant sur le choix du séparateur de décimales

cordialement,

Didier
__________________
Didier Gonard

N'oubliez pas de mettre : ..quand c'est le cas !

Dernière modification par Caro-Line ; 09/10/2008 à 18h38 Motif: Et les balises code alors ?
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBAACCESS

Réponse

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

 
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