Bonjour,
Si cela ne convient pas, je jette l'éponge.
Cordialement,
Version imprimable
Bonjour,
Si cela ne convient pas, je jette l'éponge.
Cordialement,
Bonsoir nibledispo, cathodique
Citation:
Le souci est que je ne parviens pas à imposer la saisie que des nombres entiers. si je saisi 12,98, il se transforme en -12,98.
autrement dit, c'est bannir les décimaux dans cette colonne.
Code:
1
2
3
4
5
6
7
8
9
10
11
12 'Voici comment enlever les décimales et conserver le signe If IsNumeric(Target) = True Then nbr = Target signe = Sgn(nbr) 'Negatif = -1 Positif = +1 nbr = Int(Abs(nbr)) * signe ' -12.98->12 ' enlever les décimales et conserver le signe 'nbr = CInt(Abs(nbr)) * signe ' -12.98->13 ' enlever les décimales et conserver le signe Target.Value = -nbr 'Changer le signe End If
Cordialement
Docmarti
Bonjour docmarti,
Dans ma proposition je gère le refus du décimale ainsi :
Apparemment cela ne pose pas de problème.Code:
1
2
3
4
5 If Target.Value <> Int(Target.Value) Then Target.Value = Int(Target.Value) ........ End If
Cordialement,
nibledispo, quand j'ai commencé à programmer en VB, il n'existait que la fonction INT() pour supprimer les décimales afin d'obtenir un entier.Citation:
Dans ma proposition je gère le refus du décimale ainsi :
Apparemment cela ne pose pas de problème.Code:
1
2
3
4
5 If Target.Value <> Int(Target.Value) Then Target.Value = Int(Target.Value) ........ End If
Depuis ils ont ajouté les fonctions FIX et ROUND. Pour obtenir l'équivalent de FIX et ROUND, on devait se débrouiller pour créer nos propres fonctions personnalisées.
Le problème qu'on avait avec la fonction INT, et qu'on a toujours d'ailleurs, c'est qu'elle arrondit toujours à la valeur inférieure. Pour les valeurs positives, ca va. Mais pour les valeurs négatives, ca va moins bien car Int(-99,8) donne -100. Alors pour obtenir -99, on devait se débrouiller. Puis un jour, ils ont ajouté la fonction FIX qui corrigeait ce problème et supprimait les décimales sans modifier la partie entière. Mais je ne m'en suis jamais servi car j'étais habitué avec le système D qui avait toujours fonctionné.
Voici un démo des différences dans les résultats de INT, FIX et ROUND. J'ai ajouté à cette étude une autre nouvelle fonction, CInt, qui se comporte à la fois comme INT et comme ROUND. Elle donne un entier mais en l'arrondissant.
CordialementCode:
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 Sub test_INT_FIX_ROUND_CInt() Cells(1, 2) = 99.2 Cells(1, 3) = 99.8 Cells(1, 4) = -99.2 Cells(1, 5) = -99.8 Cells(2, 1) = "'= Int(nbr)" Cells(3, 1) = "'= Fix(nbr)" Cells(4, 1) = "'= Int(Abs(nbr)) * signe" Cells(6, 1) = "'= Cint(nbr)" Cells(7, 1) = "'= Round (nbr,0)" Cells(8, 1) = "'= CInt(Fix(nbr))" Cells(9, 1) = "'= CInt(Int(nbr))" 'Int For i = 2 To 5 Cells(2, i) = Int(Cells(1, i)) Next 'Fix For i = 2 To 5 Cells(3, i) = Fix(Cells(1, i)) Next 'Int(Abs(nbr)) * signe For i = 2 To 5 nbr = Cells(1, i) signe = Sgn(nbr) 'Negatif = -1 Positif = +1 nbr = Int(Abs(nbr)) * signe Cells(4, i) = nbr Next 'CInt For i = 2 To 5 Cells(6, i) = CInt(Cells(1, i)) Next 'round For i = 2 To 5 Cells(7, i) = Round(Cells(1, i), 0) Next 'CInt(Fix(99.8)) For i = 2 To 5 Cells(8, i) = CInt(Fix(Cells(1, i))) Next 'CInt(Int(99.8)) For i = 2 To 5 Cells(9, i) = CInt(Int(Cells(1, i))) Next End Sub
Docmarti
Messieurs bonjour,
Je vous remercie beaucoup.
@Docmarti: je ne veux pas arrondi, je voudrai que la cellule se vide comme lorsque l'on insère des caractères.
@Nibledispo: tu m'as mis sur la voieConclusion , la boucle est bouclée, merci beaucoup.Code:
1
2
3 If Target.Value <> Int(Target.Value) Then Target.ClearContents 'je voulais juste vider la cellule si c'est un décimal End If
Merci à tous, je regrette seulement que Bbil n'ait plus donné signe, vu son statut il nous aurait mieux éclairé.
Je remercie tous ceux qui m'ont donné un coup de main, ils ne déméritent pas. L'essentiel est le partage. Merci encore.
Bonne journée.
Cordialement,
Je ne sais pas vraiment comment ça se passe pour les notations. Mais je trouve déplorable qu'on pénalise les personnes qui s'investissent bénévolement pour aider les autres. Dommage ce n'est pas très encourageant.