Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 intégration d'une msgbox sur bouton lié à l'envoi de formulaire

PatrickFrancis

XLDnaute Nouveau
Bonjour à tous,

Je ne suis pas très fort dans VBA, mais j'ai trouvé sur le net un bout de code qui permet aux utilisateurs de remplir un tableau excel avec ce dont ils ont besoin, et en cliquant sur le bouton "envoyer" que j'ai ajouté, je reçois leur commande sur ma boite. Ca fonctionne parfaitement.

Ceci dit, quand on clique sur le bouton envoyer, meme si ca marche, il ne se passe rien et l'utilisateur pourrait croire que ca n'a pas fonctionné et cliquer 10 fois dessus et ensuite moi je reçois 10 fois la commande (lol).

Je souhaiterais ajouter une msgbox qui dit "Merci !" et qu'ensuite le bouton devienne grisé afin que l'on ne puisse pas re-cliquer dessus une seconde fois.

Voici mon code ci-dessous, est-ce que quelqu'un peut m'aider

Milles mercis !


Sub SendEmail()
'
' SendEmail Macro
'
'
Dim olApp As Outlook.Application
Set olApp = CreateObject("outlook.application")
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)


With olMail

.To = "xxx.xxx@xxx.ch"
.CC = "xxxxxx.xxxxxx@xxx.ch"
.Subject = " Commande de matériel"
.Body = Range("F7").Value & vbCrLf & vbCrLf _
& Range("F9").Value & vbCrLf & vbCrLf _
& Range("F11").Value & vbCrLf & vbCrLf _
& Range("F13").Value & vbCrLf & vbCrLf _
& Range("F15").Value & vbCrLf & vbCrLf _
& Range("F17").Value & vbCrLf & vbCrLf _
& Range("F19").Value & vbCrLf & vbCrLf _
& Range("F21").Value & vbCrLf & vbCrLf _
& Range("F23").Value & vbCrLf & vbCrLf _
& Range("F25").Value & vbCrLf & vbCrLf _
& Range("F27").Value & vbCrLf & vbCrLf _
& Range("F29").Value & vbCrLf & vbCrLf _
& Range("F31").Value & vbCrLf & vbCrLf _
& Range("F33").Value & vbCrLf & vbCrLf _
& Range("F35").Value & vbCrLf & vbCrLf _
& Range("F37").Value & vbCrLf & vbCrLf _
& Range("F39").Value & vbCrLf & vbCrLf _
& Range("F41").Value

.send

End With


End Sub
 
Solution
il ne faut pas baisser les bras
poser le problème simplement c'est déjà le début d'une solution
un classeur avec un userform à adapter a ton classeur
je viens de voir le message de patty58, cela te fait deux solutions, tu vas y arriver
cordialement
galougalou

patty58

XLDnaute Occasionnel
Bonjour

Je pense que dès que le bouton "Envoyer" a été cliqué, il faut que tu le grises (enabled =False), puis tu le remets en état dès que nécessaire

????

Bonne soirée
 

GALOUGALOU

XLDnaute Accro
bonsoir PatrickFrancis bonsoir le forum

dans le code sendemail en fin de procédure
en supposant que le bouton se nomme commandbutton1

Enrichi (BBcode):
MsgBox ("Merci")
CommandButton1.Visible = False

dans le code de l'userform

Enrichi (BBcode):
Private Sub UserForm_Activate()
CommandButton1.Visible = True
End Sub
cordialement
galougalou
 

PatrickFrancis

XLDnaute Nouveau
merci beaucoup ça marche super pour la msgbox, ca affiche comme il faut, c'est parfait. Par contre pour le bouton qui doit devenir grisé, ça coince. Tu me dis de mettre dans le user form, mais…. je n'ai pas de user form. j'ai juste ajouté un bouton auquel j'ai affecté cette fameuse macro. mais je n'ai rien d'autre quand j'ouvre VBA. pas de userform. du coup je ne sais pas comment s'appelle mon bouton, puisque je ne vois le nom de celui-ci nulle part
 

GALOUGALOU

XLDnaute Accro
bonjour patrickfrancis bonjour le forum
je ne maitrise pas tout sur excel, donc si la solution pour le bouton proposé par patty58 ne te convient pas, je te conseille de créer un userform avec un bouton auquel tu associes ta macro impression, cela me paraît plus simple et là, le bouton disparaîtra après l'impression, ce qui enlèvera à tout utilisateur la possibilité de dupliquer l'impression. A l'appel de l'userform le bouton redeviendra fonctionnel.
cordialement
galougalou
 
Dernière édition:

GALOUGALOU

XLDnaute Accro
bonjour le fil
petite précision, si tu choisis l'userform comme solution et si celui ci n'est utile qu'a l'impression, il n'est pas utile de masquer le bouton, il suffit de fermer l'userform en fin de procédure, donc ci-dessous le code approprié.
Enrichi (BBcode):
MsgBox ("Merci")
unload me
(et rien d'autre)
cordialement
galougalou
 

PatrickFrancis

XLDnaute Nouveau
Merci à tous pour vos réponses. Je pense que je commence à me compliquer la tâche avec ces userforms. je n'arrive à rien, le bouton a fonctionné une fois et je ne sais pas même pas pourquoi, et il a disparu comme prévu et j'ai reçu la commande par e-mail donc j'étais content, mais ensuite impossible de recommencer.

Ce qui est difficile à comprendre c'est qu'en créant un userform, j'ai cette zone grise ou je dois "dessiner" un bouton qui s'appelle commandbutton1 mais je ne sais pas comment faire pour y mettre un code, et est-ce que je dois mettre tout le code ou juste la partie dont vous m'avez parlé plus haut, etc. et une fois de retour dans excel, comment je peux avoir ce bouton que j'ai dessiné dans le userform je ne sais pas comment le faire apparaître...

bref… je vous remercie pour votre aide et le temps consacré à ce poste mais je pense que je vais me contenter de la msgbox "Merci", et tant pis pour le reste. Je pense qu'il me manque un gros paquet de connaissances pour arriver à faire ce que je veux.

Merci à tous !
 

patty58

XLDnaute Occasionnel
Bonjour à tous
Essaie avec ta macro comme cela, sans userform

VB:
Sub SendEmail()
'
' SendEmail Macro
'
Me.CommandButton1.Caption = "Envoi en cours" 'modifie le texte de ton bouton'

With Me.CommandButton1
.BackColor = &H8000000F 'définit la couleur du bouton
.Enabled = False
End With

Dim olApp As Outlook.Application
Set olApp = CreateObject("outlook.application")
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)


With olMail

.To = "xxx.xxx@xxx.ch"
.CC = "xxxxxx.xxxxxx@xxx.ch"
.Subject = " Commande de matériel"
.Body = Range("F7").Value & vbCrLf & vbCrLf _
& Range("F9").Value & vbCrLf & vbCrLf _
& Range("F11").Value & vbCrLf & vbCrLf _
& Range("F13").Value & vbCrLf & vbCrLf _
& Range("F15").Value & vbCrLf & vbCrLf _
& Range("F17").Value & vbCrLf & vbCrLf _
& Range("F19").Value & vbCrLf & vbCrLf _
& Range("F21").Value & vbCrLf & vbCrLf _
& Range("F23").Value & vbCrLf & vbCrLf _
& Range("F25").Value & vbCrLf & vbCrLf _
& Range("F27").Value & vbCrLf & vbCrLf _
& Range("F29").Value & vbCrLf & vbCrLf _
& Range("F31").Value & vbCrLf & vbCrLf _
& Range("F33").Value & vbCrLf & vbCrLf _
& Range("F35").Value & vbCrLf & vbCrLf _
& Range("F37").Value & vbCrLf & vbCrLf _
& Range("F39").Value & vbCrLf & vbCrLf _
& Range("F41").Value

.send

End With
MsgBox "Envoi terminé"

With Me.CommandButton1
.BackColor = &H8000000F  'définit la couleur du bouton
.Enabled = True
.Caption = "Envoyer" ' Là remet le texte initial
End With

End Sub

Pour savoir comment se nomme ton bouton

Développeur==> Mode Création==> Clique droit sur ton bouton ==> Propriétés...l) tu voies le "Name"

Là j'ai mis CommandButton1


Bon courage
 

GALOUGALOU

XLDnaute Accro
il ne faut pas baisser les bras
poser le problème simplement c'est déjà le début d'une solution
un classeur avec un userform à adapter a ton classeur
je viens de voir le message de patty58, cela te fait deux solutions, tu vas y arriver
cordialement
galougalou
 

Pièces jointes

  • pour impression.xlsm
    20 KB · Affichages: 3

PatrickFrancis

XLDnaute Nouveau
Merci pour votre soutien.

J'ai testé avec le code de Patty58, et j'avoue que ça fonctionne plutôt pas mal, et sans userform, comme ça j'arrive à me faire croire que j'y comprends quelque chose

Du coup, je vais m'en tenir à ce code, et aller de l'avant dans mon projet.

Merci encore à tous pour vos réponse et à bientôt !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…