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 :

plusieurs lignes par personne en une ligne et plusieurs colonnes


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut plusieurs lignes par personne en une ligne et plusieurs colonnes
    Bonjour

    je cherche à mettre mes valeurs ( plusieurs lignes par personne ) en une table où j'aurai une ligne par personne et toutes mes villes en colonnes (comme un collage special, transposition en ligne)

    J'espère être claire dans mes explications

    Merci


    table initale

    idPers ville
    1 paris
    2 nantes
    2 paris
    2 brest
    3 lyon
    4 strasbourg
    5 paris
    5 lille
    6 caen
    etc.

    table voulue

    idPers ville1 ville2 ville 3
    1 Paris
    2 nantes Paris Brest
    3 lyon
    4 strasbourg
    5 Paris lille
    6 caen

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    en cherchant un peu sur le forum:
    a priori il faudrait que je parte sur une requête croisée
    pour cela je dois attribuer un rang à chaque ville :

    ci-dessous je l'ai fait à la main pour l'exemple mais j'ai 500 lignes, comment puis-je le faire de façon automatique avec une boucle ?
    Qu'en pensez-vous ?

    idp ville ordre
    1 paris 1
    2 brest 1
    2 nantes 2
    2 paris 3
    3 lyon 1
    4 strasbourg 1
    5 lille 1
    5 paris 2
    6 caen 1

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2019
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2019
    Messages : 144
    Points : 194
    Points
    194
    Par défaut
    Bonjour

    En épluchant un peu les sources sur Access pour me documenter je suis tombé la-dessus l'autre jour, je pense que c'est ce que tu veux :

    https://access.developpez.com/source...QLLigneColonne

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Une req d'analyse croisée suffira
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2020
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    J'ai aussi le même problème.
    Comment mettre, avec une requête analyse croisée, des en-têtes de colonnes fixes, svp ?
    Dans l'exemple, comment mettre ville1 comme en-tête de la colonne 1, ville2, ... ?
    Merci pour votre aide.

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    il faut utiliser l'instruction PIVOT IN() ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2020
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Merci pour votre réponse.

    Voici un extrait de ma table "client"

    client date
    1 01/02/2019
    1 05/02/2019
    3 07/02/2019
    2 03/02/2019
    3 15/03/2019
    1 28/04/2019

    et je voudrais obtenir le tableau suivant :

    client Date1 Date2 Date3
    1 01/02/2019 05/02/2019 28/04/2019
    2 03/02/2019
    3 07/02/2019 15/03/2019

    Quand je crée ma requête analyse croisée, je mets : En-tête de ligne = client, Valeur = date

    Quel champ dois-je mettre dans en-tête de colonne ? Et où mettre les libellés fixes des en-têtes de colonnes (Date1, Date2, Date3) ?
    Merci pour votre aide

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Une remarque : évitez les mots réservés dans Access comme "Date" pour les noms de vos champs, d'ailleurs normalement il vous avertit de ne pas les utiliser.

    Pour compléter la réponse de tee_Grandbois :

    Quel champ dois-je mettre dans en-tête de colonne ?
    Le champ calculé NumOrdre : "Date" & CpteDom("*";"Client";"Date<=#" & Format([Date];"mm-dd-yyyy" & "#") & " and Client=" & [Client]).

    Et où mettre les libellés fixes des en-têtes de colonnes (Date1, Date2, Date3) ?
    Il faut afficher la feuille des propriété de la requête et mettre sur la propriété "En-têtes des colonnes" : "Date1";"Date2";"Date3";"Date4";"Date5"

    Nom : R_Client.jpg
