Convertir formule excel en visual basic

Résolu/Fermé
xavier83520 - 11 avril 2011 à 17:20
 xavier83520 - 11 avril 2011 à 22:41
Bonjour,


je suis entrain de faire une formule sur Excel mais je m'apercoit que celle ci va être très longue.
Voici la formule entière : =SI(GAUCHE(A4;2)="19";"0609"&DROITE(A4;6);SI(GAUCHE(A4;2)="10";"0610"&DROITE(A4;6);SI(GAUCHE(A4;2)="11";"0611"&DROITE(A4;6);SI(GAUCHE(A4;2)="12";"0612"&DROITE(A4;6);SI(GAUCHE(A4;2)="29";"3109"&DROITE(A4;6);SI(GAUCHE(A4;2)="20";"3110"&DROITE(A4;6);SI(GAUCHE(A4;2)="21";"3111"&DROITE(A4;6);SI(GAUCHE(A4;2)="22";"3112"&DROITE(A4;6);SI(GAUCHE(A4;2)="39";"3309"&DROITE(A4;6);SI(GAUCHE(A4;2)="30";"3310"&DROITE(A4;6);SI(GAUCHE(A4;2)="31";"3311"&DROITE(A4;6);SI(GAUCHE(A4;2)="32";"3312"&DROITE(A4;6);SI(GAUCHE(A4;2)="49";"3409"&DROITE(A4;6);SI(GAUCHE(A4;2)="40";"3410"&DROITE(A4;6);SI(GAUCHE(A4;2)="41";"3411"&DROITE(A4;6);SI(GAUCHE(A4;2)="42";"3412"&DROITE(A4;6);SI(GAUCHE(A4;2)="59";"4409"&DROITE(A4;6);SI(GAUCHE(A4;2)="50";"4410"&DROITE(A4;6);SI(GAUCHE(A4;2)="51";"4411"&DROITE(A4;6);SI(GAUCHE(A4;2)="52";"4412"&DROITE(A4;6);SI(GAUCHE(A4;2)="69";"5409"&DROITE(A4;6);SI(GAUCHE(A4;2)="60";"5410"&DROITE(A4;6);SI(GAUCHE(A4;2)="61";"5411"&DROITE(A4;6);SI(GAUCHE(A4;2)="62";"5412"&DROITE(A4;6);SI(GAUCHE(A4;2)="79";"6009"&DROITE(A4;6);SI(GAUCHE(A4;2)="70";"6010"&DROITE(A4;6);SI(GAUCHE(A4;2)="71";"6011"&DROITE(A4;6);SI(GAUCHE(A4;2)="72";"6012"&DROITE(A4;6);SI(GAUCHE(A4;2)="89";"6909"&DROITE(A4;6);SI(GAUCHE(A4;2)="80";"6910"&DROITE(A4;6);SI(GAUCHE(A4;2)="81";"6911"&DROITE(A4;6);SI(GAUCHE(A4;2)="82";"6912"&DROITE(A4;6);SI(GAUCHE(A4;2)="99";"7509"&DROITE(A4;6);SI(GAUCHE(A4;2)="90";"7510"&DROITE(A4;6);SI(GAUCHE(A4;2)="91";"7511"&DROITE(A4;6);SI(GAUCHE(A4;2)="92";"7512"&DROITE(A4;6);SI(GAUCHE(A4;2)="M9";"9709"&DROITE(A4;6);SI(GAUCHE(A4;2)="M0";"9710"&DROITE(A4;6);SI(GAUCHE(A4;2)="M1";"9711"&DROITE(A4;6);SI(GAUCHE(A4;2)="M2";"9712"&DROITE(A4;6);"code incorrect"))))))))))))))))))))))))))))))))))))))))

Comme vous pouvez le constater celle ci est très très longue :) c'est pourquoi je voudrais créer une petite programmation sur visual basic faisant la meme chose.

S'il vous plait est ce que quelqu'un peut me convertir la formule en visual basic???
Il n'est pas nécessaire de convertir toute la formule. Cette partie suffira (je me débrouillerais pour la suite) :
=SI(GAUCHE(A4;2)="19";"0609"&DROITE(A4;6);SI(GAUCHE(A4;2)="10";"0610"&DROITE(A4;6);SI(GAUCHE(A4;2)="11";"0611"&DROITE(A4;6);SI(GAUCHE(A4;2)="12";"0612"&DROITE(A4;6);"code incorrect")))).

Vous remerciant par avance,

Xavier
A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
11 avril 2011 à 18:23
Bonjour

le principe
Dim valeur As String * 2, val_out As String * 6, resultat As String
val_in = Left(Range("A4"), 2)
val_out = Right(Range("A4"), 6)
Select Case val_in
     Case Is = "19"
          resultat = "0609" & val_out
     Case Is = "10"
          resultat = "0610" & val_out

     '.....
     Case Else
          resurtat = "code incorrect"
End Select


mais cela peut se faire sans macro et sans "si imbriqués***"avec un tableau de correspondance 2 colonnes et la fonction "rechercheV"

*** tu as quelle version d'Excel ?
0
Je suis sur excel 2007 mais le tableau tournera aussi sur du 2003.
je pense que je vais partir sur une recherchev car la programmation risque d'etre longue sur visual. le tableau fait plus de 150 lignes.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 11/04/2011 à 18:49
attention sur XL2003 pas plus de 7 Si imbriqués
donc tu as raison:rechercheV, surtout si ca évite le VBA
a+
0
merci pour ton aide
0