XL 2021 Mise en forme MsgBox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour à tous,
J'essaye en vain de pouvoir "améliorer" mes MsgBox. Sujet déjà évoqué sur XLD mais solutions que je n'arrive pas à comprendre (je sais, je ne suis pas bon...)
J'aimerai donc, à minima, pouvoir mettre en gras certaines informations de mes MsgBox. Il faudrait passer par des UserForms...
En gros, pour aller chercher ma baguette à 50 mètres de chez moi, il faudrait que je passe par New York ?
J'ai fait toutes les recherches sur le Web pour résoudre ce problème. La solution présentée sur XLD est bien appétissante mais je n'y arrive pas (je ne maitrise pas du tout les UserForms)...
Au cazou, je vous joint un fichier anonymisé et les messages (codes) que je voudrais voir apparaître autrement (en gras ou en rouge ou les deux...).

Sub Macro2()
Call SauvegardeAutomatique
Dim L%, Rep$, Ligne%, DL%, Nom$, Prénom$
On Error GoTo FinR
With Sheets("base de données")
L = Selection.Row ' Ligne sélectionnée
Nom = Cells(L, "K"): Prénom = Cells(L, "L")
If Nom = "" Or Prénom = "" Then MsgBox "Sélectionnez un nom valide en colonne Nom de la feuille departs.": Exit Sub ' Verif si ligne valide
Rep = MsgBox("Voulez vous effacer les données " & L & " concernant " & Nom & " " & Prénom & " ?" & _
Chr(10) & "Dans la base de données.", vbExclamation + vbYesNo, "Demande de confirmation.")
If Rep = vbNo Then Exit Sub
DL = .Cells(Rows.Count, "E").End(xlUp).Row ' recherche dernière ligne des noms dans base de données
Application.EnableEvents = False
For Ligne = 4 To DL ' on parcourt toutes les lignes
If .Cells(Ligne, "E") = Nom And .Cells(Ligne, "F") = Prénom Then ' si Nom et Prénom trouvés, on efface
Range(.Cells(Ligne, "E"), .Cells(Ligne, "AA")).ClearContents
Application.EnableEvents = True
Exit Sub
End If
Next Ligne
End With
FinR:
Application.EnableEvents = True
MsgBox "Ligne sélectionnée effacée ", vbOKOnly + vbInformation, "Pour information"
End Sub
Bien cordialement,
 

Pièces jointes

Salut,
On peut aussi utiliser un userform avec un activeX webbrowser et afficher les messages en HTML.
Exemple d'appel :
VB:
Sub TestMsgBoxHTML()
Dim Nom As String, Prénom As String, Msg As String, Titre As String
Dim rep As VbMsgBoxResult
Nom = "Manvussat"
Prénom = "Gérard"
Titre = "Demande de Confirmation"
Msg = "Voulez vous effacer les données concernant <b>" & Nom & " " & Prénom & "</b> " & _
      "<br> dans la base de données ?"
MsgBoxHtml.ShowMsg Msg, Titre, "question", vbYesNo
rep = MsgBoxHtml.Resultat
Select Case rep
    Case vbYes: MsgBox "Vous avez choisi OUI"
    Case vbNo: MsgBox "Vous avez choisi NON"
    Case vbCancel: MsgBox "Annulé"
End Select
End Sub

ce qui peut donner :
Regarde la pièce jointe 1227989

Nullosse
Bonjour "Gérard",
Pouvez-vous m'envoyer votre fichier ? Il m'intéresse beaucoup parce que je croyais avoir réussi avec les explications de sylvanu mais, si mon userform s'affiche bien, il ne produit rien. Au cas où, je vous mets mon fichier en PJ. (UserForm qui bugue =EXPORTATION
 

Pièces jointes

Hello,

@nullosse je ne connais pas activeX WebBrowser, j'ai voulus testé votre procédure mais j'ai une erreur 424 "Objet requis" sur cette ligne
VB:
MsgBoxHtml.ShowMsg Msg, Titre, "question", vbYesNo
Que dois-je faire ? merci
C'est normal que tu es Objet requis : MsgBoxHtml est un userform : c'est lui qui contient un activeX WebBrowser .
En pièce jointe un classeur avec un test qui utilse le MsgBoxHtml
 

Pièces jointes

Bonjour à tous,
Je me bats pour ajouter un UserForm (EXPORTATION) dans le fichier joint.
L'UserForm existe bien mais la macro qui le lance ne produit rien.
Je ne comprends pas pourquoi ou plutôt j'ai du rater quelque chose dans mon code...
Pouvez-vous m'aider ?
Cordialement
 

Pièces jointes

Re,
Dans l'userform Exportation vous faites un Unload de Confirmation. Et vous avez inversé oui et non.
En PJ avec pour Exportation :
VB:
Private Sub CommandButton1_Click()
Rep = vbYes
Unload EXPORTATION
End Sub
Private Sub CommandButton2_Click()
Rep = vbNo
Unload EXPORTATION
End Sub
 

Pièces jointes

J'ai cherché longtemps.
"Rep" est une variable globale donc visible par tous les modules, il est déclaré en public avec :
VB:
Public Rep$
et ne doit être déclarée qu'une seule fois.
Or dans Macro2 vous le redéclarer en variable privé, donc ça coince lors de la réponse du userform, il utilise cette variable privée qui est vide.
 

Pièces jointes

J'ai cherché longtemps.
"Rep" est une variable globale donc visible par tous les modules, il est déclaré en public avec :
VB:
Public Rep$
et ne doit être déclarée qu'une seule fois.
Or dans Macro2 vous le redéclarer en variable privé, donc ça coince lors de la réponse du userform, il utilise cette variable privée qui est vide.
Chapeau !
Je ne voyais pas du tout d'où ça pouvait venir !
Merci !
 
Chapeau !
Je ne voyais pas du tout d'où ça pouvait venir !
Merci !
Décidément...
Je voudrais ajouter en fin d'action sur macro2()
Sheets("base de données").Select
Range("E4").Select
J'ai essayé toutes sortes d'emplacements dans le code, je n'arrive pas à atterrir dans la base de données.
Pour clore ce long échange... En attendant une prochaine fois ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
631
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
432
Réponses
5
Affichages
839
Réponses
2
Affichages
484
Retour