Condition dans VBA sous Excel avec un format

  • Initiateur de la discussion Aurèle
  • Date de début
A

Aurèle

Guest
Bonjour,

Je suis actuellement en stage et je suis bloquée sur un truc un peu bête.

Est il possible d'écrire la condition suivante :

Si le caractère dans ma cellule est de type "23/123456" alors sa valeur dans une autre colonne est "DAP".
Si le caractère est de type "23/123tn01" alors sa valeur dans l'autre colonne est "TRB".

Je dis bien de type car ça peut tout aussi bien être "12/456825" pour le premier. Tous les caractères de type "chiffre, chiffre/chiiffre,chiiffre,chiiffre,chiiffre,chiiffre,chiiffre"

J'ai écrit le code suivant :
if Worksheets("Feuil1").Cells(1, 1).value = "00/000000" then Worksheets("Feuil1").Cells(1, 2).value ="DAP"
mais évidemment ça ne marche pas !

Alors si vous pouviez maider assez rapidmeent car si je ne peux pas avancer demain, je suis plutôt mal :-(

Merci
 
Y

Yeahou

Guest
Bonjour Aurèle, le forum

essaye ce code

A+

if IsNumeric(Right(Worksheets("Feuil1").Cells(1, 1).value, 6)) then
Worksheets("Feuil1").Cells(1, 2).value ="DAP"
else
Worksheets("Feuil1").Cells(1, 2).value ="TRB"
end if
 
A

Aurèle

Guest
Merci bcp yeahou !

Mais il faudrait que je sache comment dire également que un caractère du type "12/23tn01" ait pour valeur dans l'autre cellule TRB. Car en fait je t'ai simplifié le problème, j'ai bcp plus de conditions que ça normalement.

Merci si tu peux m'aider
 
Y

Yeahou

Guest
rebonjour aurèle

tu mets la condition à tester dans le else, tout dépend du test que tu désires, celui la teste la présence de la chaine tn dans la cellule

A+

if IsNumeric(Right(Worksheets("Feuil1").Cells(1, 1).value, 6)) then
Worksheets("Feuil1").Cells(1, 2).value ="DAP"
else
if instr(1,Right(Worksheets("Feuil1").Cells(1, 1).value,"tn", 1))>0 then
Worksheets("Feuil1").Cells(1, 2).value ="TRB"
end if
end if
 
A

Aurèle

Guest
Remerci encore une fois mais en fatit, les deux lettres du milieu peuvent être n'importe lesquelles, et pas forcément tn, c'est là la dificulté.

je ne sais pas comment dire : il y a deux lettres au milieu (en encore ce n'est pas forcément le milieu)

. Si tu as la réponse, merci bcp !
 
Y

Yeahou

Guest
Bonjour Aurèle, le forum

la je ne comprends pas trop ton problème
le premier code fait cela
si la chaine testée est numérique condition 1
si elle ne l'est pas (elle contient des caractères non numériques) condition 2
cela correspond bruyamment à ce que tu dis dans ton dernier post.
le deuxième code teste la présence d'une chaine donnée et peux donc traiter tout les cas de figure que tu évoques.
Si cela ne te va pas, il faut que tu expliques pourquoi, notamment les tests que tu veux.


Cordialement, A+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1