Affichages : 469
Taille : 122,3 Ko

    Le code SQL ressemblerait à ça :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Max(Client.Date) AS MaxDeDate
    SELECT Client.Client
    FROM Client
    GROUP BY Client.Client
    ORDER BY Client.Client
    PIVOT "Date" & DCount("*","Client","Date<=#" & Format([Date],"mm-dd-yyyy" & "#") & " and Client=" & [Client]) In ("Date1";"Date2";"Date3";"Date4";"Date5");

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2020
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Merci pour votre réponse,
    J'ai adapté votre exemple à mes données mais cela ne fonctionne pas. Dans les colonnes Date1, Date2...., aucune date ne s'affiche. Et le temps d'exécution hyper long !
    Ma table a 2800 enregs.

    je ne vois pas l'erreur que j'ai pu faire.
    Le code SQL :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM Max(BS_Inséminations.DATINS) AS MaxDeDATINS
    SELECT BS_Inséminations.INRA
    FROM BS_Inséminations
    GROUP BY BS_Inséminations.INRA
    PIVOT "DATINS" & DCount("*","BS_Inséminations","DATINS<=#" & Format([DATINS],"mm-dd-yyyy" & "#") & "and INRA=" & [INRA]) In ("Date1","Date2","Date3","Date4","Date5","Date6","Date7");

    Et ma requête :

    Merci pour votre aide.
    Bien cordialement
    Images attachées Images attachées  

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Pour que ça corresponde aux noms des en-têtes il faut mettre dans le pivot :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    PIVOT "Date" & Dcount(...

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2020
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Re,
    Il me semblait que c'est ce que j'avais fait :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    PIVOT "DATINS" & DCount("*","BS_Inséminations","DATINS<=#" & Format([DATINS],"mm-dd-yyyy" & "#") & "and INRA=" & [INRA]) In ("Date1","Date2","Date3","Date4","Date5","Date6","Date7");

    DATINS étant le champ à faire afficher dans les colonnes Date1, Date2...

    Qu'en pensez-vous ?
    Merci pour votre aide

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Non, c'est comme ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    PIVOT "Date" & DCount("*","BS_Inséminations","DATINS<=#" & Format([DATINS],"mm-dd-yyyy" & "#") & "and INRA=" & [INRA]) In ("Date1","Date2","Date3","Date4","Date5","Date6","Date7");

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2020
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Merci pour votre réponse. Ca fonctionne parfaitement.

    J'ai voulu rajouter un entête de ligne (le champ DATMIB).

    Si je rajoute cette colonne dans PIVOT, aucune date (DATINS) ne s'affiche dans les colonnes date.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    PIVOT "Date" & DCount("*","BS_Inséminations","DATINS<=#" & Format([DATINS],"mm-dd-yyyy" & "#") & "and INRA=" & [INRA] & "and DATMIB=" & [DATMIB]) In ("Date1","Date2","Date3","Date4","Date5","Date6","Date7");
    Si je ne mets pas DATMIB dans PIVOT, les dates s'affichent dans les colonnes date mais ne commencent pas toujours à la colonne 1.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    PIVOT "Date" & DCount("*","BS_Inséminations","DATINS<=#" & Format([DATINS],"mm-dd-yyyy" & "#") & "and INRA=" & [INRA]) In ("Date1","Date2","Date3","Date4","Date5","Date6","Date7");

    Nom : Capture1.JPG
Affichages : 415
Taille : 93,0 Ko

    Comment faire ?
    Merci pour votre aide.
    Bien cordialement

  14. #14
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Avez-vous essayé comme ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    PIVOT "Date" & DCount("*","BS_Inséminations","DATINS<=#" & Format([DATINS],"mm-dd-yyyy" & "#") & "and INRA=" & [INRA] & "and DATMIB=#" & Format([DATMIB],"mm-dd-yyyy" & "#") In ("Date1","Date2","Date3","Date4","Date5","Date6","Date7");

    En considérant que [DATMIB] est un champ de type date.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2020
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Super ! La requête fonctionne parfaitement.
    Merci beaucoup.

    Cordialement

  16. #16
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Tant mieux !

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/08/2012, 03h31
  2. [WD-2003] Ancre par défaut sur une ligne
    Par ouisansdoute dans le forum Word
    Réponses: 2
    Dernier message: 20/07/2009, 21h56
  3. Réponses: 2
    Dernier message: 13/10/2008, 16h04
  4. Réponses: 2
    Dernier message: 24/03/2008, 11h35
  5. remplacer les retour de ligne par <br> dans une chaine?
    Par cortex024 dans le forum Langage
    Réponses: 2
    Dernier message: 03/12/2006, 17h22

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