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

VBA Access Discussion :

[VBA DAO] Concatèner deux lignes


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [VBA DAO] Concatèner deux lignes
    Mon problème est le suivant: j'ai une table contenant deux colonnes avec pour titre:
    1. Numérotation ( qui n'était pas généré par Autonum)
    2. Libellé

    Elle peut contenir de 2 à 24 lignes. J'aimerais concatèner en premier lieu deux colonnes pour en former une seule. ça y a pas de problème !!!
    Mais maintenant j'aimerais concatèner toutes mes lignes de la colonne concatèner pour remplir un champ mémo dans une autre table... et en plus pour chaque ligne un retour à la ligne et là j'ai beau éplucher tous les bouquins pas de solution !!!
    Ex du champ mémo:

    1 Bonjour
    2 Monsieur
    3 Dupont

    Qui pourait m'aider ??????

    Merci par avance

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    une solution :
    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
     
    Private Sub MonConcat()
    Dim oDb As DAO.Database
    Dim oRs As DAO.Recordset
    Dim sSql As String, sConcat As String
     
    Set oDb = CurrentDb
    sSql = "SELECT [MonChamp1] & ' ' & [MonChamp2] & Chr(13) & Chr(10) As C From MaTable"
    Set oRs = oDb.OpenRecordset(sSql, dbOpenForwardOnly)
     
    Do Until oRs.EOF
       sConcat = sConcat & oRs(0)
       oRs.MoveNext
    Loop
     
    Set oRs = oDb.OpenRecordset("MaTableAvecMemo", dbOpenTable)
    oRs.AddNew
    oRs![MonMemo] = sConcat
    oRs.Update
     
    Set oRs = Nothing
    Set oDb = Nothing
    End Sub
    le saut de ligne est chr(13) & chr(10) (constante VbCrLf dans VBA)

    Risque que sConcat tronque la concaténation si la chaine concaténée est très longue...
    Dans ce cas, si elle atteint une certaine longueur, il faut l'enregistrer dans le memo puis la vider et ainsi de suite.

    cordialement,

    philippe

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci pour la réponse. Je vais essayer de ce pas et voir comment cela fonctionne.

    Salutations

    Raymond

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci cela fonctionne

    Salutations

    Raymond

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut
    Pour Philben,

    Tout d'abord merci pour ton code.

    Cependant, quand je le teste, cela marche si le champ MonMeno est déclaré comme texte (limité à 255) mais pas comme mémo car à l'arrivée je récupère que le 1er record dans la tableMemo, à moins que cela ne soit juste un problème de visualisation.
    Il faut peut être associer un formulaire à cette table pour voir le résultat.

    D'autre part, j'aimerais avoir des précisions sur les déclarations suivantes :
    As C
    dbOpenForwardOnly

    A quoi cela correspond exactement ?
    d'avance merci

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    je récupère que le 1er record dans la tableMemo
    Il y a un saut de ligne entre chaque record, je pense que les autres enregistrements sont dessous (agrandir la hauteur de ligne) lors de la visualisation de la table.

    D'autre part, j'aimerais avoir des précisions sur les déclarations suivantes :
    As C
    dbOpenForwardOnly
    <As C> permet de donner un nom à la colonne créée
    <DbOpenForwardOnly> C'est la méthode la plus rapide pour parcourir un recordset mais avec certaines contraintes dont :
    - On ne peut parcourir le recordset QU'EN AVANT
    - Ne permet pas l'écriture contrairement à DbOpenDynaset
    - Certaines propriétés ne sont pas disponibles comme <RecordCount> de mémoire

    Cordialement,

    Philippe

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut
    Tout marche très bien sauf la création de la colonne C.
    A plus

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    quel est le problème avec la colonne C ?

    Si besoin, mettez votre code dans le fil de discussion pour vérifier.

    cordialement,

    philippe

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut
    Bonjour,

    il ne me créé pas de colonne C .
    voir code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set oDb = CurrentDb
    sSql = "SELECT [prenom] & ' ' & [nom] & Chr(13) & Chr(10) As C From Table1"
    Set oRs = oDb.OpenRecordset(sSql, dbOpenForwardOnly)
     
    Do Until oRs.EOF
       sConcatM = sConcatM & oRs(0) & ","
          oRs.MoveNext
    Loop
     
    Set oRs = oDb.OpenRecordset("Table1_memo", dbOpenTable)
    oRs.AddNew
    oRs![prenom_nomM] = sConcatM
    oRs.Update
    Encore merci

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    il ne me créé pas de colonne C .
    Lorsque je dis qu'un colonne est créée, c'est dans la requête mais pas dans la table !

    Faites un debogage pas a pas pour voir le principe.
    Normalement ça fonctionne sans problème, si le doute persiste, mettez votre base dans le fil pour vérifier.

    cordialement,

    Philippe

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut
    Ok j'ai compris comment cela marche.
    Encore merci

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut
    Je cherche le tag Résolu, impossible de le trouver, peut être n'y vois je plus clair ?

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Maintenant il coince !!!
    Il me fait des erreurs comme quoi il y a un conflit d'écriture !!!
    As-tu peut être la solution comme quoi:
    Faut-il fermer le fomulaire ou le champ mémo se trouve ?
    Comment actualiser le champ car il m'indique que le champ est effacé et après l'avoir fermé et rouvert, le champ mémo me donne le texte concatèné ?

    Qui peut m'aider sur ces deux points car là je suis entrain de me perdre dans mon code !!!!

    Merci d'avance !!!

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

Discussions similaires

  1. Concaténer deux ligne en ajoutant une colonne
    Par kanak09 dans le forum Développement
    Réponses: 8
    Dernier message: 30/06/2010, 15h16
  2. Syntaxe VBA pour fusionner deux lignes
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2009, 10h13
  3. Concaténer deux valeur issue d'une fonction vba en sql
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/08/2008, 14h47
  4. [VBA-E] : somme de deux lignes ayant des positions variables
    Par johnmakina dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/01/2007, 17h47
  5. Concaténer deux enregistrements sur un ligne
    Par pniho dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 27/10/2006, 12h10

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