VBA - Condition si nombre à virgule alors... [Résolu/Fermé]

Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
- - Dernière réponse : blux
Messages postés
23911
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
- 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!
Afficher la suite 

7 réponses

0
Merci
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
Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
19
0
Merci
Je n'ai pas réussi à faire un :

Application.WorksheetFunction.Search


Il n'y a pas d'autres méthodes?
Messages postés
23911
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2691
0
Merci
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

Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
19
0
Merci
Arff, c'est tellement bête! Je vais essayer merci ;-)
blux
Messages postés
23911
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2691 -
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...
zivodul8
Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
19 -
Merci Blux j'ai failli tomber dans le panneau!
Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
19
0
Merci
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!
Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
19
0
Merci
J'ai résolu, je viens de découvrir qu'en VBA le ET se traduisait par
or
et non
and
!
Ctesias
Messages postés
714
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
1 décembre 2011
35 -
non, c'est faux
blux
Messages postés
23911
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2691 -
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 :

http://www.commentcamarche.net/forum/affich-16025052-shell-condition

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

Merci une nouvelle fois, je ne re-ferais pas l'erreur :)
Messages postés
714
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
1 décembre 2011
35
0
Merci
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
zivodul8
Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
19 -
Aussi ;-)
blux
Messages postés
23911
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2691 -
Je ne suis pas persuadé que l'on puisse diviser une chaine par un nombre...
Ctesias
Messages postés
714
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
1 décembre 2011
35 -
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.
blux
Messages postés
23911
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2691 -
a = 9999.22