Convertir formule excel en visual basic

Résolu
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

1 réponse

  1. Contributeur
    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 ?
    1. 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.
    2. Contributeur
      attention sur XL2003 pas plus de 7 Si imbriqués
      donc tu as raison:rechercheV, surtout si ca évite le VBA
      a+
    3. merci pour ton aide