VBA - Condition si nombre à virgule alors...

Résolu/Fermé
zivodul8 Messages postés 230 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 19 mai 2015 - 16 juin 2011 à 12:11
blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 - 16 juin 2011 à 17:02
Bonjour,

Mon problème est simple : je cherche un bout de code VBA qui détermine si un nombre est à virgule ou non. Exemple :


Si n = 3.22 alors
             aligner à droite
Sinon ( n = 3)
             aligner à gauche
Fin si 


Merci!

7 réponses

Bonjour,

Ce que je te conseille de faire c'est

SI ta chaine contient un caractère spécial ici un point ALORS
aligner à droite
SINON
aligner à gauche
FIN Si

En fait dès que dans ta chaine tu rencontre l'élément point tu en déduis que c'est un nombre à virgule
0
zivodul8 Messages postés 230 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 19 mai 2015 22
16 juin 2011 à 13:35
Je n'ai pas réussi à faire un :

Application.WorksheetFunction.Search


Il n'y a pas d'autres méthodes?
0
blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
16 juin 2011 à 13:39
Salut,

tu peux faire ça avec la fonction int(nombre) qui renvoie la partie entière d'un nombre.

Si elle est égale au nombre lui-même, c'est qu'il n'y a pas de virgule.

IF INT(nombre) = nombre THEN
...
END IF

0
zivodul8 Messages postés 230 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 19 mai 2015 22
16 juin 2011 à 13:43
Arff, c'est tellement bête! Je vais essayer merci ;-)
0
blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
16 juin 2011 à 14:03
Prends plutôt FIX(nombre), cette fonction n'arrondit pas.
Ca t'évitera de tester si 3 = 2, pour le cas où tu aurais 2,999999...
0
zivodul8 Messages postés 230 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 19 mai 2015 22
16 juin 2011 à 14:48
Merci Blux j'ai failli tomber dans le panneau!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zivodul8 Messages postés 230 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 19 mai 2015 22
16 juin 2011 à 14:50
J'ai un autre (rapide) problème. Je cherche à déterminer le numéro de la ligne où en colonne, deux cellules vides se suivent verticalement. Voilà ce que j'ai fait mais cela ne fonctionne pas :

Sub NbLigne()

Dim NbLigne, i As Integer
i = 1

Do While Range("A" & i).Value <> "" And Range("A" & i + 1).Value <> ""
    NbLigne = i
    i = i + 1
Loop

MsgBox NbLigne

End Sub


Merci!
0
zivodul8 Messages postés 230 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 19 mai 2015 22
16 juin 2011 à 14:54
J'ai résolu, je viens de découvrir qu'en VBA le ET se traduisait par
or
et non
and
!
0
Ctesias Messages postés 724 Date d'inscription lundi 16 mai 2011 Statut Membre Dernière intervention 1 décembre 2011 36
16 juin 2011 à 14:57
non, c'est faux
0
blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
Modifié par blux le 16/06/2011 à 15:00
Ce n'est pas en VBA, c'est en logique booléenne, mais uniquement à cause du fait que tu as des <>, si tu avais des =, il te faudrait mettre un AND.

Les explications ici :

https://forums.commentcamarche.net/forum/affich-16025052-shell-condition

Et comme je le dis, c'est un truc vieux comme les ordinateurs ;-)
0
zivodul8 Messages postés 230 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 19 mai 2015 22
16 juin 2011 à 15:02
Humm, à méditer...

Merci une nouvelle fois, je ne re-ferais pas l'erreur :)
0
Ctesias Messages postés 724 Date d'inscription lundi 16 mai 2011 Statut Membre Dernière intervention 1 décembre 2011 36
16 juin 2011 à 14:57
Ce que tu peux faire, c'est :

Dim nombre1 as integer
Dim nombre2 as string

Nombre1=Int(nombre2)

If nombre2%nombre1 = 0 then

décaler a gauche

Sinon

décaler à droite

end if
0
zivodul8 Messages postés 230 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 19 mai 2015 22
16 juin 2011 à 15:02
Aussi ;-)
0
blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
16 juin 2011 à 15:03
Je ne suis pas persuadé que l'on puisse diviser une chaine par un nombre...
0
Ctesias Messages postés 724 Date d'inscription lundi 16 mai 2011 Statut Membre Dernière intervention 1 décembre 2011 36
16 juin 2011 à 15:04
Hum... J'ia mis string rapidos comme cela. Mais je ne me souvens plus si il y a une possibilité d'initialiser des chiffre avec des chiffres a virgule.
0
blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
16 juin 2011 à 17:02
a = 9999.22
0