Convertir formule excel en visual basic

Résolu
xavier83520 -  
 xavier83520 -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. xavier83520
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      attention sur XL2003 pas plus de 7 Si imbriqués
      donc tu as raison:rechercheV, surtout si ca évite le VBA
      a+
      0
    3. xavier83520
       
      merci pour ton aide
      0