Alternative à Select Case

Bonjour,

j'ai créé une macro qui définit la valeur d'une case en fonction d'un code EAN.

Pour cela j'utilise Select Case mais celui-ci est limité et je dois faire plusieurs Case. J'ai énormément de cas où la valeur renvoyée est "TRA".

Quel autre moyen ai-je pour lister tous les EAN sachant que je vais avoir d'autres listes comprenant de nombreux codes EAN qui renverrons d'autres valeurs.

Sub transport_choix()
With Sheets(2)
Dim c As Range
Dim SKU As Range
Set SKU = ActiveSheet.Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row)
Dim c2 As Range
Dim PRIX As Range
Set PRIX = ActiveSheet.Range("AB2:AB" & Range("A" & Rows.Count).End(xlUp).Row)
For Each c2 In PRIX
    Select Case c2.Value
    Case Is < 20
        c2.Offset(0, 3).Value = "DOM"
    Case Is > 20
        c2.Offset(0, 3).Value = "DOS"
        Case Else
    End Select
Next c2
For Each c In SKU
    Select Case c.Value
        Case "3700224720735", "4008496537242", "3505371137845", "3700123822394", "5410853038948", "0722868966259", "0027242519688", "8015250040654", "085854223836", "5015367014206", "4008496559749", "3760161135528", "4013833617495", "8711424247293", "4008496176021", "3760161138451", "3760161137577", "3660711070685", "3451572007671", "4007249051202", "3780950745745", "3700224733087", "3700224730451", "3700224721732", "3485990133100", "5412810182732", "5050582381795", "4007249433534", "4007249069382", "3700020512060", "4007249069702", "3700224710316", "4007249433527", "4007249069719", "3700188422669", "0085854217965", "85854217965", "4008496587896", "5050582382228", "3558104488424", "3662765127254", "3485990133018", "3485990906544", "4210201112891", "3610480202169", "3610480202169", "3760161137454", "3457707900053", "5023084204794", "4891372637361", "3700123852728", "3760161138758", "5015367015500", "085854217965", "4891372637361", "0883585195329", "3760161138987", "3485990740094", "3571211207740"
        c.Offset(0, 27).Value = "TRA"
        Case "3760161139410", "5412810181186", "3700224706371", "3700224718459", "3344428019549", "3333973140341", "3333973140167", "3333293870225", "5050582380781", "5026555039055", "4902580430580", "3597230000865", "5051964200109", "4008496559312", "0043168762199", "0065030849418", "8711500518859", "3660711059437", "4710614531147", "4977729965995", "4977729966022", "3485990119043"

        Case "3760161138642", "3760161138642-B"
        c.Offset(0, 27).Value = "KRONO"

        Case Else
    End Select
Next c
End With
End Sub

Merci

Bonjour,

Personnellement, dans ce genre de cas, je préfère mettre tous ces paramètres dans un onglet d'une feuille excel spécialement dédiée à la paramétrisation. Cela rend aussi plus robuste le code VBA.

Merci. le soucis est que cette macro est utilisée pour traiter différents fichiers csv. il faudrait donc que la macro crée une feuille supplémentaire avec ces données. une idée pour le faire ? Merci

bonjour,

Tout à fait d'accord avec Steelson. La bonne approche est de constituer une table dans une feuille dédiée et d'utiliser cette table dans votre code. Vous n'aurez pas à replonger dans votre code en cas de modification des valeurs.

Merci. le soucis est que cette macro est utilisée pour traiter différents fichiers csv. il faudrait donc que la macro crée une feuille supplémentaire avec ces données. une idée pour le faire ? Merci

Mais ... la macro est bien supportée par un fichier xlsm ! C'est donc dans ce fichier qu'il faut loger l'onglet paramètres et programmer un find ... du coup ne pas faire de RECHERCHEV pour ne pas avoir à devoir exporter la table de correspondance mais seulement les valeurs comme le fait aujourd'hui ta macro.

Merci. C'était tellement évident !

Rechercher des sujets similaires à "alternative select case"