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

Signaler
Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
-
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
-
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
Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
19
Je n'ai pas réussi à faire un :

Application.WorksheetFunction.Search


Il n'y a pas d'autres méthodes?
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 938
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
Arff, c'est tellement bête! Je vais essayer merci ;-)
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 938
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...
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
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
J'ai résolu, je viens de découvrir qu'en VBA le ET se traduisait par
or
et non
and
!
Messages postés
708
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
1 décembre 2011
35
non, c'est faux
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 938
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 ;-)
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
708
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
1 décembre 2011
35
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
Messages postés
230
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
19
Aussi ;-)
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 938
Je ne suis pas persuadé que l'on puisse diviser une chaine par un nombre...
Messages postés
708
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.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 938
a = 9999.22