Garder les 0 apres la virgule....
Résolu
GermPeru
Messages postés
172
Date d'inscription
Statut
Membre
Dernière intervention
-
GermPeru Messages postés 172 Date d'inscription Statut Membre Dernière intervention -
GermPeru Messages postés 172 Date d'inscription Statut Membre Dernière intervention -
Bonjour a tous,
Mon probleme est le suivant:
J' ai des formules dans une feuille, je souhaite récupérer la valeur du résultat ainsi que son format.
Par exemple le résultat est 2.000, je souhaite garder les 3 zéro aprés la virgule.
Si il y a avait toujours le meme format ca serait plus simple mais je peux avoir de 3 a 5 decimales et mon nombre de zero est utile pour determiner mon nombre de chiffre significatif pour des calculs futur.
J´ai essayé le len, mais dans mon exemple du 2.000 il m´indique 1, et ne prend pas en compte les zero, j´ai essayé de changé en string ma valeur pour le len mais rien y fait.
Je ne pense pas que cela soit si compliqué mais je n´y suis pas arrivé alors un petit coup de main ne serait pas de refus!
Merci d ' avance!
Mon probleme est le suivant:
J' ai des formules dans une feuille, je souhaite récupérer la valeur du résultat ainsi que son format.
Par exemple le résultat est 2.000, je souhaite garder les 3 zéro aprés la virgule.
Si il y a avait toujours le meme format ca serait plus simple mais je peux avoir de 3 a 5 decimales et mon nombre de zero est utile pour determiner mon nombre de chiffre significatif pour des calculs futur.
J´ai essayé le len, mais dans mon exemple du 2.000 il m´indique 1, et ne prend pas en compte les zero, j´ai essayé de changé en string ma valeur pour le len mais rien y fait.
Je ne pense pas que cela soit si compliqué mais je n´y suis pas arrivé alors un petit coup de main ne serait pas de refus!
Merci d ' avance!
A voir également:
- Garder les 0 dans un fichier csv
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
Bonjour à tous les deux
Car je qualifierai ton style d´ecriture comme assez profesionnel!
Je te trouve un peu dur avec yves qui essaies de t'aider, il est difficile d'y voir clair sans avoir un/des exemple/s (réels) de ton problème ou sans boule de cristal efficace ;-)
Peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
Cdlmnt
Car je qualifierai ton style d´ecriture comme assez profesionnel!
Je te trouve un peu dur avec yves qui essaies de t'aider, il est difficile d'y voir clair sans avoir un/des exemple/s (réels) de ton problème ou sans boule de cristal efficace ;-)
Peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
Cdlmnt
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, une piste de réflexion (cela ne marche pas pour tous les formats):
Format(ActiveSheet.Cells(10, 10).Value, ActiveSheet.Cells(10, 10).NumberFormat)
Bonjour GermPeru,
Ce code VBA devrait t'aider :
Merci de me donner ton avis.
Ce code VBA devrait t'aider :
Option Explicit Function SetNb(r As Double, n As Byte) As String SetNb = Format(r, "0." & String$(n, "0")) End Function Sub Essai() Dim r As Double: r = 2 MsgBox SetNb(r, 3) MsgBox SetNb(r, 5) MsgBox SetNb(r, 1) End Sub
Merci de me donner ton avis.
Sur une feuille vierge, entre 2 en B2 (par exemple) ; et mets-lui
ce format simple : Nombre avec 3 décimales => 2,000
Mon code VBA retournera 3 pour 3 décimales, mais attention :
ça ne marche que pour des formats de nombres simples ;
pas pour d'autres ; tels que : 0.000;-0.000;;
Essaye ce code VBA :
Option Explicit Function Nb0(cellX As Range) As Byte Dim chn As String, p As Byte, n As Byte chn = cellX.NumberFormat: p = InStr(chn, "."): n = Len(chn) - p If Right$(chn, n) = String$(n, "0") Then Nb0 = n End Function Sub Essai() MsgBox Nb0([B2]) End Sub
Pour des formats plus complexes, à toi de voir selon les formats
(personnalisés ou non) qui sont utilisés par ta feuille de calcul.
Bonjour Yves,
J' ai essayé de comprendre ton code avant de te répondre avec précipitation. Car je qualifierai ton style d´ecriture comme assez profesionnel!
De plus j´ai fait différents tests, donc la grande partie du temps j´ai ma cellule en format texte, a partir de ce moment la ta fonction ne fonctionne plus car il ne détecte pas les 0 en fin et j´ai essayé en format général avec ajout de 3 0 aprés la virgule et de meme le msgbox m´indique 0?
Pourrais tu m´en dire un peu plus stp.
Merci Yves
J' ai essayé de comprendre ton code avant de te répondre avec précipitation. Car je qualifierai ton style d´ecriture comme assez profesionnel!
De plus j´ai fait différents tests, donc la grande partie du temps j´ai ma cellule en format texte, a partir de ce moment la ta fonction ne fonctionne plus car il ne détecte pas les 0 en fin et j´ai essayé en format général avec ajout de 3 0 aprés la virgule et de meme le msgbox m´indique 0?
Pourrais tu m´en dire un peu plus stp.
Merci Yves
Bonjour GermPeru,
Si la cellule B2 est en format texte, et que tu utilises le point comme
séparateur décimal, alors pour 2.000 et pour 2.375 : retour 3, avec
ce nouveau code VBA :
Option Explicit Function Nb0(cellX As Range) As Byte Dim p As Byte: p = InStr(cellX, ".") If p > 0 Then Nb0 = Len(cellX) - p End Function Sub Essai() MsgBox Nb0([B2]) End Sub
Si tu utilises la virgule comme séparateur décimal,
mettre : p = InStr(cellX, ",")
À te lire pour avoir ton avis.
Bonjour Yves,
Dans la cellule de mon document source j´ai une formule selon un fomat, j´ai utilisé ta fonction et cela m´indique toujours 0... Je ne comprends pas trop.
Je rsume:
-document source protéger mais je peux copier les info
-formule dans ma cellule cible
-format general de ma cellule cible 2.000, j´ai vérifié et ce n´est pas une ","
Resultat de ta fonction = 0
Resultat de .value = 2
Merci de ton aide
Dans la cellule de mon document source j´ai une formule selon un fomat, j´ai utilisé ta fonction et cela m´indique toujours 0... Je ne comprends pas trop.
Je rsume:
-document source protéger mais je peux copier les info
-formule dans ma cellule cible
-format general de ma cellule cible 2.000, j´ai vérifié et ce n´est pas une ","
Resultat de ta fonction = 0
Resultat de .value = 2
Merci de ton aide
Concernant yves et son style d´écriture pro je le disais comme un compliment, et j´espére qu il l'a interprété tel quel!
Concernant mon fichier il est un peu lourd mais voici le bout de code:
Avant tout ce que je fais c´est ouvrir un fichier et rechercher certaines info au sein de ce fichier et j´essaye de les enregistrer dans un array
Je suis ouvert a toute forme de critique car c´est la premiere fois que j´utilise une variable tableau. De plus voyant mon style d´écriture tu comprendras pourquoui je qualifie celui de yves comme "pro"!
Mais la ligne concernant ma question est la suivante:
Merci d´avance!
Bonjour GermPeru,
Merci d'avoir qualifié mon style d'écriture de professionnel, ce qui est
d'ailleurs le cas de nombreux autres intervenants du site CCM.
Lis mon message du 25 juillet à 22:15, puis n'oublie pas de revenir à celui-ci :
le fichier Excel joint ci-après contient ton code VBA réécrit et commenté
(tu sais déjà qu'il faut faire Alt F11 pour aller sur Microsoft Visual Basic).
https://mon-partage.fr/f/yYlRMK5u/
⚠ Comme il manque 2 indications dans ton extrait de code, il faudra
les ajouter avant d'utiliser mon code VBA (impératif) ; c'est indiqué
très clairement dans les commentaires.
Il y aura peut-être une ou deux adaptations à faire.
Merci de me donner ton avis.