Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2699 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Format des variables sous VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Format des variables sous VB

n°1735163
scaryfan
Apple Inside
Posté le 21-05-2008 à 13:05:02  profilanswer
 

:hello:  
 
Je relance un nouveau topic car j'ai réellement beaucoup de mal à formater mes variables.
 
Je récapitule ce que je suis en train de créer.
J'ai une feuille de calcul dans laquelle j'ai un tableau avec 70 lignes (70 entités) et quelques 40 colonnes (REVENUS et DEPENSES).
Exemple :
 
                    Revenus                Dépenses
Entité1          15 452.25               8 451.75
Entité2          10 000.45               6 215.03
...
 
J'ai créé une boîte de dialogue pour chaque intervenant saisisse les données relatives aux entités qu'il gère. L'intervenant choisit dans une liste déroulante l'entité, la macro récupère les montants REVENUS et DEPENSES éventuellement saisis auparavant et les mets dans les variables REVENUS et DEPENSES... qui sont formatées ensuite avec 2 décimales.
 
Je teste actuellement celle-ci et je n'ai pas trop de soucis pour entrer choisir l'entité, entrer les montants (REVENUS et DEPENSES).
 
Par contre, comment formater une bonne fois pour toutes les variables REVENUS et DEPENSES ?
Car lorsque je modifie REVENUS ou DEPENSES, le montant - lorsqu'il est entier - n'apparaît pas avec les centimes (exemple pour 4 000, il m'affiche 4 000 et non 4 000,00).
Et lorsque je saisis un chiffre avec des décimales, il faut utiliser la virgule du clavier ALPHA et non le point du clavier NUM...
 
Alors je me demande s'il n'y a pas une manière définitive pour que toutes les variables soient au format avec 2 décimales, à la création comme à la modification...
 
Merci de votre aide...


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
mood
Publicité
Posté le 21-05-2008 à 13:05:02  profilanswer
 

n°1735173
Xxxaaavvv
Posté le 21-05-2008 à 13:20:06  profilanswer
 

heu tu peux affecter un formatage à une cellule excel (définitivement)
mais pas à une variable VB.

n°1735177
scaryfan
Apple Inside
Posté le 21-05-2008 à 13:24:09  profilanswer
 

Xxxaaavvv a écrit :

heu tu peux affecter un formatage à une cellule excel (définitivement)
mais pas à une variable VB.


 
Alors y a-t-il une méthode pour que dans la macro, le point du clavier numérique devienne une virgule à chaque fois que l'on clique dessus.


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
n°1735181
kiki29
Posté le 21-05-2008 à 13:26:58  profilanswer
 

salut


    Cells(1, 1) = Format(UserForm1.TextBox1.Text, "0.00" )
    .....
    Cells(1, 2).NumberFormat = "0.00"


 
sinon concernant la saisie dans une UserForm t'inspirer de http://cjoint.com/?fvnKbRVqtB particulièrement saisie décimale ou un seul séparateur décimal est permis, et ou la virgule se substitue au point si on utilise le pavé numérique

Message cité 1 fois
Message édité par kiki29 le 21-05-2008 à 13:36:10
n°1735186
scaryfan
Apple Inside
Posté le 21-05-2008 à 13:34:17  profilanswer
 

En fait, dans ma boîte de dialogue, il y a une variable qui est la somme des REVENUS (idem pour DEPENSE).
Avec le code que tu m'as donné avant-hier, le total se recalcule automatiquement dès que je modifie REVENUS ou DEPENSES...
Le hic, c'est que si je tape 45.25 (avec le point du clavier num), le calcul ne se fait plus...
 
Exemple :
J'ai 0 et 0 dans les deux variables REVENUS et DEPENSES. Le total est donc de 0... logique.
Dès que je saisis, un montant dans l'une ou l'autre des variables, le total changent dynamiquement... super...
Si je saisis 100 (sans centimes) dans REVENUS, le total passe à... 100,00... avec une virgule.
Si je vais dans DEPENSES et que je saisisse 75.64, le total change jusqu'au 5 mais se remet à son état avant saisie lorsque je tape le point du clavier num... (avec la virgule du clavier alpha, ça fonctionne jusqu'au bout)...
 
J'espère que c'est clair mon petit texte ???  :D  
 
Ou alors, il faut que je formate tout avec des points...
Les variables sont formatées avec Format(..., "##,##0.00" )
 
 :??:


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
n°1735196
Xxxaaavvv
Posté le 21-05-2008 à 13:42:49  profilanswer
 

c'est un autre problème :D
 
en fait la conversion de chainde caractère ne passe pas avec le "."
(il prend zero a la place...)
 
c'est la fonction que je t'ai fait rajouter qu'il faut adapter...
 
je te la reposte assez vite.


Message édité par Xxxaaavvv le 21-05-2008 à 13:43:09
n°1735202
scaryfan
Apple Inside
Posté le 21-05-2008 à 13:49:33  profilanswer
 

kiki29 a écrit :

salut


    Cells(1, 1) = Format(UserForm1.TextBox1.Text, "0.00" )
    .....
    Cells(1, 2).NumberFormat = "0.00"


 
sinon concernant la saisie dans une UserForm t'inspirer de http://cjoint.com/?fvnKbRVqtB particulièrement saisie décimale ou un seul séparateur décimal est permis, et ou la virgule se substitue au point si on utilise le pavé numérique


 
Effectivement, dans ton exemple, lorsque j'exécute la macro et que je saisis dans le champ "Décimal", lorsque je tape des nombres avec le clavier, le point devient illico une virgule... c'est ce qu'il me faut...
J'ai donc insérer le code correspond dans ma Userform :
 

Code :
  1. Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  2.     If KeyAscii = Asc(Point) Then
  3.         If InStr(TextBox1, Virgule) = 0 Then
  4.             KeyAscii = Asc(Virgule)
  5.         Else
  6.             KeyAscii = 0
  7.         End If
  8.     ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
  9.         KeyAscii = 0
  10.     ElseIf InStr(TextBox1, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
  11.         KeyAscii = 0
  12.     End If
  13.    
  14.     If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
  15. End Sub


 
et j'ai remplacé TextBox1 par le nom de ma variable... mais ça ne marche pas...  :(  
j'ai le message : "Erreur d'exécution '5'   Argument ou appel de procédure incorrect" et le débogueur surligne "If KeyAscii = Asc(Point) Then "
 
Qu'est-ce qui ne va pas ?


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
n°1735204
Xxxaaavvv
Posté le 21-05-2008 à 13:51:39  profilanswer
 

tu peux aussi remplacer ma fonction par cette nouvelle :
 

Code :
  1. Public Function dblConversion(strValeur As String) As Double
  2.    Dim strValeurAVirgule As String
  3.  
  4.    If InStr(strValeur, "." ) Then
  5.       strValeurAVirgule = Left(strValeur, InStr(strValeur, "." ) - 1) & "," & Right(strValeur, Len(strValeur) - InStr(strValeur, "." ))
  6.    End If
  7.    If IsNumeric(strValeurAVirgule) Then
  8.       dblConversion = CDbl(strValeurAVirgule)
  9.    Else
  10.       dblConversion = 0
  11.    End If
  12. End Function


 
ce qui te permet de saisir des point ou des virgules indifférement
(le point est converti en virgule de manière interne)

n°1735206
scaryfan
Apple Inside
Posté le 21-05-2008 à 13:55:33  profilanswer
 

Xxxaaavvv a écrit :

tu peux aussi remplacer ma fonction par cette nouvelle :
 

Code :
  1. Public Function dblConversion(strValeur As String) As Double
  2.    Dim strValeurAVirgule As String
  3.  
  4.    If InStr(strValeur, "." ) Then
  5.       strValeurAVirgule = Left(strValeur, InStr(strValeur, "." ) - 1) & "," & Right(strValeur, Len(strValeur) - InStr(strValeur, "." ))
  6.    End If
  7.    If IsNumeric(strValeurAVirgule) Then
  8.       dblConversion = CDbl(strValeurAVirgule)
  9.    Else
  10.       dblConversion = 0
  11.    End If
  12. End Function


 
ce qui te permet de saisir des point ou des virgules indifférement
(le point est converti en virgule de manière interne)


 
C'est bizarre car maintenant le total automatique ne se fait plus...  
J'vais péter un câble...
 


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
n°1735217
Xxxaaavvv
Posté le 21-05-2008 à 14:09:50  profilanswer
 

me suis ptetre tromper, je vérifierai demain, la j'ai plus le temps désolé :D

mood
Publicité
Posté le 21-05-2008 à 14:09:50  profilanswer
 

n°1735220
scaryfan
Apple Inside
Posté le 21-05-2008 à 14:12:36  profilanswer
 

Xxxaaavvv a écrit :

me suis ptetre tromper, je vérifierai demain, la j'ai plus le temps désolé :D


 
OK !
 
Merci encore pour ton aide... ;)


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Format des variables sous VB

 

Sujets relatifs
[VB.NET]Problème de connexion telnet[VB / EXCEL] Lecture d'un fichier texte en partant de la fin ?
Passage de variables entre deux classesCours Html(Css) +Vb.net +Sql server 2000 +++Tps
Générer des mail quel format de fichiers?Générer des mail quel format de fichier?
[C++] Variables globales non initialisées ?[VB 2005] Récupérer la position courante du curseur dans un mainmenu
feuille VB saturée,cmt faire??????Extraire des variables à partir d'une chaine de caractère
Plus de sujets relatifs à : Format des variables sous VB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR