Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Si j'appelle la palette de couleurs qui permet de modifier la couleur d'une cellule :
VB:
Application.Dialogs(xlDialogPatterns).Show
dans le bandeau de la boîte de dialogue qui apparaît (en espagnol) "Formato de celda".
Comment s'y prendre pour que ce texte soit autre, par exemple "ZAZA" ?
J'ai tenté avec :
VB:
Application.Dialogs(xlDialogPatterns).Show Caption = "ZAZA"
... lamentable échec coutumier...
Je pense qu'il faut passer par des APIs...

Merci d'avance pour tout commentaire.
 

Modeste geedee

XLDnaute Barbatruc
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonsour®
je suis presque convaincu qu'il doit exister une ou des APIs qui permettent de solutionner ce problème...

The SetWindowText function changes the text of the specified window’s title bar (if it has one). If the specified window is a control, the text of the control is changed.

VB:
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
'parameters
'· hWnd : Identifies the window or control whose text is to be changed.
'· lpString : Points to a null-terminated string to be used as the new title or control text.
'. cch : Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated.
'--------------------------------------------------------------
Private Sub Form_Activate()
    'KPD-Team 1998
    'URL: [url=http://www.allapi.net/]allapi.net[/url]
    'E-Mail: [email]KPDTeam@Allapi.net[/email]
    Dim MyStr As String
    'Create a buffer
    MyStr = String(100, Chr$(0))
    'Get the windowtext
    GetWindowText Me.hwnd, MyStr, 100
    'strip the rest of buffer
    MyStr = Left$(MyStr, InStr(MyStr, Chr$(0)) - 1)
    'Triple the window's text
    MyStr = MyStr + MyStr + MyStr
    'Set the new window text
    SetWindowText Me.hwnd, MyStr
End Sub
 

Magic_Doctor

XLDnaute Barbatruc
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonsoir Modeste geedee,

Merci pour ton intérêt.
J'avais trouvé un truc quelque peu similaire, mais il me fut toujours impossible de tenter de l'appliquer pour la boîte de dialogue de la palette de couleurs. Ça beugue toujours avec "hwnd".
Pas évident cette histoire...
 

Modeste geedee

XLDnaute Barbatruc
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonsour®

essaie de remplacer me.hwnd par 0

attention :
0 est le Handler de la fenetre active

:cool: méfiance avec les API , on n'est plus dans Excel mais dans la gestion des objets Windows
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonsoir Modeste geedee,

À vrai dire je n'ai pas compris grand chose.
Qu'est-ce qui devrait normalement apparaître ?
Pourquoi "Private Sub" ?
Où met-on tout ça ? Dans un module standard ?
Où écrirait-on le nouveau texte du bandeau de la boîte de dialogue ?

J'ai essayé dans un module standard, j'ai bien remplacé me.hwnd par 0, j'ai déclenché la macro. Rien ne s'est passé.

Ma foi, peut-être qu'un jour...
 

Herdet

Nous a quitté
Repose en paix
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonsoir,
Concernant ta question pour modifier le titre d'une boîte de dialogue intégrée, les recherches dans mes archives et quelques sites FR et US sont plutôt infructueuses coté API
Il y a quelques années, on voyait passer dans les forum quelques d'API ou URL d'API pour simuler des fonctions qui n'existaient pas encore mais maintenant c'est devenu une denrée rare vu l'énorme progression d'Excel en 10 ou 15 ans.
Ne désespérons pas, la question reste d'actualité et la recherche continue !
Robert
 

Magic_Doctor

XLDnaute Barbatruc
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonsoir Herdet,

Merci pour ton intérêt. Apparemment, ça ne passionne pas grand monde... Dommage, car ces APIs, utilisées prudemment, permettent d'obtenir des choses vraiment intéressantes.

Buenas noches
 

Herdet

Nous a quitté
Repose en paix
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonsoir Herdet,

Merci pour ton intérêt. Apparemment, ça ne passionne pas grand monde... Dommage, car ces APIs, utilisées prudemment, permettent d'obtenir des choses vraiment intéressantes.

Buenas noches
Si tu ne trouves rien, tu peux toujours essayer d'améliorer la macro de J. Walkenbach ci-jointe que j'ai renommé et passée en Excel 2010.
Original : Excel Developer Tip: A Color Picker Dialog Box
Fichier : colrpikr.xls du 7 Janvier 1998 une bonne vieille recette mais avec les couleurs d'Excel 97 :eek:

Salutations
Robert
 

