Fonction personnelle : Agence en fonction du département (d'un code postal)

manu cho

XLDnaute Nouveau
Bonjour à tous,

J'aimerai créer une fonction personnelle sans doute très simple :) capable de m'aider à trouver l'Agence Commerciale qui gère le département et ce en fonction d'un code postal.

Je m'explique: J'ai en Colonne A, une liste de code postal "normalement" à cinq chiffres. Je dois remonter en Colonne B, à l'aide de la formule "=agence()" l'Agence qui gère le département.

Je suis parti de ça :

Function agence(c As Range) As String
' Fonction personnelle permettant de remonter l'Agence en fonction du code postal".
Application.Volatile
Select Case Len(c)
Case Is < 4
codepostal = "Erreur!"
Case Is > 5
codepostal = "Erreur!"
Case 4
codepostal = "0" & c
Case 5
codepostal = c
End Select
End Function

Cette formule fonctionne correctement, mais elle ne me fait que contrôler les codes postaux.
Une âme charitable pour m'aider à trouver le code permettant de dire que les deux premiers caractères étant XX, alors l'Agence YY doit le gèrer?

Thk a lot,
Bonne fin de journée à tous.
 

manu cho

XLDnaute Nouveau
Re : Fonction personnelle : Agence en fonction du département (d'un code postal)

Bonjour !

select case left(c,2) marche sans problème.
Toutefois, est-il possible de commencer par un Select Case Len(c) pour vérifier que le contenu de la cellule est bien égal à 5 (si non, erreur) pour ensuite appliquer un Select Case Left(c,2).

mci :)
 

manu cho

XLDnaute Nouveau
Re : Fonction personnelle : Agence en fonction du département (d'un code postal)

Merci François pour ta réponse :)

J'ai fais ça :

Function agence_test(c As Range) As String
' Fonction personnelle permettant de remonter l'agence_test en fonction du code postal".
Application.Volatile

Select Case Len(c)
Case Is < 4
agence_test = "Erreur!"
Case Is > 5
agence_test= "Erreur!"
Case 4
agence_test = "0" & c
End Select

Select Case Left(c, 2)
Case Is = "00"
agence_test = "Erreur!"
Case Is = "01"
agence_test = "LYON"

'(...)

Case Is = "99"
agence_test = "Erreur!"
End Select
End Function

Cela fonctionne, mais lorsque mon code postal est différent de 5, il ne me mets pas de message d'erreur, mais calcule bien d'après les deux premiers chiffres, l'agence concernée.

Pourquoi? :)
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 059
Membres
103 444
dernier inscrit
Aeggie78