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 :

Utiliser les champs d'une table pour modifier une procédure événementielle [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Femme Profil pro
    Administrateur Projets
    Inscrit en
    Mars 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Administrateur Projets
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2014
    Messages : 27
    Points : 23
    Points
    23
    Par défaut Utiliser les champs d'une table pour modifier une procédure événementielle
    Bonjour
    Je suis autodidacte et pas dans l'informatique Par contre j'adore access et j'essaye d'optimiser mon travail avec des bases access.
    J'utilise beaucoup le site pour me former et creuser dans les tuto, la faq et les discussions, et généralement je trouve mon bonheur (donc merci pour toutes les autres fois où j'ai trouvé ma solution!)
    Là je sèche et je ne sais pas trop par quel bout prendre le sujet ou chercher...

    J'ai sur un formulaire un bouton qui me sert à envoyer un mail d'alerte.
    Jusqu'à présent le contenu de mon mail (sujet et corps de texte) était dans le code sur l’événement clic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    strSubject = INFO SCoPE: Annulation de la commande" & strNumDRD & " (Projet :" & StrProjet & ").
    strMessageText = "Bonjour," & Chr(13) & Chr(10) & Chr(10) "Veuillez trouver ci joint, pour information, une copie de la commande " & stDocName2 & " qui a fait l'objet d'une modification." & Chr(13) & Chr(10) & Chr(10)
    DoCmd.SendObject acReport, , acFormatPDF, strListTo, , , strSubject, strMessageText, True
    Cela fonctionne très bien mais si je veux changer le contenu du mail je dois passer dans le code et j'aurais aimé pouvoir le faire sans avoir besoin de rentrer dans l'éditeur vba
    J'ai donc imaginé ce stratagème:
    J'ai fait une table qui contient les infos associées à mon mail
    je vais à l'aide d'une requête chercher ces infos
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                chaîneSQL = "SELECT [Lex_Mails].Subject,[Lex_Mails].MessageText"
                chaîneSQL = chaîneSQL & " FROM [Lex_Mails]"
                chaîneSQL = chaîneSQL & " WHERE ((([Lex_Mails].NumRefMail)=" & strFiltre & "))"
                'Execussion de la requette et stockage dans un recordset du résultat
                Set rst = bds.OpenRecordset(chaîneSQL)
                'saisie du recordset dans les variables
                strSubject = rst("Subject")
                strMessageText = rst("MessageText")
                'Libération le recordset utilisé
                rst.Close
                Set rst = Nothing
    le problème est que j'ai bien mon texte comme avant... contenu dans mes deux variables ....constantes.... (en vocabulaire je ne suis pas douée... il me manque quelques bases et je pense que le problème vient de là )
    j'ai donc :
    strSubject = "INFO SCoPE: Annulation de la commande " & strNumDRD & " (Projet :" & StrProjet & ")."
    et
    strMessageText = "Bonjour," & Chr(13) & Chr(10) & Chr(10) "Veuillez trouver ci joint, pour information, une copie de la commande " & stDocName2 & " qui a fait l'objet d'une modification." & Chr(13) & Chr(10) & Chr(10)

    Mais je n'arrive pas à faire en sorte que chaque "string" (strNumDRD , StrProjet) soit remplacée par sa valeur bien que la valeur soit définie correctement dans le code vba
    est ce que quelqu’un pourrait me mettre sur la piste... je comprends bien que tout le contenu de mon champ est compris comme du texte... comment faire pour que les différentes variables contenues dans le texte soient remplacées par leur valeur? est ce que j'ai un moyen d'aboutir avec cette méthode où est ce que je dois prendre un autre chemin???

    Je vous remercie d'avance pour votre aide

    et merci encore pour tout le boulot qui est fait sur ce site

    Bien à vous

    Sabine

  2. #2
    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
    Bonsoir SBIBobinette,
    si on insère une variable dans une chaîne de caractères (entre ""), elle devient un texte fixe.
    Pour changer une variable dans un texte, il faut la remplacer par sa valeur en utilisant la fonction Replace().

    Personnellement, je saisirai les textes en entourant les "variables" d'un signe reconnaissable le pipe, par exemple, "|" obtenu avec les 2 touches AltGr et 6 :
    pour le champ Subject:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INFO SCoPE: Annulation de la commande |strNumDRD| (Projet : |StrProjet|).
    pour le champ MessageText:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Bonjour,|vbCrLf|Veuillez trouver ci joint, pour information, une copie de la commande |stDocName2| qui a fait l'objet d'une modification.|vbCrLf|
    Il suffit ensuite de remplacer le nom des variables par les vraies variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ' changement des variables dans le texte
    strSubject = Replace(strSubject, "|strNumDRD|", strNumDRD)
    strSubject = Replace(strSubject, "|StrProjet|", StrProjet)
     
    strMessageText = Replace(strMessageText, "|stDocname2|", stDocName2)
    strMessageText = Replace(strMessageText, "|vbCrLf|", vbCrLf)
    Pour info, la constante VbCrLf (retour chariot et saut de ligne) est plus économique à utiliser car elle correspond aux caractères Chr(10) (saut de ligne) et Chr(13) (retour chariot).
    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 ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Administrateur Projets
    Inscrit en
    Mars 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Administrateur Projets
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2014
    Messages : 27
    Points : 23
    Points
    23
    Par défaut Merci pour tout
    je prends les deux tuyaux! j'avais bien compris que cela passait comme du texte mais je ne savais pas comment m'en sortir c'est super je prends aussi pour le saut de ligne en effet plus économique
    J'essaye de suite!

    ça fonctionne parfaitement merci beaucoup

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour Bobinette,
    Tire la chevillette et clique sur , ainsi la demande en suspens cherra…


    En clair : merci de cliquer sur quand la réponse résout ta demande.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    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 Claude,
    Bonjour Bobinette,
    Tire la chevillette et clique sur , ainsi la demande en suspens cherra…
    , et
    je n'aurai pas osé la faire celle-ci ...
    Merci
    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 ?

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Salut Guy,

    Il y en a même qui prétendent que j’ai mangé la grand-mère et la gamine !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/04/2017, 22h57
  2. Faire apparaître une liste pour modifier une table
    Par toutoune95800 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/06/2013, 09h05
  3. Réponses: 3
    Dernier message: 09/12/2011, 17h00
  4. [AC-2007] Utiliser la valeur d'un champ d'une table pour faire une requête
    Par tibofo dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/09/2009, 14h10
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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