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

Macros Access Discussion :

Macro pour mail sur la sélection active à l'écran et pas tout le formulaire complet


Sujet :

Macros Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 159
    Points : 55
    Points
    55
    Par défaut Macro pour mail sur la sélection active à l'écran et pas tout le formulaire complet
    bonjour à tous

    j'ai déjà trouvé pour imprimer la selection à l'écran et pas tout le formulaire

    En fait j'ai un formulaire avec une boite de recherche d'enregistrement, pour être plus clair j'ai des activités sportives et ma boite sert par exemple a sélectionner musculation et le planning musculation apparait à l'écran et rien que lui

    les commandes sont assez simples puisqu'il existe une "commande imprimer sélection" qu'il n'y a pas avec la fonction "EnvoyerObjetBaseDeDonnees donc le planning des 31 activités est envoyé, moi je ne veux que la sélection de l'écran comme pour l'impression ?

    quelqu'un pourrait me dire quoi ajouter à ma macro ?

    Merci à vous

    Cordialement

    Patrick

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Supposons que tu es un planning mensuel, il faudrait créer un état "E_Planning" paramétré sur le mois.

    Pour générer l'état dans le dossier de la base Access voici du code :

    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
    sub GenererPdf()
    Dim DateJ As Date, m As Long, a As Long
    Dim cheminfichier As String
     
     ' Indiquent le mois et l'année du planning affiché
    a = Me.Annee.Value 
    m= Me.Mois.Value
     
    DateJ = DateSerial(a, M, 1)
     
    ' Chemin complet du pdf à générer
    cheminfichier = CurrentProject.Path & "\Planning de " &  Format(DateJ, "mmmm yyyy") & ".pdf"
     
    ' Génération du pdf
    DoCmd.OutputTo acOutputReport, "E_Planning", "PDF", cheminfichier
     
    End Sub
    Ensuite pour envoyer le fichier, j'utilise 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Private Sub CmdEnvoi_Click()
    Dim Reponse As Integer
    Dim objOutLook As Outlook.Application
    Dim MonMessage As Object
    Dim cheminfichier As String
     
    'On Error GoTo Erreur
     
    Set db = CurrentDb
     
    GenererPDF ' Génère le pdf
     
    ' Chemin complet du pdf à générer
    cheminfichier = CurrentProject.Path & "\Planning de " &  Format(DateJ, "mmmm yyyy") & ".pdf"
     
        If IsNull(Me.IDClient) Then 
          MsgBox ("Choisir un client !")
          Exit Sub
       End If
     
    ' Teste si outlook est ouvert, si pas ouvert le lance :
      If Not IsOutLookRunning() Then
          Dim oShell As Object
          Set oShell = CreateObject("WScript.Shell")
          oShell.Run "outlook"
          Set oShell = Nothing
       End If
     
    'Exit Sub
     
      'Assigner l'objet Outlook
    Set objOutLook = New Outlook.Application
    'Composer le message
    Set MonMessage = objOutLook.createitem(0) 'ouvrir une structure de message
     
    MonMessage.To = Me.EMail ' Email du client
    MonMessage.Subject = "Planning mensuel"
    'Corps du message
     
    MonMessage.Body = "Bonjour Madame, Monsieur " & vbNewLine & vbNewLine & _
                      "Vous trouverez ci-joint votre planning " & vbNewLine & vbNewLine & _
                      "Sincères salutations "
    '-------------------
    MonMessage.Attachments.Add cheminfichier
    'MonMessage.Save
    MonMessage.Send
    'Fermer Outlook
     
    'Libérer la mémoire
    Set objOutLook = Nothing
    Set MonMessage = Nothing
     
    rs.Close
    Set rs = Nothing
     
    Set db = Nothing
     
    Exit Sub
    Erreur:
     
    Select Case Err.Number
       Case -2147467259  ' adresse invalide
             MsgBox "Adresse e-mail invalide"
     
       Case 2501
             MsgBox Err.Number & " " & Err.Description
    End Select
     
    End Sub
    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 159
    Points : 55
    Points
    55
    Par défaut réponse a user
    euh je pense que ce n'est pas la question que je posais mais il est vrai que je me suis peut être mal expliqué

    aussi je vais joindre une pièce pour clarifier la situation

    Comme tu peux le voir sur la copie dans mon formulaire j'ai un champ de recherche pour trouver une activité précise et c'est cet écran que je veux envoyer par mail ( la sélection)

    avec les bouton de commande sous macro en haut du formulaire

    pour l'impression comme signalé pas de problème avec la macro il y a une commande imprimer la sélection et j'en ai profité pour en mettre un pour toutes les activités ( 30 au total )

    C'est exactement ce que je veux faire mais en envoi mail uniquement sur la sélection de l'écran sinon je vais avoir x pages sur l'ensemble des activités

    ai je été clair ami je sais ce n'est pas facile sans avoir vu le formulaire d'imaginer ce qu'il y a dans la tête de l'autre surtout si son explication n'est pas au top lol

    (Pour les plannings mensuel etc j'ai déjà ce traitement qu'un copain m'a aidé à réaliser pas de souci)

    La je crois que le problème est bien posé cette fois

    Merci dans tous les cas d'avoir pris du temps pour me répondre je bosse bénévolement pour une assos et je remets au gout du jour la base de données

    cordialement

    PS bien entendu s'il faut mettre un bout de code sur le bouton de commande à la place de la macro why not( à condition de m'expliquer la manœuvre step by step ) . moi je me sers des macros car je suis nul en code mais ça tu l'avais déjà compris lol

    Patrick
    Images attachées Images attachées  

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Rebonjour,

    Ma réponse précédente revient à dire qu'il vaut toujours mieux utiliser un état, plutôt qu'un formulaire pour imprimer ou envoyer par e-mail.

    Il serait donc préférable de créer un état ayant la même source et synchronisé sur le formulaire.

    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

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 159
    Points : 55
    Points
    55
    Par défaut état a la place du formulaire
    merci de ton aide
    si j'ai bien tout compris

    je fais un état qui sera synchronisé sur la sélection du formulaire suite à ma recherche

    évidemment bien sur je ne sais pas synchroniser le formulaire et l'état ensuite sur l'état puisqu'il sera edite avec la sélection de l'écran un bouton macro dans ce cas pour envoyer par outlook sera parfait la sélection des activités étant faite au préalable

    j'ai bien tout compris ,

    peux tu m'aider pour faire la synchro du formulaire sur la sélection de l'écran après recherche ?

    merci à toi

    pat

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Peut-être essayer d'enregistrer en mode création le formulaire et la source du formulaire avant de l'envoyer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DoCmd.OpenForm "FormulaireRecherche", acViewDesign, , , acHidden
     
    Forms!FormulaireRecherche.RecordSource="select * from Table1..."
     
    DoCmd.Close acForm,  "FormulaireRecherche",, acSaveYes
     
    DoCmd.OpenForm "FormulaireRecherche"
     
    DoCmd.SendObject acform, ""FormulaireRecherche"...
     
    ...
    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

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Je t'envoie un message privé
    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

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Voici le code à mettre sur le bouton d'envoi :

    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
    46
    47
    Private Sub cmdEmailList_Click()
    On Error GoTo err_cmdEmailList_Click
     
    Dim cheminfichier As String
    Dim objOutLook As Object
    Dim MonMessage As Object
     
    ' Chemin complet du pdf à générer
    'cheminfichier = CurrentProject.Path & "\Planning par activité.pdf"
     
    ' Génération du pdf
    'DoCmd.OutputTo acOutputReport, "Planning par activités", "PDF", cheminfichier
     
    ' Teste si outlook est ouvert, si pas ouvert le lance :
     ' If Not IsOutLookRunning() Then
         ' Dim oShell As Object
         ' Set oShell = CreateObject("WScript.Shell")
         ' oShell.Run "outlook"
         ' Set oShell = Nothing
      ' End If
     
      'Assigner l'objet Outlook
    'Set objOutLook = CreateObject("Outlook.Application")
    'Composer le message
    'Set MonMessage = objOutLook.createitem(0) 'ouvrir une structure de message
     
    'MonMessage.To = Me.Email ' Email du client
    'MonMessage.Subject = "Envoi du planning par activité ESL GYM ST LEU"
     
    '-------------------
    'MonMessage.Attachments.Add cheminfichier
    'MonMessage.Save
    'MonMessage.Display
     
    'Libérer la mémoire
    'Set objOutLook = Nothing
    'Set MonMessage = Nothing
     
    DoCmd.SendObject acReport, "Planning par activités", acFormatPDF, , , , "Envoi du planning par activité ESL GYM ST LEU", , True
     
    err_cmdEmailList_Click:
     
       If Err.Number <> 0 Then
          MsgBox Err.Description
       End If
     
    End Sub
    Le code en commentaire concerne Outlook,

    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. [XL-2010] Macro pour boucler sur des OptionButtons
    Par Hellyeah13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/05/2011, 14h26
  2. [XL-2003] Macro pour ajout sur liste
    Par Airone784 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/09/2009, 10h52
  3. Réponses: 0
    Dernier message: 09/03/2009, 16h33
  4. Macro pour imprimer sur "l'imprimante par défaut"
    Par Balboa24 dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 11/01/2009, 00h02
  5. Excel : Macro pour positionnement sur ligne
    Par danielh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/10/2006, 08h45

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