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 :

Cherche code pour trier un fichier d'adresses par région


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Points : 80
    Points
    80
    Par défaut Cherche code pour trier un fichier d'adresses par région
    J'ai une feuille MS Excel (2003), fichier CSV, avec une liste d'adresses sur la quelle je souhaite effectuer une suppression de certaines adresses. Remarque : Il s'agit exclusivement d'adresses françaises.

    La sélection des adresses doit se faire par région ... on prend donc la colonne avec les codes postaux (les deux premiers chiffres du code postal) qui porte le nom DOS_CODE_POSTAL.

    Je souhaite par exemple que garder les régions suivantes:

    33, 40, 47, 64, 24, 16, 17, 19

    et supprimer toutes les autres adresses donc les deux premiers chiffres du code postal ne correspondent pas.

    Il y à encore un petit piège!

    Tous les codes postaux ne sont pas forcement enregistre en tant que 5 chiffres :

    pour la région 07400 il est marque 7400 ... il faut donc tenir compte de la longueur du code postal pour ne pas tomber dans le piège d'interpréter le 07
    par un 74 pour exemple précédent.

    Quelqu'un pourrait m'aider pour se petit bout de code (Macro)?

    GRAND Merci d'avance pour votre aide.

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    Je pense qu'en intégrant ceci ça devrait aider...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Len(codeP) = 4 then
      CodeP = "0" & codeP
    else
    end if
    codeP etant bien sûr la valeur du code postal qui est certainement déjà renseignée dans le reste du code.

    Ensuite un left(CodeP,2) devrait te donner la valeur rechercher pour confronté à la liste à garder.

    Si c'est pas ça, tu peux m'envoyer le fichier, je m'ennuie un peu pour l'instant
    N'oubliez pas le si votre problème est solutionné.

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui, ou sans if, dans la même boucle, tu corriges les N° afin que ce soient des strings dans le but de filtrer les départements
    Je suppose les départements dans la colonne A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Tablo as variant, derlig as long, NoLig as long, ok as boolean
    DerLig = Split(Worksheets("LaFeuille").UsedRange.address,"$")(4)
    For NoLig = 2 to DerLig
         Cells(NoLig, 1) = Right("0" & Cells(NoLig, 1) ,5)
    Next
    Ensuite tu peux filtrer tes lignes. Un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Tablo = array("33", "40", "47", "64", "24", "16", "17", "19")
    For NoLig = DerLig to 2 step -1
         For i = 0 to ubound(Tablo) -1
              ok = left(Cells(NoLig, 1),2) = Tablo(i)
              if ok then exit for
         Next
         if not ok then Rows(NoLig).entireRow.Hidden = True
    Next
    Là, tes lignes ne faisant pas partie de la région sont masquées. Tu peux aussi les supprimer avec delete à la place de Hidden. Sans filet. Tu peux tester pour nous
    Bonne soirée

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Et prendre le résultat de la division entière (\)par 1000, ce ne serait pas plus simple?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello Alain,
    Tu verrais ça comment ? Par le format ?

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Un petit exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
      Dim rRange As Range
      Dim c As Range
      Set rRange = Range([A1], Cells(Rows.Count, 1).End(xlUp))
      For Each c In rRange
        Select Case c.Value \ 1000
          Case 16, 17, 19, 24, 33, 40, 47, 64
          Case Else
            c.EntireRow.ClearContents
        End Select
      Next c
    End Sub
    Il suffit de trier la plage en finale.

    Une autre possibilité serait d'ajouter une colonne avec le code départemental ainsi calculé.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. Cherche technique pour generer des fichier et code .java
    Par francis.frederic dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 14/04/2008, 15h05
  2. cherche code pour convertir un décimal en base 35
    Par coufcouf dans le forum Langage
    Réponses: 2
    Dernier message: 05/03/2007, 15h44
  3. Réponses: 3
    Dernier message: 20/11/2006, 17h48
  4. code pour enregistré un fichier sous different nom
    Par france38 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/10/2006, 13h31
  5. [FPDF] Cherche informations pour afficher un fichier pdf avec PHP
    Par Hans_B dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 22/03/2006, 11h57

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