Bonjour,
voila je voudrais afficher un message dans une MSgbox avec du texte et des variables.
Ce serait du type MsgBox("blabla "variable" blabla "variable)
merci
Bonjour,
voila je voudrais afficher un message dans une MSgbox avec du texte et des variables.
Ce serait du type MsgBox("blabla "variable" blabla "variable)
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim VariableNom As String VariableNom = "Test" MsgBox("Bonjour " & VariableNom & " !")
mais comment on fait si la variable est un entier
on fait une conversion?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim VarInt As Integer VarInt = 3 MsgBox(VarInt.ToString())
En faite j'ai essayer et ca marche aussi avec les Integer
Dim i As Integer
i=6
MsgBox("Il est " & i & " heures") par exemple.
En ayant l'option explicit à false, oui ça fonctionne. Idéalement, il faudrait toujours convertir les types pour garder une bonne cohérence.
Explicit et Strict devraient toujours être activées.
C'est d'ailleurs réglable par défaut dans Visual Studio.
te permettra d'afficher les valeurs de un_entier 1 et un_entier2 en affichant une MsgBox du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox(String.Format("du texte {0} du texte {1} et encore du texte", un_entier1, un_entier2))
"du texte 3 du texte 29 et encore du texte"
A toi de voir l'aide pour formater tout ca ...
Résolu ?
Cordialement,
Ch'Portos.
ou encore :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 msgbox("blabla " + variable + " blabla") 'et si tu veux mettre des variables séparées d'espace : msgbox(variable1 + " " + variable2 + " " + ... etc)
Bonjour les experts,
Apres quelques recherches sur internet j'ai trouvé un code (je l'ai modifié) qui permet d'envoyer des emails pour prévenir un utilisateur d'étalonner son appareil.
Fonction :
Ce code permet de comparer toutes les dates de la colonne E à la date d'aujourd'hui, et si la date de Cells(i, 5) [ i représente le compteur de la boucle for, à chaque fois qu'il incrémente on passe à comparer la date de la cellule suivante] est supérieur à la date d'aujourd'hui il envoie un mail dans l'adresse mail qui se trouve dans la colonne C correspondante (envoyerA = Cells(i, 3).Value).
Message de mail envoyé est :
Call stream.WriteText("Bonjour, <br /> Votre appareil à étalloner dans 2 mois. <br />Merci de mettre à jour les données de fichier excel après l'étalonnage.")
Ma demande est la suivante:
Je voudrais que le message du mail que j'envoie contient (en fonction des variables de la boucle for):
- Numéro de l'appareil (qui se trouvent dans la colonne A)
- Nombre de jours avant expiration
Un message de genre:
"Bonjour,
Votre appareil (.....) expire dans (.....) jours."
Vous trouverez en piece jointe mon fichier excel qui contient le code.
Merci d'avance pour votre aide. C'est urgent
ZenZiTone merci de me rappeler qu'on est sur un forum. J'ai dit "c'est urgent" parce que je suis dans une entreprise et j'ai une date pour réaliser cette tache.
Le problème c'est que aujourd'hui le corps message dans le mail envoyé est:
"Votre appareil à étalloner dans 2 mois. <br />Merci de mettre à jour les données de fichier excel après l'étalonnage" est standard.
Ce que je voudrais faire c'est par exemple si la condition est "If Cel > DateSerial(Year(Date), Month(Date), Day(Date))" est vrai dans la cellule E3, donc le corps message du mail soit :
"Votre appareil dont le numéro est "afficher le numéro dans la cellule A3" à étalloner."
J'espere que j'ai bien expliqué mon probléme.
PS : Je suis nul en VBA (le code je l'ai trouvé sur internet et j'ai essayé de l'ai modifié)
Tu développes donc en VBA? Dans ce cas je ne sais pas si ma réponse va convenir, mais en .NET tu peux :
1-Stocker la/les valeurs que tu souhaites inscrire dans une/des variables
2-Formater ta chaîne de caractères à l'aide de String.Format
Tu trouveras tous les renseignements nécessaires à String.Format sur la documentation Microsoft.
J'ai pas compris du tout ce que cela veut dire. Je ne suis pas informaticien :/
Private Sub sendMail2()
Dim envoyerA As String, Subject As String, Cel As Date, i As Integer, x As Long
x = Cells(Rows.Count, "E").End(xlUp).Row
For i = 2 To 4
Cel = Cells(i, 5).Value ' Affecter à Cel la valeur de la cellule correspondante de i
If Cel > DateSerial(Year(Date), Month(Date), Day(Date)) Then
envoyerA = Cells(i, 3).Value ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
Subject = "Rappel pour la calibration" ' Indiquer ici le sujet de l'e-mail :
Dim s As Object
Dim docMail As Object
Dim body As Object
Dim stream As Object
Set s = CreateObject("Notes.NotesSession")
Set Db = s.CurrentDatabase
s.ConvertMIME = False
Set docMail = Db.CreateDocument
With docMail
.Form = "Memo"
.SendTo = envoyerA
.Subject = Subject
.FROM = s.COMMONUSERNAME
.ReplyTo = s.COMMONUSERNAME
'.Principal = FROM ADDRESS
End With
Set stream = s.CreateStream
Set body = docMail.CreateMIMEEntity
Call stream.WriteText("Bonjour, <br /> Votre appareil à étalloner dans quelques jours. <br />Merci de mettre à jour les données de fichier excel après l'étalonnage.") ' <br /> pour sauter une ligne dans le code HTML
Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)
Call docMail.SEND(False)
Set docMail = Nothing
Set body = Nothing
Set stream = Nothing
MsgBox "Message envoyé"
End If
Next
End Sub
Est-ce que tu peux me dire comment faire ? où me donner des instructions ou des pistes qui peuvent m'aider ! mercii bcp![]()
Cette ligne là permet de définir le texte que tu vas écrire dans le corps du message (le texte est écrit dans un Stream qui sera envoyé dans le SetContentFromText. Pour plus d'informations sur ces notions, je te laisse te documenter). Ce qui t'intéresse donc c'est de modifier la chaine de caractères que tu passes au WriteText. Tu pourras donc avoir quelque chose du genre :
A toi de compléter avec le texte et les paramètres que tu souhaites écrire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim MonParametre as Integer = 2 Dim MonTexte as String = String.Format("MonText avec un paramètre : {0}", MonParametre) Call stream.WriteText(MonTexte)
J'ai résolu le probleme, au fait il y avait juste des instructions que j'ai du les ajouter au bon endroit. Merci quand meme ZenZiTone pour tes réponses.
Si un jour quelqu'un veut s'inspirer de ça, voila le code qui marche bien.
Private Sub sendMail2()
Dim envoyerA As String, Subject As String, Cel As Date, i As Integer, x As Long
x = Cells(Rows.Count, "E").End(xlUp).Row 'Détection de cellule vide dans la colonne E
For i = 2 To 5
Cel = Cells(i, 5).Value ' Affecter à Cel la valeur de la cellule correspondante de i
If Cel > DateSerial(Year(Date), Month(Date) + 2, Day(Date)) Then
envoyerA = Cells(i, 3).Value ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
Subject = "blablabla" ' Indiquer ici le sujet de l'e-mail :
Dim s As Object
Dim docMail As Object
Dim body As Object
Dim stream As Object
Set s = CreateObject("Notes.NotesSession")
Set Db = s.CurrentDatabase 'Collection des requêtes de la base de données en cours !
s.ConvertMIME = False ' Do not convert MIME to rich text
Set docMail = Db.CreateDocument 'Create email to be sent
With docMail
.Form = "Memo" ' déclarer la valeur initiale de Form
.SendTo = envoyerA ' déclarer la valeur initiale de SendTo
.Subject = Subject ' déclarer la valeur initiale de Subject
.FROM = s.COMMONUSERNAME ' déclarer la valeur initiale de FROM
.ReplyTo = s.COMMONUSERNAME ' déclarer la valeur initiale de ReplyTo
'.Principal = FROM ADDRESS
End With
Set stream = s.CreateStream
Set body = docMail.CreateMIMEEntity
Call stream.WriteText("Bonjour, <br /> Nombre de jours avant expiration à compter d'aujourd'hui pour l'appareil N° :" & _
Cells(i, 1).Value & " <br /> Est :" & DateDiff("d", DateSerial(Year(Date), Month(Date), Day(Date)), Cells(i, 5).Value) & _
" Jour(s)")
Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)
Call docMail.SEND(False)
Set docMail = Nothing
Set body = Nothing
Set stream = Nothing
MsgBox "Message envoyé à :" & Cells(i, 2) ' Indiquer le prénom de la personne à qui le mail a été envoyé (se trouve dans la colonne B et ligne i)
End If
Next
End Sub
Partager