1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| Sub tt3()
Columns("B:M").Clear
valeur = "12,234567" 'FR_France ' Le separateur decimal en France est la virgule, d'ou conversion americaine qui cause probleme
'valeur = 4000.12345 ' Numerique
Cells(1, 1).NumberFormat = "@"
Cells(1, 1).Value = valeur
Dim a As Variant
a = Cells(1, 1).Value
Cells(2, 1) = TypeName(Cells(1, 1).Value)
Cells(1, 3).Value = "Type de la valeur"
Cells(1, 5).Value = "Resultat"
Cells(1, 6).Value = "Type"
For i = 1 To 3
Columns("E:F").Clear
Select Case i
Case 1
Columns("E").NumberFormat = "General": col = "H"
NumberFormatDestination = Columns("E").NumberFormat
Case 2
Columns("E").NumberFormat = "0.00000": col = "j"
NumberFormatDestination = Columns("E").NumberFormat
Case 3
col = "L": Columns("E").NumberFormat = "@"
NumberFormatDestination = Columns("E").NumberFormat
End Select
Cells(8, "E") = "'" & NumberFormatDestination
'Quand VBA ecrit dans une cellule une valeur avec "=", il fait appel,
'si requis, a une fonction de conversion archaique
'qui interprete la valeur comme etant une valeur americaine.
'La conversion n'est requise que lorsque le type de la valeur
'et le format de la cellule destination ne sont pas du meme type.
'Avec .Value, cette conversion automatique peut donner un resultat errone.
Cells(2, 5).Value = Cells(1, 1).Value
Cells(2, 3) = TypeName(Cells(1, 1).Value)
Cells(5, 5).Value = CDbl(a)
Cells(5, 3) = TypeName(CDbl(a))
'Avec .FormulaLocal, cette conversion automatique ne cause pas de resultat errone.
Cells(7, 5).FormulaLocal = CStr(a)
Cells(7, 3) = TypeName(CStr(a))
Cells(6, 5).FormulaLocal = CDbl(a)
Cells(6, 3) = TypeName(CDbl(a))
Cells(2, 6) = TypeName(Cells(2, 5).Value)
Cells(5, 6) = TypeName(Cells(5, 5).Value)
Cells(6, 6) = TypeName(Cells(6, 5).Value)
Cells(7, 6) = TypeName(Cells(7, 5).Value)
Range("E1:f7").Copy Cells(1, col)
Cells(8, col) = "'" & NumberFormatDestination
Next
Columns("E:F").ClearContents
Cells(2, 4).Value = "Cells(2, 5).Value = Cells(1, 1).Value"
Cells(4, 4).Value = "a = Cells(1, 1).Value"
Cells(5, 4).Value = "Cells(5, 5).Value = CDbl(a)"
Cells(7, 4).Value = "Cells(6, 5).FormulaLocal = cstr(a)"
Cells(6, 4).Value = "Cells(7, 5).FormulaLocal = CDbl(a)"
Cells(1, "F") = "Conversion americaine erronee"
Cells(2, "F") = "Oui"
If CDbl(Cells(1, 1)) = Cells(2, "H") Then
Cells(2, "F") = "Non"
Else
Cells(2, "F") = "Oui"
End If
If CDbl(Cells(1, 1)) = Cells(5, "H") Then
Cells(5, "F") = "Non"
Else
Cells(5, "F") = "Oui"
End If
If CDbl(Cells(1, 1)) = Cells(6, "H") Then
Cells(6, "F") = "Non"
Else
Cells(6, "F") = "Oui"
End If
If CDbl(Cells(1, 1)) = Cells(7, "H") Then
Cells(7, "F") = "Non"
Else
Cells(7, "F") = "Oui"
End If
Cells(5, "B") = "Solution 1"
Cells(6, "B") = "Solution 2"
Cells(7, "B") = "Solution 3"
Cells(8, "E") = "Format des cellules destination"
End Sub |
Partager