!!! condition sur "les 3 derniers chiffres" !!!

  • Initiateur de la discussion FAbrice
  • Date de début
F

FAbrice

Guest
Bonjour au forum,

Je dois rentrer les valeurs d'une feuille de saisie ("SAISIE") dans des feuilles tableaux. le critère qui va me permettre de choisir la feuille de destination est le numéro de l'affaire, plus précisément, les 3 derniers chiffres. je pensais donc faire une macro du genre:

If "les 3 derniers chiffres" = 100 then
mettre dans tab1
else if "les 3 derniers chiffres" = 200 then
mettre dans tab2
else "les 3 derniers chiffres" = 300 then
mettre dans tab3
end if

le PB est que je ne sais pas comment faire la condition "les 3 derniers chiffres" !!!!

est ce que quelqu'un aurait une solution???

Merci de votre réponse,
FAb
 
J

JCA06

Guest
Bonjour Fabrice, le Forum,

Tu devrait y arriver avec la fonction RIGHT dont la syntaxe est :
Right(string, length)

Ce que je ne sais pas, c'est si tu dois d'abord envoyer le contenu de ta cellule dans une variable string.

A plus.
 
F

FAbrice

Guest
salut JCA06

Merci de ta réponse, elle va me retirer une épine du pied!!! meme s'il en reste encore d'autres ;=)

Pour savoir si il faut déclarer le contenu de ma cellule dans une String, je ferai des tests ce soir, a moins que quelqu'un connaisse déjà la réponse. lol

Merci encore,
FAb
 
S

sousou

Guest
Bonjour à vous

Attention au comparaison de chaines et ou de nombres.
ne pas mélanger les genre
Dans ton cas il est probale qui faille s'assurer de la conversion des trois dernier caractères en nombres par cnum.

en admettant que tu travail sur la cellule active.

if cnum(right(activecell,3))=100 then
 
J

JCA06

Guest
Bonjour Sousou,

J'aimerai comprendre ce dont tu parles. J'ai été sensibilisé aux problèmes de genre (bonjour Thierry !) mais je ne pensais pas que cela posait problème ici.

Dans mon cas, la condition > 9 e fonctionnait pas pour ma variable qui était en string, du fait qu'un texte 1xxx (1000 par exemple) est toujours considéré comme inférieur à un texte 9xxx (9 par exemple).

Même problème avec les tris, pour les mêmes raisons.

Mais ici, si il suffit de savoir si les trois derniers caractères sont 100 ou 200 ou 300, où est le piège ?

Merci de ton aide.
 
F

FAbrice

Guest
Salut Sousou

En fait, les numéros sont du style:
n°agence Année XXX
où XXX représentent les 3 chiffres sur lesquels se portent la condition.

D'après ce que tu me dis, la fonction cnum, converti les chirffres en lettre!

Dans ce cas précis, je ne pense pas en avoir besoin (car les XXX st tjs de nombre), mais comme on dis, qui peut le plus, peut le moins!!! lol

Merci de ta réponse,
FAb
 
A

Arnaud

Guest
salut tout le monde,

non fabrice, c'est l'inverse, la fonction cnum converti un texte en nombre.

et pour le problème la fonction right renvoi un string donc derrière tu choisi :
soit tu compare un string a un string donc :

if right(activecell,3) = "100" then

ou un nombre a un nombre :

if cnum(right(activecell,3))=100 then

comme le propose sousou
 
S

sousou

Guest
Re

Dans ce cas précis peut-être que cela ne pose pas de problème mais!

Si les numéros de fabrice sont tels que
012 2004 100, il y à de forte chance qu'il soient vu par excel comme une chaine de caractère.

Lors de l'extraction des trois derniers caractères, 100 sera considéré comme une chaine de caractères.
et le test devrait être fait comme cela if .....="100"

d'où l'utilisation de cnum if cnum(....)=100
Dans ce cas prècis ce n'est pêut-être pas utile, mais lorsqu'on manipule des chaines représentant des nombres dans un PG , il n'est pas rare de se vouloir faire des calcul avec ces chaines, et là!
 
F

FAbrice

Guest
Salut Arnaud

Conernant la fonction Cnum, c bien ce que j'avais compris mais mes doigts ont dépassés mon esprit et ont fourchés!!! ;=)

Merci de l'explication concernant les strings!!!
En fait, si on ne met pas le cnum, il ne va pas reconnaitre le chiffre çndiqué dans la cellule comme un nombre !!!!

Merci de vos réponses,
FAb
 
A

Arnaud

Guest
re,

a et aussi au passage, si tu a plusieur 'if - else' comme ça a l'air d'être le cas, le plus propre serai d'avais un select case.
par ex:

Select Case Right(ActiveCell, 3)
Case "100"
'écris ton code ici
Case "200"
'écris ton code ici
Case "300"
'écris ton code ici
End Select
 
F

FAbrice

Guest
re à tous,

Si g bien compris, cette nouvelle méthode est plus compacte que la méthode avec des si. est ce qu'il y a d'autres avantages???

Par contre, si je veux mettre la condition suivante:
if cnum(right(activecell,3))>100 and cnum(right(activecell,3))<150 then
...

comment peut-on rajouter cette condtion dans ta solution?
 
A

Arnaud

Guest
re,

je ne suis pas un pro dans les select case mais un truc du style devrai marcher :

Select Case CInt(Right(ActiveCell, 3))
Case 100 to 150
'écris ton code ici
Case 200
'écris ton code ici
Case 300
'écris ton code ici
End Select

ps: pour la convertion, utilise plutot la fonction CInt si tu n'a pas de chiffre après la virgule ou CLng sinon
 
J

JCA06

Guest
Re bonjour,

Merci à Sousou et à Arnaud pour les précisions !

Effectivement, comme disait Sousou, il ne faut pas mélanger les genres et le "100" est différent du 100 !

D'ailleurs, le dernier post de Fabrice est un bel exemple de la façon de se faire avoir, et c'est ce qui m'était arrivé.
 

Discussions similaires

Réponses
5
Affichages
198

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 337
Messages
2 087 391
Membres
103 536
dernier inscrit
komivi