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

Access Discussion :

Mise en forme d'adresse


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 97
    Points : 72
    Points
    72
    Par défaut Mise en forme d'adresse
    Bonjour,

    J'ai récupéré différentes adresses sous la forme suivante, exemple :

    13 rue martin 37457 TOURS

    Je souhaite - grâce une requête access - pouvoir séparer l'adresse / Code postal/ ville


    Sur excel j'ai les formules suivantes - qui marchent bien - et souhaiter savoir si cela était possible de le faire (d'une manière ou d'une autre sur access):
    Code postal : =MID(A2;MATCH(1;(ISNUMBER(MID(SUBSTITUTE(A2;" ";"µ");ROW(INDIRECT("1:"&LEN(A2)));5)*10000))*1;0);5)
    Adresse : =MID(A2;1;SEARCH(C2;A2;1)-1)
    Ville : =MID(A2;5+SEARCH(C2;A2;1);99)

    Qu'en pensez-vous ?

    Merci d'avance pour votre retour

    Pierre031

  2. #2
    Membre régulier Avatar de DJOUFOU
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 167
    Points : 90
    Points
    90
    Par défaut
    Peut on avoir plus de détails. Comment tu récupère ces adresses ? Et donne un exemple de la forme sous laquelle tu souhaites l'obtenir. Avec le masque de saisie on peut arriver à quelque chose mais donne plus de détails.
    Merci
    Success is not final, faillure is not fatal.
    It is the courage to continue that count. So look always forward!

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 97
    Points : 72
    Points
    72
    Par défaut Attendu
    Tout d'abord merci pour ta réponse

    Je récupère l'adresse a partir dun fichier Excel où l'adresse (rue/ville/cp) est dans le meme champ

    Je souhaite que chaque colonne ait un champ pour chaque donnee de l'adresse, soit 3 colonnes
    Rue
    Ville
    Code postal

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,
    Si tu as la garantie que :
    - le code postal est toujours en 5 positions
    - que le N° dans la rue est toujours en tête
    On pourrait écrire une fonction :
    - qui recherche le groupe de 5 chiffres encadrés de 2 espaces
    - spliter l’adresse originale avec ces 7 positions dans un tableau
    Alors,
    les 5 chiffres = le code postal
    la colonne(0) du tableau contient la partie rue
    la colonne(1) contient la partie ville
    La fonction renverrait les données en format Adresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Type Adresse
      Rue As String
      CodePostal As String
      Ville As String
    End Type
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 97
    Points : 72
    Points
    72
    Par défaut Suite
    Bonjour,

    Comment je fais cette fonction ? C'est du SQL ou une requete ?

    MErci

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Du VBA.

    Patience, je t'écris cette fonction et te reviens avec un exemple.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    J'anticipe sur la solution de ClaudeLeloup, et tenant compte de ses hypothèses, voici une solution parmi d'autres:

    Créer une requête basée sur ta table et ayant 4 champs (n°, rue, CP, ville) dont la valeur est DécomposerAdresse_J([adresse]), tu pourras facilement récupérer les 4 éléments décomposés (J allant de 1 à 4)

    Créer un module pour y mettre la fonction en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function DécomposerAdresse_1(adr as string)     'Extraction du numéro
     
        Dim element As Variant
     
        element = Split(adresse, " ", -1)
     
        DécomposerAdresse_1 = element(0)
     
    'Il faut copier cette fonction 3 fois en modifiant J pour obtenir le reste de l'info comme suit:
    '    DécomposerAdresse_2 =  element(1) & " " & element(2) --------> donne la rue
    '    DécomposerAdresse_3 = element(3) --------> donne le code postal
    '    DécomposerAdresse_4 =  element(4) --------> donne la ville
     
    End Sub

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Cette fonction pour spliter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Option Compare Database
    Option Explicit
    Type Adresse
      Rue As String
      CodePostal As String
      Ville As String
    End Type
     
    Public Function SplitAdresse(Original As String) As Adresse
     
      Dim i As Integer
      Dim tableau() As String
      'Recherche du N° postal
      For i = 2 To Len(Original)
        If Mid(Original, i, 1) = " " And IsNumeric(Mid(Original, i + 1, 5)) = True And Mid(Original, i + 6, 1) = " " Then
            SplitAdresse.CodePostal = Mid(Original, i + 1, 5)
        End If
      Next i
      'Split Rue/Ville
      tableau = Split(Original, " " & SplitAdresse.CodePostal & " ")
      SplitAdresse.Rue = tableau(0)
      SplitAdresse.Ville = tableau(1)
    End Function
    Et ces 3 fonctions, car dans une requête, Access2000 refuse une fonction avec un type défini par l’utilisateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function Rue(Original As String) As String
      Rue = SplitAdresse(Original).Rue
    End Function
     
    Public Function CodePostal(Original As String) As String
      CodePostal = SplitAdresse(Original).CodePostal
    End Function
     
    Public Function Ville(Original As String) As String
      Ville = SplitAdresse(Original).Ville
    End Function
    Exemples d’utilisation



    Exemple d’utilisation dans une requête



    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT tCLIENTS.AdresseOriginale, rue([AdresseOriginale]) AS Rue, CodePostal([AdresseOriginale]) AS CodePostal, Ville([AdresseOriginale]) AS Ville
    FROM tCLIENTS;
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Zekraoui_Jakani

    Je n'ai pas compris ta proposition.

    Peux-tu donner un exemple avec

    13bis boulevard Jean Jaurès (boîte 5) 12345 La Ville

    Merci déjà
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 97
    Points : 72
    Points
    72
    Par défaut Suite
    Claude

    Je suis désolé mais je n'ai pas compris ce que je dois faire ...il y a beaucoup de requetes..laquelle dois-je utilisée ? est-ce possible d'avoir un exemple à partir d'une base Access ?

    MErci d'avance,

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    est-ce possible d'avoir un exemple à partir d'une base Access ?

    MErci d'avance,
    As-tu vu le fichier attaché à mon billet n° 8 ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 97
    Points : 72
    Points
    72
    Par défaut
    oui mais je vois juste la table et pas les requetes dedans ..du coup je ne comprends pas trop..

  13. #13
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Pierre, j'ai des difficultés à te suivre.

    Dans la DB jointe à mon billet n° 8, il y a
    - une table ;
    - un module avec 4 fonctions ;
    - une requête qui te montre comment utiliser les fonctions pour séparer en trois morceaux l'adresse contenue dans la table.

    Que puis-je faire de plus pour que tu comprennes ?

    Si ta db est convertible en version Access2000, postes-en le zip on pourra alors être plus concret.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  14. #14
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Pierre031: La solution de Claude est parfaite; tu ne vois que la table, mais il suffit de cliquer sur "afficher tous les objets" dans le navigateur pour tout voir.

    Claude: l'exemple que j'ai mis est basé sur une solution toute simple pour une adresse normale (sans boite ni autre composant complexe). Cependant, je mets ci-dessous une solution générique qui donne un résultat standard quelque soit la syntaxe de l'adresse (à 99%):

    query basée sur ta table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT tCLIENTS.AdresseOriginale, DécomposerAdresse_1([adresseOriginale]) AS Numéro, DécomposerAdresse_2([adresseOriginale]) AS Rue, DécomposerAdresse_3([adresseOriginale]) AS CP, DécomposerAdresse_4([adresseOriginale]) AS Ville
    FROM tCLIENTS;
    ainsi que les fonctions qui vont avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Option Compare Database
    Public element As Variant, k As Long
     
    Function DécomposerAdresse_1(adr As String)     'Extraction du numéro
     
        element = Split(adr, " ", -1)
        DécomposerAdresse_1 = element(0)
     
    End Function
     
    Function DécomposerAdresse_2(adr As String)     'Extraction de la rue
     
        element = Split(adr, " ", -1)
        DécomposerAdresse_2 = element(1)
     
        For j = LBound(element) + 2 To UBound(element)
            If IsNumeric(element(j)) And Len(element(j)) = 5 Then
                Exit For
            Else
                DécomposerAdresse_2 = DécomposerAdresse_2 & " " & element(j)
            End If
        Next j
     
    End Function
     
    Function DécomposerAdresse_3(adr As String)     'Extraction du CP
     
        element = Split(adr, " ", -1)
     
        For j = LBound(element) + 2 To UBound(element)
            If IsNumeric(element(j)) And Len(element(j)) = 5 Then
                DécomposerAdresse_3 = element(j)
                Exit For
            Else
                DécomposerAdresse_3 = "Pas de CP"
            End If
        Next j
     
    End Function
     
    Function DécomposerAdresse_4(adr As String)     'Extraction de la ville
     
        element = Split(adr, " ", -1)
     
        For j = LBound(element) To UBound(element)
            If IsNumeric(element(j)) And Len(element(j)) = 5 Then
                k = InStr(1, adr, element(j)) + 6
                DécomposerAdresse_4 = Trim(Mid(adr, k))
                Exit For
            Else
                DécomposerAdresse_4 = "Pas de ville"
            End If
        Next j
     
    End Function

  15. #15
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour Zekraoui_Jakani,




    Pense à ceci qui évite les fautes de frappe dans les variables ... et les maux de tête pour les retrouver

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Compare Database
    Option Explicit   '<-----
    Et à ceci, pour éviter l'espace devant le N°

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function DécomposerAdresse_1(adr As String)     'Extraction du numéro
     
        element = Split(adr, " ", -1)
        DécomposerAdresse_1 = Trim(element(0))  '<-----
     
    End Function
    Bon week-end
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  16. #16
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Remarques pertinentes de Claude; merci

  17. #17
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 97
    Points : 72
    Points
    72
    Par défaut Suite
    Merci beaucoup Zekraoui ta requete fonctionne très bien

    De plus tu avais raison j'ai oublié d'afficher tous les objets de la base access :s

    En revanche si je souhaite mettre le numéro de rue et l'adresse dans le même champ, comment puis-je modifier ta requete de la fonction ?

    Merci d'avance

  18. #18
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut Décomoosition d'une adresse
    Voici un exemple en annexe.
    Fichiers attachés Fichiers attachés

  19. #19
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 97
    Points : 72
    Points
    72
    Par défaut
    c'est parfait

    merci beaucoup !

    Dernière question:

    Sauriez-vous comment faire pour diviser l'adresse en deux ou plus de parties ? Je souhaite avoir une adresse sur 35 caractères maximum, alors que j'ai des adresses qui atteignent 70 voir 80 caractères.

    Je souhaiterai donc diviser cette adresse en autant de champ possible pour faire à chaque fois 35 caractères. Mais que cela soit coupé lorsqu'il y a un espace ou un tiret (pas au milieu d'un mot :s)

    Cela me semble assez difficile à faire mais pourrait m'être bien utile dans le cadre d'une homogénéisation des données.

    Merci d'avance :=)

  20. #20
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Les informaticiens ont toujours résolu ce problème d'adresse (longueur variable et composite) en insérant plusieurs lignes pour capter l'adresse; ces lignes se présenteront sous forme de textBox nommés AdresseLigne1, AdresseLigne2, AdresseLigne3, .... etc. En général 3 textboxes suffisent.
    Autre solution: définir l'adresse en tant que mémo, mais il est difficile de manipuler un champ mémo en VBA.
    Personnellement, je préfère toujours séparer la rue (en 3 lignes), le N°, la BP, le CP et la ville quand je crée un formulaire d'encodage d'adresse. C'est plus pratique !

    En fait, lorsque vous parlez d'adresse, s'agit-il du nom de la rue ou de toute l'adresse avec ses 4 ou 5 composants ? la réponse dépend de cette précision !

Discussions similaires

  1. [CR] mise en forme d'un champs texte en fonction des données
    Par niPrM dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 29/06/2004, 11h57
  2. [CR 9] Mise en forme non affichée when null
    Par Yorglaa dans le forum Formules
    Réponses: 2
    Dernier message: 28/06/2004, 17h27
  3. mise en forme rapide d'applets
    Par appletj dans le forum Applets
    Réponses: 11
    Dernier message: 03/06/2004, 13h28
  4. Mise en forme HTML
    Par Regis.C dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 25/04/2004, 11h55
  5. Mise en forme fichier avant Import
    Par jeff37 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/04/2004, 15h16

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