Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro Excel : controle sur format nombre

8 réponses
Avatar
Tishalule
Bonjour à tous !
Voilà, je bosse actuellement sur une macro par laquelle je récupère, met en
forme et fais des contrôles sur un autre fichier Excel de base de donné queje
reçois.
Récupération de données, mise en forme, certaisn contrôle, pas de souci
(merci l'enregistreur macro !) mais je butte sur un contrôle :
j'ai une colonne dans laquelle n doivent figurer que des chiffres sans
virgule (montant en centimes). J'ai bien trouvé que pour convertir un nombre
en cihfre sans virgule je passe par du Selection.NumberFormat = "0" mais
comment (et puis je ??) demander à ma macro de vérifier que le nombre présent
dans ma cellule n'a pas de virgule ??

Merci d'avance, j'espere avoir été assez claire !

8 réponses

Avatar
papou
Bonjour
Par exemple
MsgBox CLng(Cells(1, 1).Value) = Cells(1, 1).Value
"Tishalule" a écrit dans le message de
news:
Bonjour à tous !
Voilà, je bosse actuellement sur une macro par laquelle je récupère, met
en
forme et fais des contrôles sur un autre fichier Excel de base de donné
queje
reçois.
Récupération de données, mise en forme, certaisn contrôle, pas de souci
(merci l'enregistreur macro !) mais je butte sur un contrôle :
j'ai une colonne dans laquelle n doivent figurer que des chiffres sans
virgule (montant en centimes). J'ai bien trouvé que pour convertir un
nombre
en cihfre sans virgule je passe par du Selection.NumberFormat = "0" mais
comment (et puis je ??) demander à ma macro de vérifier que le nombre
présent
dans ma cellule n'a pas de virgule ??

Merci d'avance, j'espere avoir été assez claire !



Avatar
papou
Oups ! Parti trop vite...

MsgBox CLng(Cells(1, 1).Value) = Cells(1, 1).Value
Te renverra VRAI si la cellule (ici A1) ne comporte pas de décimale et FAUX
dans le cas contraire.

Cordialement
Pascal

"papou" a écrit dans le message
de news:
Bonjour
Par exemple
MsgBox CLng(Cells(1, 1).Value) = Cells(1, 1).Value
"Tishalule" a écrit dans le message
de news:
Bonjour à tous !
Voilà, je bosse actuellement sur une macro par laquelle je récupère, met
en
forme et fais des contrôles sur un autre fichier Excel de base de donné
queje
reçois.
Récupération de données, mise en forme, certaisn contrôle, pas de souci
(merci l'enregistreur macro !) mais je butte sur un contrôle :
j'ai une colonne dans laquelle n doivent figurer que des chiffres sans
virgule (montant en centimes). J'ai bien trouvé que pour convertir un
nombre
en cihfre sans virgule je passe par du Selection.NumberFormat = "0" mais
comment (et puis je ??) demander à ma macro de vérifier que le nombre
présent
dans ma cellule n'a pas de virgule ??

Merci d'avance, j'espere avoir été assez claire !







Avatar
Youky
Bonjours
Si tu veux afficher le montant en centimes dans la colonne(donc sans
virgules)
l'exemple renvoie 1256 en [A1]

x = 12.56789
[A1] = Int(x * 100)

Youky

"Tishalule" a écrit dans le message de
news:
Bonjour à tous !
Voilà, je bosse actuellement sur une macro par laquelle je récupère, met
en
forme et fais des contrôles sur un autre fichier Excel de base de donné
queje
reçois.
Récupération de données, mise en forme, certaisn contrôle, pas de souci
(merci l'enregistreur macro !) mais je butte sur un contrôle :
j'ai une colonne dans laquelle n doivent figurer que des chiffres sans
virgule (montant en centimes). J'ai bien trouvé que pour convertir un
nombre
en cihfre sans virgule je passe par du Selection.NumberFormat = "0" mais
comment (et puis je ??) demander à ma macro de vérifier que le nombre
présent
dans ma cellule n'a pas de virgule ??

Merci d'avance, j'espere avoir été assez claire !



Avatar
FFO
Salut à toi


Avec la cellule active à traiter ce bout de code devrait faire l'affaire :

For i = 1 To Len(ActiveCell)
Car = Mid(ActiveCell, i, 1)
If Car = "," Then
MsgBox ("Décimal")
End If
Next

Dis moi


Bonjour à tous !
Voilà, je bosse actuellement sur une macro par laquelle je récupère, met en
forme et fais des contrôles sur un autre fichier Excel de base de donné queje
reçois.
Récupération de données, mise en forme, certaisn contrôle, pas de souci
(merci l'enregistreur macro !) mais je butte sur un contrôle :
j'ai une colonne dans laquelle n doivent figurer que des chiffres sans
virgule (montant en centimes). J'ai bien trouvé que pour convertir un nombre
en cihfre sans virgule je passe par du Selection.NumberFormat = "0" mais
comment (et puis je ??) demander à ma macro de vérifier que le nombre présent
dans ma cellule n'a pas de virgule ??

Merci d'avance, j'espere avoir été assez claire !



Avatar
Tishalule
Bonjour papou,
J'ai testé ta ligne de macro sur mon classeur.
J'obtiens une réponse "Vrai" quelle que soit la valeur que j'ai dans la
cellule testée (avc ou sans virgule)
J'ai lu dans l'aide que la fonction CLng convertit des fractions, or dans
mon cas je ne cherche pas à convertir le nombre présent dans ma cellule mais
simplement à faire un test de type
If valeur de ma cellule contient une virgule then
"Cells(x,y).Value = "KO"
End If

Merci !


Bonjour
Par exemple
MsgBox CLng(Cells(1, 1).Value) = Cells(1, 1).Value
"Tishalule" a écrit dans le message de
news:
Bonjour à tous !
Voilà, je bosse actuellement sur une macro par laquelle je récupère, met
en
forme et fais des contrôles sur un autre fichier Excel de base de donné
queje
reçois.
Récupération de données, mise en forme, certaisn contrôle, pas de souci
(merci l'enregistreur macro !) mais je butte sur un contrôle :
j'ai une colonne dans laquelle n doivent figurer que des chiffres sans
virgule (montant en centimes). J'ai bien trouvé que pour convertir un
nombre
en cihfre sans virgule je passe par du Selection.NumberFormat = "0" mais
comment (et puis je ??) demander à ma macro de vérifier que le nombre
présent
dans ma cellule n'a pas de virgule ??

Merci d'avance, j'espere avoir été assez claire !








Avatar
papou
Re
Non, tu te trompes, l'aide stipule simplement qu'en cas de fraction, elles
sont arrondies.
Si tu testes mon exemple sur une valeur en A1 = 122,30
La formule te renvoie FAUX

Donc pour adapter à ton cas :

If Not Clng(cells(1,1).Value)Îlls(1,1).Value Then Cells(1,1).Value = "KO"

(Sinon j'ai utilisé CLng au cas où tes valeurs dépasseraient la valeur 32
767)

Cordialement
Pascal



"Tishalule" a écrit dans le message de
news:
Bonjour papou,
J'ai testé ta ligne de macro sur mon classeur.
J'obtiens une réponse "Vrai" quelle que soit la valeur que j'ai dans la
cellule testée (avc ou sans virgule)
J'ai lu dans l'aide que la fonction CLng convertit des fractions, or dans
mon cas je ne cherche pas à convertir le nombre présent dans ma cellule
mais
simplement à faire un test de type
If valeur de ma cellule contient une virgule then
"Cells(x,y).Value = "KO"
End If

Merci !


Bonjour
Par exemple
MsgBox CLng(Cells(1, 1).Value) = Cells(1, 1).Value
"Tishalule" a écrit dans le message
de
news:
Bonjour à tous !
Voilà, je bosse actuellement sur une macro par laquelle je récupère,
met
en
forme et fais des contrôles sur un autre fichier Excel de base de donné
queje
reçois.
Récupération de données, mise en forme, certaisn contrôle, pas de souci
(merci l'enregistreur macro !) mais je butte sur un contrôle :
j'ai une colonne dans laquelle n doivent figurer que des chiffres sans
virgule (montant en centimes). J'ai bien trouvé que pour convertir un
nombre
en cihfre sans virgule je passe par du Selection.NumberFormat = "0"
mais
comment (et puis je ??) demander à ma macro de vérifier que le nombre
présent
dans ma cellule n'a pas de virgule ??

Merci d'avance, j'espere avoir été assez claire !










Avatar
Youky
Pour le fun ......vu que j'étais à coté de la plaque....
x = 12.54
If x / Int(x) = 1 Then
MsgBox "sans virgule"
Else
MsgBox "avec virgule"
End If

Youky
Avatar
Tishalule
Ouiiiiiii !
Merci beaucoup !
Ca correspond tout à fait à ce que je cherchais !
Merci !


Pour le fun ......vu que j'étais à coté de la plaque....
x = 12.54
If x / Int(x) = 1 Then
MsgBox "sans virgule"
Else
MsgBox "avec virgule"
End If

Youky