Pièces jointes

  • Walkenbach-colrpikr a adapter.xlsm
    29.4 KB · Affichages: 37
  • colrpikr.xls
    69.5 KB · Affichages: 41
  • colrpikr.xls
    69.5 KB · Affichages: 38
  • colrpikr.xls
    69.5 KB · Affichages: 38

Herdet

Nous a quitté
Repose en paix
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonjour Herdet,

Merci pour ces sympathiques boîtes. Mais je ne désespère pas d'un jour pouvoir régler ce problème (non fondamental !) de la boîte de palette de couleurs.
Bonjour Magic,
Si cela t'interresse, il y a le site de développement "happycodings" qui n'est pas mal et qui compile de nombreuses fonctions pour plusieurs langages entre autres le VB et quelques API encore utilisables ( mais toujours pas pour ton problème)

Visual Basic > API and Miscellaneous sample code source code examples

Cordialement
Robert
 

Herdet

Nous a quitté
Repose en paix
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Salut l'ami GD, ;)

Ce code est sympa mais comment l'appliques-tu à une boîte de dialogue intégrée lancée par Application.Dialogs(xxx).Show puisque l'on a pas accès à son Sub Form_Activate(..) comme c'est faisable pour une boîte créée pour laquelle un simple .caption suffit ?

A+
Robert
 

Magic_Doctor

XLDnaute Barbatruc
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Re,

Les APIs, je commence à comprendre à quoi ça sert, mais de là jongler avec...
Dans la référence que tu me donnes j'ai, par exemple, trouvé : "Restrict the movement of a cursor to a specified area"
Ce qui pourrait être intéressant quand (si j'ai bien compris l'intitulé) on veut limiter le déplacement du curseur à une aire donné de la feuille.
Comment diable s'y prend-on pour que ça marche ?
Comment paramétrer la surface de l'aire de la feuille où le déplacement du curseur est autorisé ?
 

Herdet

Nous a quitté
Repose en paix
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Attention, ce sont des API Visual Basic et donc pas forcément applicables au VBA Excel surtout si l'on utilise des cellules.
Cette API utilise des coordonnées d'écran en Twips plus précis que le pixel mais pour bloquer le curseur en Excel il vaut mieux utiliser une plage de cellules.
La syntaxe en VB : Screen.xxx n'est pas reconnue en VBA par exemple Screen.TwipsPerPixelX
A noter que 1 pixel = 15 twips ==> Convert pixel (X) <?> twip ? Miscellaneous Converters ? Typography and Digital Imaging Units ? Compact Calculator
 

david84

XLDnaute Barbatruc
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonsoir,
Ce qui pourrait être intéressant quand (si j'ai bien compris l'intitulé) on veut limiter le déplacement du curseur à une aire donné de la feuille.
Comment diable s'y prend-on pour que ça marche ?
Comment paramétrer la surface de l'aire de la feuille où le déplacement du curseur est autorisé ?
Un exemple (ne pas lancer en mode pas à pas car le mouvement du curseur sera limité à la superficie du UserForm, ou alors penser à bien agrandir le UserForm avant).
A+
 

Pièces jointes

  • Api_limiter_mvt_curseur_dans usf.xls
    44 KB · Affichages: 28

Magic_Doctor

XLDnaute Barbatruc
Re : Changer le texte qui apparaît dans le bandeau d'une boîte de dialogue

Bonsoir david84,

À la fois sympa & rigolo ce que tu viens d'envoyer.
Restreindre le déplacement du curseur à l'aire de l'USF ne sert peut-être pas à grand chose, mais ça en jette !
J'ai évidemment fait quelques essais et me suis dit les choses suivantes :
- 1/ ce serait bien que dès l'ouverture de l'USF le curseur soit bloqué. J'ai tenté (voir macro) mais ça n'a pas marché ;
- 2/ puisque on ne peut plus accéder au bandeau de l'USF, le petit bouton de fermeture qui s'y trouve ne sert donc plus à rien, alors autant s'en débarrasser. J'avais trouvé des APIs le permettant (cliquer sur la feuille sur le bouton "USF"). Ça marche très bien, mais je ne suis pas arrivé à conjuguer ce que tu as envoyé avec cette possibilité ;
- 3/ quand on annule le bloquage du curseur, l'USF se ferme. Là au moins ça marche.

Mais merci pour ton post.
 

Pièces jointes

  • Api_limiter_mvt_curseur_dans usf(2).xlsm
    29.7 KB · Affichages: 21

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg