IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer le département à partir du code postal


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 22
    Points
    22
    Par défaut Récupérer le département à partir du code postal
    Bonsoir,

    Je dispose de deux fichiers :
    - un fichier avec les codes des départements dans la colonne A (01, 02, 03...) et les noms dans la colonne B (Ain, Aisne, Allier...).
    - un fichier avec les codes postaux dans la colonne C et je veux écrire le nom du département dans la colonne G

    Voilà ma macro (qui ne fonctionne pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub DptRegion()
    Dim Cel As Range
     
    Application.ScreenUpdating = False
     
    Set Cel = Range("g1")
      Cel.Formula = "=VLOOKUP(MID(" & Cel.Offset(0, -4).Value & ",1,2),départements.csv!A:B,2,FALSE)"
      Cel.Copy Destination:=Range("g1:g" & Range("c65536").End(xlUp).Row)
     
    Application.ScreenUpdating = True
     
    End Sub
    Elle ne fonctionne pas pour deux raisons.

    1) Elle renvoie dans la case G1 : =RECHERCHEV(STXT(64500;1;2);départements.csv!A:B;2;FAUX), ce qui ne fonctionne pas. Pourtant, STXT(64500;1;2) renvoie bien 64 et =RECHERCHEV(64;départements.csv!A:B;2;FAUX) fonctionne.

    2) Dans les cases G2, G3, G4,... je retrouve la même valeur que dans la case G1... donc ma macro ne reprend pas les codes postaux de la colonne C.

    Que dois-je faire?

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour galigori,

    remplace
    par

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Ca ne fonctionne pas

    J'obtiens la formule "=RECHERCHEV(CDbl(STXT(64500;1;2));départements.csv!A:B;2;FAUX)" qui renvoie "#NOM?". Alors que "=RECHERCHEV(64;départements.csv!A:B;2;FAUX)" renvoie Pyrénées Atlantiques.

    "=CDbl(STXT(64500;1;2))" renvoie aussi "#NOM?".

    Merci quand même.

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cel.Formula = "=VLOOKUP(INT(MID(" & Cel.Offset(0, -4).Address(0, 0) & ",1,2)),départements.csv!A:B,2,FALSE)"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Range("g1")
        .FormulaR1C1 = "=VLOOKUP(INT(MID(RC[-4],1,2)),departements!C[-6]:C[-5],2,FALSE)"
        .AutoFill Range("g1:g" & Range("c65536").End(xlUp).Row)
    End With

  5. #5
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour galigori,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = CDbl(Mid(Cel.Offset(0, -4), 1, 2))
    Cel.Formula = "=VLOOKUP(" & x & ",départements.csv!A:B,2,FALSE)"

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Cela fonctionne parfaitement (avec INT) ! Merci beaucoup !!!-

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Compter les départements à partir de codes postaux
    Par texas2607 dans le forum Conception
    Réponses: 10
    Dernier message: 18/01/2011, 19h06
  2. Extraire le département d'un code postal
    Par tabtab dans le forum IHM
    Réponses: 9
    Dernier message: 08/09/2007, 00h40
  3. code postal et département : est-ce possible?
    Par darquandiermusic dans le forum Access
    Réponses: 3
    Dernier message: 14/03/2007, 16h04
  4. [A97] Extraction du département dans un code postal
    Par JeremieT dans le forum Access
    Réponses: 4
    Dernier message: 21/02/2007, 17h44
  5. Réponses: 5
    Dernier message: 24/01/2006, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo