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

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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.
 
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
 
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
 
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.
 
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
 
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
 
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à!
 
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
 
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
 
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?
 
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
 
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é.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
799
Retour