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 :

transformer les valeurs d'une colonne en chaine de caracteres


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut transformer les valeurs d'une colonne en chaine de caracteres
    Bonjour à tous,

    Voilà mon petit souci, je cherche à transformer le tableau suivant :

    Commande - evenement
    111 - 1
    111 - 2
    111 - 3

    En ceci

    Commande - Clé
    111 - 123

    Si vous avez une méthode, une idée ou un petit conseil, ce serait bien sympathique.

    Merci beaucoup d'avance

    Mathieu

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    C'est à peu prés ce qui est traité ici
    http://www.developpez.net/forums/sho...26#post1331826
    Amicalement

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci pour le lien mais ça dépasse mes qualités de compréhension.... c'est fou qu'il n'y ait pas une manière simple d'y arriver.

    Merci en tout cas !

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Si tu as plusieurs enregistrements de ce type et que pour chacun d'netre eux tu veux les transformer comme dans ton exemple, il te faut parcourir la table avec un Recordset (DAO).

    Tu créés une nouvelle table avec la colonne concernée... "TableDestination"
    Tu créés ta procédure qui agit dans la table source...
    De là, tu prends les 3 premiers caractères de chaque enregistrement trouvé que tu stockes dans une variable (strDebut) puis le dernier caractère dans une autre (strFin)...

    Par exemple
    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
    Sub CreerEnrTableau()
    Dim oRS As Recordset
    Dim strDebut As String
    Dim strTemp As String
    Dim strFin As String
    Dim strNouvelEnr As String
    
      Set oRS = CurrentDb.OpenRecordset("TableSource", 2)
      
      On Error Resume Next
      With oRS
        Do While Not .EOF
            strDebut = Left(.Fields("LeChamp"), 3)
            Do While Not .EOF
               If Left(.Fields("LeChamp"), 3) = strDebut Then
                  strFin = strFin & Right(.Fields("LeChamp"), 1)
               Else
                  strNouvelEnr = strDebut & " - " & strFin
                  AjouterEnr strNouvelEnr
                  strFin = Right(.Fields("LeChamp"), 1)
                  Exit Do
               End If
              .MoveNext
            Loop
        .MoveNext
        Loop
        strNouvelEnr = strDebut & " - " & strFin
        AjouterEnr strNouvelEnr
        .Close
      End With
      Set oRS = Nothing
    End Sub
    
    Private Sub AjouterEnr(nouvelEnr As String)
    Dim SQL As String
      
      SQL = "INSERT INTO TableDestination (LeChamp) VALUES _
      (" & Chr(34) & nouvelEnr & Chr(34) & ");"
      CurrentDb.Execute SQL, dbSeeChanges
    
    End Sub
    Voilà ce que j'ai en source

    111 - 1
    111 - 2
    111 - 3
    112 - 1
    112 - 2
    112 - 3
    112 - 4
    113 - 1
    113 - 2
    113 - 3
    113 - 4
    113 - 5
    114 - 1
    114 - 2
    115 - 1
    115 - 2
    115 - 3

    et voilà ce que j'obtiens après dans l'autre table, ça te vas ???

    111 - 123
    112 - 1234
    113 - 12345
    114 - 12
    115 - 123


    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci de tous ces efforts mais en fait, les données se trouvent dans deux colonnes distinctes : la première est composée par les commandes (111, 222, etc...) et la deuxième par les numéros (1,2,3,...).

    Mon but est d'avoir à nouveau deux colonnes mais de regrouper les numéros communs à une même commande.

    Encore merci !

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Eh bien tu adaptes...
    Moi j'ai pris le nom de champs "LeChamp" ;

    A toi d'aller chercher les bonnes valeurs dans les bonnes colonnes en substituant les fonctions Left$ et Right$

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

Discussions similaires

  1. comment transformer les valeur d'une colonne en pourcentage?
    Par sinoun dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 25/08/2017, 16h45
  2. ADO - Comment supprimer toutes les valeurs d'une colonne d une datatable?
    Par Mr_Welby dans le forum Accès aux données
    Réponses: 1
    Dernier message: 24/05/2007, 15h58
  3. Toutes les valeurs d'une colonne - Tableau à 2D
    Par Bridou dans le forum Langage
    Réponses: 3
    Dernier message: 30/06/2006, 16h05
  4. requete pour compter les valeurs ds une colonne
    Par smariteau dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/02/2006, 17h37
  5. intervertir les valeurs dans une colonne d'une table
    Par hammou dans le forum Débuter
    Réponses: 2
    Dernier message: 26/01/2004, 10h15

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