[VBA] Pb valeur dans une cellule

Pb valeur dans une cellule [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 10-08-2009 à 11:51:28    

:hello:  
 
Salut à tous ceux qui ne sont pas à la plage !!!  :na:  
 
J'ai un souci car je n'arrive pas à comprendre un truc dans Excel.
 
Voilà mon problème :
 
J'ai une userform (BOITE) dans laquel j'ai un champs dans lequel je saisis un nombre (ex : 11,25).
Cette valeur doit alimenter la cellule A1 d'un classeur
Et la cellule A2 du classeur multiplie A1 par une valeur en A3...
 
Voici les codes que j'utilise :
P.S. : mon champs s'appelle R015

Code :
  1. Private Sub R015_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  2.     If KeyAscii = Asc(Point) Then
  3.         If InStr(R015, 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(R015, 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


 

Code :
  1. Private Sub R015_AfterUpDate()
  2.     If Not IsNumeric(R015.Value) Then
  3.         R015.Value = 0
  4.         R015.Value = Format(R015.Value, "##,##0.00" )
  5.     End If
  6.        
  7.     With BOITE
  8.         .R015.Value = Format(R015.Value, "##,##0.00" )
  9.     End With
  10.        
  11.     If R015.Value < 0 Then
  12.         MsgBox "ATTENTION, vous avez saisi une valeur négative !!!", vbExclamation, "ALERTE !!!"
  13.     End If
  14.    
  15.     Sheets("RFN" ).Range("A1" ).Value = R015.Value
  16.      
  17. End Sub


 
Mon souci est que la valeur qui se met en A1 de ma feuille est bien repris dans le calcul en A2.
Si A1 = 100, si A3 = 0,5 alors A2 est égal à 50...
Par contre, si je sélectionne à la souris la cellules A1 et A2, normalement en bas à droite, je dois obtenir la somme des 2 cellules (soit 150,00)... or, je n'ai que la valeur calculée en A2 (soit 50,00)... la valeur en A1 n'est pas prise en compte...
Si je vais en A1, que je tape F2 et que je valide juste après... ça rectifie le problème...
 
Franchement, j'y comprends plus rien...  :pt1cable:  :cry:


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

Marsh Posté le 10-08-2009 à 11:51:28   

Reply

Marsh Posté le 10-08-2009 à 11:54:20    

Par contre, si en A4, je tape la formule "=A1+A2" la somme est bonne... :(
Avec la souris, ça ne marche pas... !!!????


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

Marsh Posté le 10-08-2009 à 11:59:49    

J'ai l'impression que ma valeur est considérée comme du texte dans la cellule et comme une valeur pour le calcul des autres cellules... !?


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

Marsh Posté le 10-08-2009 à 12:36:07    

Salut
Tout d'abord je code seulement en VBS, du coup je ne suis pas sur de la synthaxe  
perso je crois que pour défini un format c'est plutôt

Code :
  1. R015.NumberFormat = "0.0"


es-tu sur de la fonction format???
perso ca me fait plus penser à une fonction de chaîne de charactere et surtout je ne vois pas pourquoi il faudrait utiliser une affectation lors d'un changement de mise en forme. Perso ca me choque  ;)

Reply

Marsh Posté le 11-08-2009 à 22:22:11    

Vérifie le format (Ctrl+Shift+1) de tes cellules A1, A2, A3 pour voir si elles ont le même le format.
 
Et si tu sélectionnes A1 et A3 ? Et A2 et A3 ? Ça donne quoi ?
 
Sinon peut-être un problème de mise à jour, de rafraîchissement d'où le F2 qui rectifie le problème ? Si c'est çà, je te parie que si tu saisis dans ton useform la première fois :
(avec en A3 = 0,5)
100 et que tu sélectionnes A1+A2 : tu auras 50 (ce que tu as fait) en bas à droite.
 
Puis successivement dans le Useform :
 
60 et que tu sélectionnes A1+A2 : tu auras 130 (100+30) en bas à droite.
40 et que tu sélectionnes A1+A2 : tu auras 80 (60+20) en bas à droite.
 
Il prend la valeur antérieure. Bien qu'il y ait 100 dans A1, quand tu sélectionnes à la souris A1+A2, "la souris calcule" Rien=0+50 = 50 car en A1, avant 100, y avait rien.
 
Un ActiveSheet.Update ou [nom de la feuille].update arragerait les choses pt'être ?


Message édité par _maxime_ le 11-08-2009 à 22:25:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed