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 :

Problématique quelle requete faire pour obtenir mon résultat


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut Problématique quelle requete faire pour obtenir mon résultat
    Bonjour

    Je suis débutant sous access 2007 ( possibilité d'aller sur 2010 si besoin) et j'ai une problématique pour synthétiser les informations de 2 tables afin d'en créer une 3ème, je pense qu il faut faire des requêtes mais je bloque un peu à cause de ma faible connaissance.

    Voila le scenario:

    Table 1 Elle contient Champs correspondants a des noms, prénoms et plein d'informations sur des individus.
    Tables 2 Construite à partir d un fichier Excel lié, elle contient des champs lié à une ou des activités précises sur lesquelles on va affecter une personne sachant que une personne peut se voir affecter 1,2,ou 3 taches
    Je veut créer une table 3 qui me servira à faire du publipostage et qui reprendra quelques champs de la table 1 et des champs construit à partir de valeur récupérer dans la table 2

    exemple:

    Table 1:

    Jean / Dupont / sa date de naissance / son adresse / son tel / etc...

    Robert / Durand / sa date de naissance / son adresse / son tel / etc...

    Table 2:

    Poste 1 / 8H00 / Entreprise Michu / Jean Dupont / date
    Poste 2 / 20H00 / Entreprise Popol / Robert Durand / date
    Poste 3 / 12H00 / Entreprise Popol / Jean Dupont / date

    Table 3:

    Jean / Dupont / sa date de naissance / son adresse / son tel / etc... + Poste 1 / 8H00 / Entreprise Michu / date + Poste 3 / 12H00 / Entreprise Popol / date + Null
    Robert / Durand / sa date de naissance / son adresse / son tel / etc... + Poste 2 / 20H00 / Entreprise Popol / date + Null + Null

    Pour le moment j'ai trouvé comment concaténer dans la table 1 les champs "nom" et "prénom" pour obtenir un autre champs "identité" afin d'avoir un élément commun entre les deux tables, par contre je ne vois pas comment faire en sorte que la requête vienne lire la table 1 sur le champs identité et voir dans la table 2 si cette identité est assigné à des taches pour ensuite si cette condition est respecté transférer les éléments choisis dans la table 3.

    Quel requête va contrôler que pour un individu un poste est déjà affecter et que donc celui ci qui arrive vient se mettre en position 2, idem jusqu au 3

    Voila j'espère que je suis clair si vous pouvez me donner des piste de travail cela m'aiderai beaucoup

    Merci

  2. #2
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour giulian12,

    La solution est très simple puisqu'il s'agit de faire une requête de jointure entre ces 2 tables,

    Je t'incite très fortement à lire ce tutoriel pour comprendre le fonctionnement des requêtes sous Access.

    La petite subtilité que tu dois gérer est que tu dois gérer une clé composite "identité" qui concatène les champs "nom" et "prénom" de la table 1.
    Tu as donc du probablement créer une requête qui fait (je te l'écris en code SQL)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.Prénom & " " &  Table1.nom as identité,Table1.Prénom, Table1.nom, Table1.[date de naissance], Table1.adresse, Table1.tel FROM Table1;
    La deuxième opération que tu vas donc faire sera de créer une requête de jointure entre cette requête (que j'appellerai ici requete1) et ta table2

    Je t'écris le squelette du code en SQL, mais tu pourras le faire facilement avec l'éditeur de requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Requête1.Prénom, Requête1.nom, Requête1.[date de naissance], Requête1.adresse, Requête1.tel, Table2.poste, Table2.heure, Table2.entreprise, Table2.salarié
    FROM Requête1 INNER JOIN Table2 ON Requête1.identité = Table2.salarié;
    Et la tu as l'ensemble de tes données, avec une ligne par élément de jointure

    ex ici tu as

    Table1
    Prénom nom date de naissance adresse tel
    jean dupont 01/01/2000 1 rue des oiseaux 01010101
    Robert durand 25/12/1999 le ciel 012345678

    table2


    poste heure entreprise salarié date poste
    poste 1 8h00 Entreprise Michu Jean Dupont 04/04/2015
    poste 2 20h00 Entreprise Popol Robert Durand 03/04/2015
    poste 3 12H00 Entreprise Popol Jean Dupont 30/04/2015

    Requete de jointure

    Prénom nom date de naissance adresse tel poste heure entreprise salarié
    jean dupont 01/01/2000 1 rue des oiseaux 01010101 poste 3 12H00 Entreprise Popol Jean Dupont
    jean dupont 01/01/2000 1 rue des oiseaux 01010101 poste 1 8h00 Entreprise Michu Jean Dupont
    Robert durand 25/12/1999 le ciel 012345678 poste 2 20h00 Entreprise Popol Robert Durand

    Maintenant, se ne vois pas l’intérêt de mettre sur une seule ligne (sauf pour des raisons de présentation) l'ensemble des postes affectés sur 1 salarié

    car là il te faudra faire une requête d'analyse croisée, qui est plutôt limitée en terme de nombre de champs
    Dans ce cas, te te conseille d'exporte les résultats de ta requête sous Excel, où tu pourras utiliser toute la puissance du TCD pour mettre en forme tes données

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    Merci Dumas.blr

    Depuis hier soir j'ai je pense bien avancé j'ai effectivement trouvé avec des tutos comment faire et j'ai:

    - exporter définitivement mon fichier excel en tant que table local de ma base c'est donc bien ma table 2.
    - créer un champs ID qui est la concaténation de nom et prénom de la table 1
    - J'ai découvert la relation entre mes deux tables ce que tu doit appeler la jointure en SQL, la table 1 par le champ ID est lié à la table 2 sur son champs salarié.
    - Le reste de ma requête consiste à afficher ce que je veut voir comme champs de chaque table.

    J'ai donc bien une sélection de tous les postes pourvus en fonctions des personnes, si des postes sont vacants il ne sont pas affichés.

    Suite de la problématique:

    1, Je voudrais que la personne qui doit remplir le champs salarié de la table 2 puisse avoir uniquement le choix ( liste déroulante avec saisie prédictive) dans les informations issues du champs ID de la table 1

    2, Je voudrais qu'il y ai qu une seule ligne par personne car effectivement si la personne se voit affecter 2-3 postes elle à donc 2-3 lignes comme dans ton exemple.

    Cela me pose un problème pour mon publipostage car dans le cas où l'individu à 3 postes pour celui ci je dois lui envoyer la liste des 3 postes qui lui sont affectés en un seul document et parallèlement je dois envoyer à chaque employeur l'information que l'individu va avoir un poste chez eux mais qu il le partage également avec les 2 autres employeur.


    EDIT:

    J'ai réussi à faire le point 1, en modifiant le type du champ salarié de la table 2 avec l'assistant de liste et l'option recherche des valeurs dans une autre table, ces derniers sont donc ceux entrés dans le champ ID de la table 1.
    Cependant pour cette méthode je suis obligé de supprimer un champ de ma table 1 qui doit être un index car il est appelé et forcé à chaque fois en même temps que mon champ ID pas moyen de faire autrement

  4. #4
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour giulian12,


    Cela me pose un problème pour mon publipostage car dans le cas où l'individu à 3 postes pour celui ci je dois lui envoyer la liste des 3 postes qui lui sont affectés en un seul document et parallèlement je dois envoyer à chaque employeur l'information que l'individu va avoir un poste chez eux mais qu il le partage également avec les 2 autres employeur.
    Il me semble que tu devrais consulter les tutos sur les états (en voici un), car ceux-ci répondront parfaitement à tes besoins.

    Tu pourras construire 2 états basés sur ta requête que tu as construite, en filtrant ou en regroupant les champs. Je te laisse découvrit plus en avant les tutoriels du site. Ils sont très complets et très bien écrits.

    Si tu as des difficultés pour bien maîtriser la construction d'états, n'hésite pas alors à revenir vers nous

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    J'ai bien avancé sur la suite de mon projet grâce à ta solution des état effectivement cela s'apparente à un publipostage.

    Je n arrive à gérer le regroupement sur un champs à partir d un gabarit que j'ai exporté, je m explique:

    - Si j'utilise l'assistant de création d'un état sur a requête et que je vais jusqu au bout en choisissant de regrouper sur le champs ID de la table 1 avec les modèle par défaut de l'assistant cela fonctionne bien, j'ai bien Jean dupont une seule fois et la liste de tous les postes associés.

    - Si je crée un état vierge dans lequel je fait copier/coller de mon modèle de mise en page issue de word dans la zone détail, je supprime en tête et pied de page et que ensuite je positionne les champs des tables de la requête pour a la fin faire un regroupement sur la table identité. Cela ne fonctionne pas si la personne est appelée trois fois j'ai trois documents différent pour ces trois postes alors que je voudrai un document qui résume ces trois postes.

    Je sait que je ne suis pas loin je doit tourner autour mais je ne comprend pas cette notions de regroupement.

  6. #6
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Attention,

    Le regroupement dans les états / formulaire est totalement indépendants des regroupement dans les requêtes (clauses GROUP BY).

    Pour regrouper dans les états, utilise le menu regroupement / totaux. Tu auras alors une zone en-tête de groupe, ou tu mettras par exemple ta référence salarié.

    Le tutoriel dont je t'ai communiqué la référence explique parfaitement le fonctionnement. Prends le temps de l'assimiler, car ce n'est pas forcément évident du premier coup.

    Je te déconseille de copier/coller les mise en pages de word vers access, car elles ne fonctionnent pas du tout de la même manière. Mieux vaut créer ton état via l'assistant, et effectuer les mises en forme / mises en page dans un deuxième temps. Les possibilités sous access, si elles sont peut-être un peu plus limitées que sous Word, sont quand-même très puissantes.

    Bonne chance et n’hésite pas à nous contacter sur le forum

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    Yep merci j'ai assimilé la chose importante, la zone détail est reproduite autant de fois qu il y a de poste pour le salarié, donc comme j avais fait tout ma mise en page la dedans forcement je n'obtenait pas ce que je voulais.

    Il faut donc jouer sur la mise en page avec l'en tête et le pied de groupe qui vont enfermer les valeurs qui varient.
    J'ai réussi a importer les mise en page de word qui apparaissent comme une image et je met mes champs par dessus.

    Je vais voir a faire un truc plus propre maintenant que je pense avoir pigé le truc, par contre j'ai essayé de mettre une zone texte simple pour écrire une phrase et j'ai vu quelle est lié à un champs et si je n'en met pas on me demande une valeur lorsque j'appelle mon état

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    Dans la dernière partie de ma problématique je dois envoyer l'état par mail en pièce jointe afin de garder la mise en forme a chaque salarié et a chaque employeur.

    J'ai lu pas mal de choses à ce sujet mais je suis un peu perdu, je vois des morceaux de code a intégrer mais je ne sait pas où ? puis je avoir encore de vos lumières la dessus ?

    Merci

  9. #9
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour Gulian12,

    L'intégration d'un envoi de mail en automatique est assez complexe, surtout si tu ne connais pas le VBA.

    De plus, pour automatiser, il faudrait créer un champ mail dans la table des employeurs.

    Enfin, cela ne t'évitera pas d'exporter le mail sous un format lisible par des destinataires qui n'ont pas Access. Il te faudra, je pense, exporter les états sous format pdf, qui devrai à priori conserver la mise en forme de ton état.

    Dans un premier temps, la solution la plus simple (si tu n'a pas trop d'employeurs) serait de filtrer l'état par employeur et d'exporter l'état par courrier électronique dans l'aperçu avant impression tu peux les exporter sous format PDF par exemple (essaye de regarder le format qui te convienne le mieux et qui ne perde pas la mise en forme de l'état).

    Dans un second temps, on peut envisager d'automatiser l'envoi, mais cela demande de solides connaissances en VBA et un peu de temps. Si tu souhaite aller dans cette voie là, informe-nous et nous essaierons de trouver du temps pour t'expliquer.

    Une solution intermédiaire : conçoit un formulaire avec une liste déroulante pour filtrer tes états et exporte chaque état filtré en PJ par mail via un bouton

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    Alors

    Il est prévu que mes 2 table comporte une adresse mails pour le salarié et pour l'employeur.

    Jusqu'à présent nous utilisions le publipostage mais vu que l’état obtenu dans les étapes précédentes convient très bien, il faudrait l'envoyé par mail la problématique est que bien évidemment il y en à beaucoup et que faire un par un n est pas la solution recherchée.

    la solution de filtre par employeur peut être pertinente afin d'envoyer à un employeur en un seul mail tout ce qui le concerne ( c'est cela que permet le filtrage évoqué ?)

    Le salarié lui voit déjà tous les postes qui lui sont affectés grâce à l'état généré donc il ne reçoit qu'une seule pièce jointe.

    Cela ne me dérange pas de mettre un peu le nez dans le VBA j aime bien découvrir et apprendre de nouvelles choses, avant de poster sur ce fil je ne savais rien d'access j en connait nettement plus désormais

  11. #11
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour Gulian12

    J'ai trouvé un tutoriel (regarde ici) qui te montre un exemple d'envoi massif de mails (il te suffit de rajouter la piece jointe dans les attributs). Il te faudra aussi, dans le code, intégrer l'export de l'état filtré avant de le mettre en PJ. Ce tuto marche avec outlook. Toujours avec outlook, regarde les FAQ ici. Si tu utilise une autre messagerie, regarde plutôt ces FAQ ICI

    Bon courage et à bientôt sur le forum

  12. #12
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    Merci

    J'ai relu le lien que tu m as donner car je l avais déjà parcouru, il ne me permet pas d'envoyer mon état en pièce jointe par mail

  13. #13
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Regarde bien mon post, il n'y a pas qu'un lien, mais 3 liens dont le dernier gère les PJ (pour des clients mail génériques)

    Sinon, dans le tuto, je t'ai dit qu'il suffisait de rajouter la PJ dans les attributs. Si tu utilisae outlook, tu peux regarder les objets. dans la doc officielle outloook, il y a bien un objet attachement dans la classe Outlook.MailItem


    voici la doc officielle

    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
    Référence du développeur Outlook
    Attachments, objet
    Afficher tout Masquer tout
    Contient un ensemble d’objets Attachment qui représentent les pièces jointes d’un élément (élément : dans Outlook, unité de base pour le stockage d’informations (équivalent d’un fichier pour d’autres programmes). Les éléments incluent les messages électroniques, les rendez-vous, les contacts, les tâches, les entrées du journal, les notes, ainsi que les éléments et documents publiés.) Outlook.Remarques La propriété Attachments permet de renvoyer la collection Attachments de tout élément Outlook (à l’exception des notes). La méthode Add permet d’ajouter une pièce jointe à un élément. Pour garantir des résultats cohérents, vous devez toujours enregistrer un élément avant d'ajouter ou de supprimer des objets de la collection Attachments de l'élément. Exemple Cet exemple Visual Basic pour Applications (VBA) montre comment créer un message électronique, attacher un fichier Q496.xls sous la forme d'une pièce jointe (et non d'une liaison) et donner un titre à la pièce jointe.
    Visual Basic pour Applications
    Set myItem = Application.CreateItem(olMailItem) myItem.Save Set myAttachments = myItem.Attachments myAttachments.Add "C:\My Documents\Q496.xls", _ olByValue, 1, "4th Quarter 1996 Results Chart"

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    j'ai lu les liens et je cherche depuis pas mal de temps et je ne comprend rien, il y a quelque chose qui m'échappe

    - Je ne sait pas comment mon état se transforme en PDF individualisé par employeur et salarié, je ne veut pas un pdf de 500 pages, mais 500 pdf d'une page envoyé respectivement à chaque destinataire

    - Avec tous les morceaux de code que je vois dans mes recherches pour faire envoi par mail je ne sait pas où je met ce code ?


    EDIT: j avance j'ai compris à quoi servent les modules

  15. #15
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    j'ai trouvé et adapté un module qui me découpe mon pdf en fonction de l'individu j' ai testé et cela marche cela stock tous les pdf dans un répertoire:

    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
    42
    43
    44
    45
     
    Option Compare Database
    ' ---
    ' CREATION DE FICHES PDF
    ' ---
    '
    Sub CreerFichesInterlocuteurs()
        Dim strFichier As String
        Dim strFichierPDF As String
        Dim strEtat As String
        Dim strFiltre As String
        Dim rst As DAO.Recordset
     
        ' Nom de l'état à imprimer
        strEtat = "RequêteCDE12maitest"
     
        ' Nom de base du fichier PDF à créer
        strFichier = "C:\test\" & "TestInterlocuteur {0} - {1} {2}.pdf"
     
        ' Ouvrir la liste des personnes
        Set rst = CurrentDb.OpenRecordset("RequêteCDE12", dbOpenSnapshot)
     
        ' Parcourir toute la liste
        While Not rst.EOF
            ' Le nom du fichier varie en fonction de la personne
            strFichierPDF = StringFormat(strFichier, _
                Format(rst("EnsCode"), "000"), _
                rst("EnsNom"), _
                rst("EnsPrénom"))
     
            ' Construire le filtre
            strFiltre = "[EnsCode] = " & rst("EnsCode")
     
            ' Imprimer l'état en le filtrant sur la personne concernée
            PrintAsPDF strFichierPDF, strEtat, strFiltre
     
            ' Personne suivante
            rst.MoveNext
        Wend
     
        ' Terminé !
        rst.Close
        Set rst = Nothing
        MsgBox "Opération terminée !", vbInformation
    End Sub

    Ensuite j'ai un module qui envoi par mail des fichiers joint avec outlook:

    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
     
    Option Compare Database
     
    ' ---
    ' TEST DE LA PROCEDURE SendOLMail2
    ' ---
    '
    Sub TestSendOLMail2()
    Dim astrFichiers(1 To 3) As String
     
    ' Chemin des 3 fichiers à joindre
    astrFichiers(1) = "C:\test\TestInterlocuteur 006 -"
    astrFichiers(2) = "C:\test\TestInterlocuteur 009 -"
    astrFichiers(3) = "C:\test\TestInterlocuteur 935 -"
     
    ' On expédie le message
    SendOLMail2 "monmail@mail.com", _
      "Quelques pièces jointes...", _
      "Salut," & vbCrLf & "Ci-joint, quelques fichiers pour tester..." _
        & vbCrLf & "-- giulian.", _
      False, _
      astrFichiers
    End Sub

    J'aimerais une sorte de fusion des deux mon 1er code découpe mon état en fichiers in,dividuelpdf puis les envoi automatiquement par mail en fonction d'un champs mail de la table

  16. #16
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    je me suis permis d'ouvrir une post dans la section VBA pour la suite car cela ne concerne plus vraiment des problème de requête désormais

    http://www.developpez.net/forums/d15...s/#post8236245

  17. #17
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    La partie module étant finie (Merci loufab) je reviens sur quelque détails pour finaliser mon projet


    j'ai un état principal avec des informations lié à un sous état dans lequel certaines information de l'état principal peuvent être appelées également.

    J'aimerais dire à mon sous état que si le contenu d'un champ apparait dans l'état principal alors il ne faut pas l'afficher est ce possible ?

  18. #18
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour giulian12,

    Ravi que tu ais pu avancer côté VBA. Ton programme correspond à solution que j'aurais préconisé.

    Maintenant, je ne comprends pas exactement ce que tu veux dire. Selon le filtre que tu appliques, certains champs de l'état apparaissent, ou pas ?


    Tu n'es pas obligé d'afficher les informations dans l'état pour qu'elles soient visible du sous-état. Il suffit que le champ soit masqué. Par contre, il faut bien le définir dans l'état principal.

    Au besoin, tu pourras, si besoin, demander à masquer le champ, via du VBA; associé à un code événement. Je pense que l'événement le plus indiqué serait : "au reformatage"

  19. #19
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Points : 10
    Points
    10
    Par défaut
    j'ai presque ma solution

    c'est de la mise en forme conditionnelle j'ai réussi à dire dans mon sous état a mon contrôle qui est un champ " si ta valeur est égale à un autre champ de l'état principale alors tu te met en rouge" et ca marche

    je veut la même chose mais au lieu de lui dire tu te met en rouge je lui dit tu ne t'affiche pas est ce possible ?

    j'arrive à le faire en trichant et en lui disant de s'écrire en blanc sur fond blanc du coup on ne le voit pas mais il est là quand même


    En terme non access:


    L’entreprise propose un emploi, je lui affecte une personne mais cette personne est aussi affecté à une autre entreprise partage du temps de travail.
    Dans l’état principal que j' envoi a chaque employeur qui décrit tout il y un mention qui dit cette personne est aussi affecté à : et là cela appelle mon sous état avec la liste de tous les poste occupé par cette personne.
    De ce fait il y au doublon car l'employeur se voit dans la liste de ce sous état et pour ceux qui ont qu'un seul poste cette mention apparait alors qu'elle est inutile.

  20. #20
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour Gulian12,

    Là, tu utilise une astuce (que j’appellerais plutôt bidouille) qui peut-être résolue si l'on modifie la requête.
    L'idée est de faire apparaître, pour un salarié et un employeur donnés tous les postes affectés au salarié non liés à l'entreprise de l'employeur

    communique-nous la requête et nous verrons comment t'aider

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/02/2014, 19h04
  2. Quelle requête SQL pour obtenir mon résultat ?
    Par nicolas.pied dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/02/2007, 09h58
  3. Réponses: 3
    Dernier message: 29/09/2006, 09h48

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