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

Requêtes et SQL. Discussion :

Access :Separation des champs (text to column)


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut Access :Separation des champs (text to column)
    Bonjour,

    Question bête : j ai une BDD avec des champs liés par un point. Comment fais t on pour séparer les champs lié par un point, une virgule ou autre comme dans excel ?

    Celui ci peux contenir jusqu'à 5 champs à séparer.

    Nom : sep.PNG
Affichages : 995
Taille : 15,6 Ko

    Merci

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    Tu sélectionne la colonne, menu Données, puis Convertir. Tu te laisse guider par l'assistant
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Dans Access ? N'es tu pas sûr de confondre avec excel ?

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    pardon, j'avais compris que tu parlais d'excel.

    Ben dans Access, non, il affiche les données brutes. Même en résultat d'une requete je sais pas. Il faudrait faire un split sur la colonne, je sais pas si ça existe ça dans le SQL d'Access
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    c'est possible en plusieurs temps puisque le critere de separation est bien defini
    tu identifies la position du point avec la function Instr, puis avec les fonctions left et right tu selectionnes ce que tu veux

  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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Je ne suis pas sûr d'avoir compris la question. Mais s'il s'agit d'éclater un texte en morceaux délimités par un groupe de caractères particuliers, la fonction « Split » va bien.

    Un exemple d'utilisation :

    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
    Option Compare Database
    Option Explicit
     
     
    Public Sub ExempleSplit()
      Dim strTexteOriginal As String
      Dim tableau() As String
      Dim i As Integer
      'Garnir strTexteOriginal pour l'exemple
      strTexteOriginal = "CURRENCY.CURVE.TENOR"
      'Utilisation de Split
      tableau() = Split(strTexteOriginal, ".")
      For i = 0 To UBound(tableau)
        Debug.Print tableau(i)
      Next i
    End Sub
    donnera ceci :

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

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Bonjour Claude,

    Désolé pour la question bête mais comment l'utilises t on ?
    J'ai inséré ta fonction dans un module de classe mais je ne sais pas comment la lancer.

    Pour répondre à ta question, j'ai ma colonne Preponderance hierarchy et je voudrais autant de colonnes que de champs séparés par un point donc
    ColonneN+1 : Currency
    ColonneN+2 : Curve
    ColonneN+3 : Tenor

    Donc ajouter autant de colonne qu il y a de champs séparés par un point et découper chaque assemblage de mot, comme la fonction d'excel.

    Merci

  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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Par exemple comme ceci.

    LaTable doit contenir autant de colonnes que nécessaire pour accueillir chaque morceau



    Voici le code associé au bouton « Ventiler »

    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
    Option Compare Database
    Option Explicit
     
    Private Sub btVentiler_Click()
      Dim strTableau() As String
      Dim rst As DAO.Recordset
      Dim i As Integer
      'Créer un recordset  de la table pour pouvoir la parcourir
      Set rst = CurrentDb.OpenRecordset("LaTable")
      rst.MoveFirst
      'Boucler sur chaque enregistrement jusqu'à fin de fichier
      Do While Not rst.EOF
        rst.Edit
        strTableau = Split(rst("PreponderanceHierarchy"), ".")
        'Reporter chaque colonne du tableau dans la colonne ad hoc
        For i = LBound(strTableau) To UBound(strTableau)
          rst("N" & i) = strTableau(i)
        Next i
        rst.Update
        rst.MoveNext
      Loop
    Sortie:
      rst.Close
      Set rst = Nothing
    End Sub

    Les commentaires inclus dans le code devraient t'aider à comprendre.

    Si nécessaire :


    D'une manière générale, pour se documenter sur les propriétés d'un formulaire ou d'un état, ou de leurs contrôles :
    - afficher l'objet en mode construction ;
    - cliquer sur la propriété => elle se met en surbrillance ;
    - enfoncer la touche <F1>
    => l'aide Access s'ouvre à la bonne page.
    De même dans le code, placer le curseur de la souris et enfoncer F1.
    On peut aussi :
    • ouvrir l'aide <F1>, choisir l'onglet « Aide intuitive » et suivre les instructions ;
    • ouvrir la fenêtre d'exécution (<Ctrl> + G), saisir un mot-clé, y placer le curseur de la souris et enfoncer F1.
    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
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Hello Claude,

    J'ai essayé de reproduire ton exemple from scratch, mes étapes :

    1- import d'un fichier echantillon, je le nomme "sample"
    2- Je clique sur Créer > Création d'un formulaire
    3- Dans les commande, je choisis un bouton > Créer un code événement > Générateur de code
    4- Je copie le code et prends soin de renommer LaTable par Sample et le champ "PreponderanceHierarchy" par "Risk Factor Sensitivity"
    5- Je reviens au formulaire, je sors du mode création pour ouvrir, je clique dessus mais rien ne se passe.

    Qu ai je loupé ?

    Merci pour ton aide

  10. #10
    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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Que donne mon exemple de la pièce jointe lorsque tu l'exécutes sur ta machine ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Hello,
    Oui ton exemple fonctionne correctement.
    Mon fichier from scratch semble ne rien faire.
    Fichiers attachés Fichiers attachés

  12. #12
    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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Dans mon exemple, le bouton s'appelle « btVentiler ».
    Dans ton exemple, il s'appelle « Commande0 ».

    => le code n'est donc pas associé au clic !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Tout simplement !

    Je viens de tester, ça marche mais j'ai un message d'erreur à la fin :

    Nom : sep col.PNG
