XL 2019 Remplacer l'affichage d'un msgbox par celui d'un userform

pat66

XLDnaute Impliqué
Bonjour le forum,

Mes connaissances étant très limitées, je fais appel à ce forum car je souhaiterai remplacer l'affichage d'un msgbox par celui d'un Userform, ou autre.
Le but étant d'avoir un affichage personnalisable (police, taille, couleur, etc..)

Pour plus de compréhension, je joints un exemple qui contient la macro du msgbox opérationnelle de Vgendron , ainsi que le type d'Userform souhaité

Pourriez vous m'aider à adapter la condition d'affichage ainsi que le résultat du Msgbox à celui de L'Userform

merci d'avance pour votre aide

bonne journée

Pat66
 

Pièces jointes

  • Message avec Calcul-Web.xlsm
    79.1 KB · Affichages: 17
Dernière édition:

Dudu2

XLDnaute Barbatruc
Histoire d'aller jusqu'au bout et pour faire le lien avec mon Post précédent, avec ces 2 modules génériques:
- Module_PositionUserFormSurObjet
- UserForm MsgBoxPersoBasic

Un petit fichier de démo...A voir plus loin.
 
Dernière édition:

pat66

XLDnaute Impliqué
re,

intéressant cette solution !!,
mais est ce qu'on peut remplacer le msgbox par un commentaire pour éviter la barre de titre ?

car j'aurai aussi besoin d'un petit commentaire de la taille d'une cellule qui s'affiche au survol d'une plage de cellules


merci
 

Dudu2

XLDnaute Barbatruc
mais est ce qu'on peut remplacer le msgbox par un commentaire pour éviter la barre de titre ?
On peut faire 2 choses, soit supprimer le Caption du UserForm, soit utiliser un autre moyen pour afficher de l'information en utilisant par exemple une TextBox dynamiquement créée.
J'ai ça quelque part, il faut que je regarde. Le positionnement sera plus simple car Cellule et TextBox ont le même Parent: la feuille.
 

Dudu2

XLDnaute Barbatruc
vbmodeless a rien avoir avec le fait d’être actif ou pas
Ouais...ben non !
Avec GetActiveWindow, si le UserForm est vbModeless on n'est pas sûr de récupérer son Handle puisque par définition on peut activer autre chose, dont la feuille. S'il est vbModal, la question ne se pose pas.
Mais bon, on va pas repartir dans ces discussions sans fin. J'aurais pas dû te lancer sur ce challenge.
VB:
Option Explicit

Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr

Sub a()
    UserForm1.Show vbModeless
    MsgBox "GetActiveWindow = " & GetActiveWindow
End Sub

Sub b()
    MsgBox "GetActiveWindow = " & GetActiveWindow
End Sub
Trace.gif
 

Dudu2

XLDnaute Barbatruc
@pat66,

Voici un fichier qui contient le Module_ShowShape à inclure dans le Projet VBA qui lui-même contient la fonction ShowShape() qui permet d'afficher un texte à l'endroit voulu sur la feuille et avec des caractéristiques ajustables (voir paramètres de la fonction).

Voir la Module_Test pour la mise en œuvre avec quelques exemples.

Il te faut gérer:
- l'affichage et l'effacement (sauf si paramètre TemporisationSeconds défini) du message,
- la largeur / hauteur de la forme (paramètres Width / Height) selon la longueur / hauteur du texte,
- la position (sauf si centrée par défaut) de la forme (paramètres Left et Top).
 

Pièces jointes

  • MsgBoxPerso via Shape.xlsm
    30.5 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 252
Membres
103 166
dernier inscrit
ZAHRAA