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 :

Concaténation avec regroupement sur un champs


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut Concaténation avec regroupement sur un champs
    Bonjour

    je souhaite concaténer plusieurs champs provenant d'une requête sur un champ de regroupement

    j'ai trouvé quelque chose d'un peu similaire sur le net mais je n'arrive pas à exécuter le code

    voici le lien ou la manoeuvre est expliquée
    http://access.jessy.free.fr/htm/Quer...atForQuery.htm


    Merci d'avance pour votre aide
    Isabelle
    Access version office 365
    windows 7 sous mac

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 101
    Points : 96
    Points
    96
    Par défaut
    bonjour

    je ne comprends pas trop ton problème

    une simple requète SQL comem celle la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT "TEST" & [champ1] & [champ2] AS Expr1
    FROM Table1
    GROUP BY "TEST" & [champ1] & [champ2];
    n est t elle pas suffisante ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Bonjour

    merci pour ta réponse

    non cela ne suffit pas car je ne peux pas prévoir le nombre de champ2 que je vais trouver

    a un nom en commun sont liés plusieurs prénoms qui doivent venir se concaténer tous ensemble dans la cellule en face du nom pour ne créer qu'une ligne par nom en commun
    Isabelle
    Access version office 365
    windows 7 sous mac

  4. #4
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Je n'ai pas trop compris ta demande non plus, pourrais-tu préciser un peu plus ?

    Edit : Ah, ça y est je vois ce que tu veux faire, mais hélas, je vois pas trop comment t'aider.
    La fontion que tu as trouvé ne fonctionne pas ?
    Quelles sont les difficultés que tu rencontre ?
    Donne-nous les erreurs que tu rencontre, déjà
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 101
    Points : 96
    Points
    96
    Par défaut
    Le code sur
    http://access.jessy.free.fr/htm/Quer...atForQuery.htm

    fonctionne très bien quel est ton problème ?

    j'ai créé une petite base test avec.
    Comme le dis azertix si tu as des soucis fais signe.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Bonsoir

    Effectivement ca fonctionne depuis une table

    mais j'essaie de la faire fonctionner depuis une requete

    je crée donc une requete qui associe les sites avec les lots


    SITE _ LOT
    PARIS _ LAVAGE
    PARIS _ MACONNERIE
    VITRY _ CURAGE
    BOULOGNE _ DEMOLITION

    Je voudrais obtenir:

    PARIS - LAVAGE - MACONNERIE
    VITRY - CURAGE
    BOULOGNE -DEMOLITION

    Les sites proviennent d'une T_SITE et les lots d'une T_LOT
    Ils sont associés ensuite via une T_CONTRAT qui peut avoir plusieurs sites, donc une première T_CONTRAT_SITE, et comme les sites peuvent avoir plusieurs lots pour ce contrat, une autre T_CONTRAT_SITE_LOT

    Je fais donc une requete associative R_SITE LOT qui provient de la T_CONTRAT_SITE (pour les sites) et T_CONTRAT_SITE_LOT pour les lots

    sur lesquelles j'aimerais faire cette requete de concaténation
    Il me donne bien les sites, (enfin les id sites) mais dans résultat il met erreur

    voici ma première requete R_SITE_LOT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_CONTRAT_SITE.ID_SITE, T_CONTRAT_SITE_LOT.ID_LOT
    FROM T_CONTRAT_SITE INNER JOIN T_CONTRAT_SITE_LOT ON T_CONTRAT_SITE.ID_CONTRAT_SITE = T_CONTRAT_SITE_LOT.ID_CONTRAT_SITE;
    et la seconde que laquelle j'applique la concaténation (du moins j'essaye)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT R_SITE_LOT.ID_SITE, ConcatForQuery("ID_SITE",[ID_SITE],"ID_LOT","R_CONCAT_LOT"," - ") AS Resultat
    FROM R_SITE_LOT;
    donc c'est un peu plus compliqué et comme je ne comprends pas tout ce que je fais.... voyez vous ?

    merci de votre aide
    Isabelle
    Access version office 365
    windows 7 sous mac

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Il me répond erreur d'exécution '13 incompatilité de type
    Isabelle
    Access version office 365
    windows 7 sous mac

  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,

    1) s'assurer que la référence <Microsoft DAO 3.6> est activée dans VBA
    sinon le faire enregistrer puis compiler vba

    2) utiliser plutot ma fonction qui offre plus d'options :
    http://www.developpez.net/forums/sho...d.php?t=423317

    3) voici la requete avec ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT R.ID_SITE, ConcatColonne([ID_SITE],"id_site","ID_LOT","r_site_lot","",False,Null," - ") AS lots
    FROM R_SITE_LOT AS R;
    philippe

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Super ca a fonctionné du premier coup ! trop super !!!

    j'attends mon stage VBA du 9 juin et j'étudierai tout de même l'autre pour savoir ce qui clochait, car sur le test que m'a envoyé Alaingui, ca fonctionnait bien dans sa base test, mais rien à faire avec ma base

    merci Philippe, génial...

    au fait, je n'ai toujours pas trouvé la solution pour la requête de non correspondance,

    La méthode que tu m'as indiquée est trop fastidieuse et contraignante, mais tu as peut-etre raison, il faut que je change quelque chose dans la structure.

    tu dis que ta fonction à plus d'options, qu'entends tu par là ?

    merci encore

    et merci également à Alaingui et Azertix d'avoir pris le temps de me répondre

    à bientôt

    bonne soirée
    Isabelle
    Access version office 365
    windows 7 sous mac

  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 Mme b,

    j'attends mon stage VBA du 9 juin
    t'as le chance toi, jamais eu droit même à un bouquin...

    La méthode que tu m'as indiquée est trop fastidieuse et contraignante, mais tu as peut-etre raison, il faut que je change quelque chose dans la structure.
    merci du compliment

    tu dis que ta fonction à plus d'options, qu'entends tu par là ?
    Ma fonction permet de trier les composants de la concaténation par ordre alphabétique par exemple, de faire un regroupement sur les composants,...

    le fonction initiale se sert aussi de la référence DAO, donc ça devrait fonctionner maintenant qu'elle est activée, j'ai pas testé.

    Bonne continuation,

    Philippe

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Re bonjour Philippe

    Si on lui demande gentiment, penses tu qu'access accepterait de faire le même travail mais en limitant la concaténation des lots sur les lots des sites (par site bien entendu) d'un contrat et non sur tous les lots des sites de toute la base ?

    Si tu as une idée, je suis preneuse

    merci

    Isabelle
    Isabelle
    Access version office 365
    windows 7 sous mac

  12. #12
    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,

    en liant ta table des contrats dans la première requete, tu pourras donc limiter les sites au chantier voulu.

    Philippe

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Bonjour Philippe

    effectivement ca marche, elle est géante cette recette !! bravo

    j'ai hate de pouvoir en faire autant !

    merci bonne journée et au prochain "coinçage"
    Isabelle
    Access version office 365
    windows 7 sous mac

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/03/2017, 18h45
  2. [AC-2013] Problème Requête avec Regroupement sur Champ Somme
    Par kesme dans le forum Access
    Réponses: 4
    Dernier message: 23/03/2015, 11h37
  3. [AC-2003] Calcul de la Médiane avec regroupement sur un champ
    Par Antisthene dans le forum VBA Access
    Réponses: 10
    Dernier message: 04/07/2013, 21h56
  4. Requete avec filtre sur un champ
    Par podz dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/02/2005, 14h37
  5. Recherche d'un mot avec LIKE sur plusieurs champs
    Par reynhart dans le forum Langage SQL
    Réponses: 16
    Dernier message: 26/11/2004, 17h41

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