Affichages : 911
Taille : 11,0 Ko

    La macro n'aime pas les espaces dans le libellé du champ ?

    Merci

  14. #14
    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 : 282 192
    Points
    282 192
    Par défaut
    La macro n'aime pas les espaces dans le libellé du champ ?
    Effectivement, il faut proscrire les espaces, lettres accentuées, caractères spéciaux, mots protégés dans les noms d'objets et de colonnes... : ça finit toujours par créer des problèmes.

    Montre le message, car l'origine est peut-être autre (une colonne vide par exemple ou avec plus que un « . » séparateur (tu n'as que 2 colonnes).
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Hello,



    J'ai retire les espaces, le message d erreur est passe a la ligne suivante :

    rst("N" & i) = strTableau(i)
    Nom : vb error2.PNG
Affichages : 959
Taille : 18,0 Ko


    et le message est :
    Nom : vb error.png
Affichages : 874
Taille : 7,1 Ko


    Run Time error '3265' : Item not found in this collection



    Je precise que je suis sur access 2010 en anglais.

    J'ai relu le code, il y a la fonction "Sortie" qui peux etre traduite en "Exit"mais ce qui est bizarre c'est que ton exemple fonctionne donc j ai oublie qq chose.



    Question bete sur rst("N" & i) = strTableau(i)



    La variable N n'a t elle pas besoin d etre declaree ?



    Merci

  16. #16
    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 : 282 192
    Points
    282 192
    Par défaut
    La variable N n'a t elle pas besoin d etre declaree ?
    Non : rst("N" & i) = strTableau(i) peut se traduire en :

    - au 1er passage de la boucle : i vaut 0, dans la colonne appelée N0 de la table, placer le contenu de la 1re colonne du tableau (les indices commencent à 0)

    - au 2e passage : i vaut 1, dans N1... la 2e colonne du tableau

    - au 3e passage : i vaut 2, dans N2... la la 3e colonne du tableau.

    Donc, par exemple si dans un de tes textes à éclater, il y a deux points « . », il y aura trois passages.
    À ce moment-là, Access ne trouvera pas la colonne qui s'appelle N2 et va protester en disant qu'il ne trouve pas N2 dans la collection de colonnes de la table.

    Je suis convaincu que c'est l'origine de ton problème.

    Après l'instruction
    For i = LBound(strTableau) To UBound(strTableau)
    ajoute
    Debug.print i
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Non en fait c'est moi... Je n'avais pas compris que le libellé des colonnes avaient également leur importance. Je les avais nommés R1, R2, R3 etc...

    Donc pour récapituler, il faut faire attention à :
    - le nom de la base (of course)
    - Le nom du champ splitté
    - le nom du bouton avec evenement click
    - le nom des colonnes receptrices.

    A quoi sers la fonction debug.print ?
    J'ai essayé sur un BDD de 700.000 lignes et il a pas l'air d'aimer : y a til un buffer trop light ou un pc pas assez puissant ?

  18. #18
    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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Donc pour récapituler, il faut faire attention à...
    Il y aurait aussi problème si dans un enregistrement, la colonne à éclater est Null ou si le nombre de colonnes prévues pour accueillir les morceaux s'avère trop petit.
    Il faudrait prévoir une gestion d'erreurs avec des messages pour l'utilisateur.
    À quoi sert la fonction debug.print ?
    Je te renvoie à la dernière partie du billet n° 8 et pour en apprendre plus, ce tutoriel : http://cafeine.developpez.com/access...el/debugprint/

    Pas de souci avec 700 000 lignes !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Merci Claude pour ton aide préciseuse

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Bonjour Claude, j'ai une question :

    J'ai lancé la segmentation sur un BDD de 900.000 lignes.
    La BDD passe de 80mo à 1.7go après la fin du processus.

    Sais tu pourquoi ? Y a t il un moyen de minimiser l'utilisation du buffer ?

    La limite d'une BDD est plafonnée à 2.1go, si je la dépasse, celle ci n'est plus utilisable.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Afficher les coordonnées d'un layer dans des champs texte
    Par renaud26 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 15/08/2006, 13h53
  2. [Access] extraire des champs de plusieurs tables
    Par ddeee dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/04/2006, 16h45
  3. concaténer par GROUP BY des champs text/varchar
    Par Fredobdx dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/07/2005, 13h44
  4. [SQLite]éliminer un motif dans des champ TEXT
    Par Invité(e) dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/05/2005, 17h44
  5. Boucler sur des champs texte
    Par syl2095 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2004, 16h15

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