XL 2010 Bouton avec Userform

Payne

XLDnaute Nouveau
Bonjour,

Je suis un néophyte dans VBA et en ce moment je me pratique à créer certains programme pour tester ce que j'ai appris.
Dans le livre de cours il me demande de créer une boite de dialogue qui doit changer le texte en Majuscules, minuscules ou seulement une majuscule au début de chaque mot après avoir choisi une plage de mots et si je ne le fais pas avant de cliquer sur le bouton OK un message qui est dans module1 doit me demander de choisir une plage.
Mais voilà ça ne fonctionne pas et je n'ai pas d'erreur qui s'affiche. Lorsque je clique sur OK rien ne ce produit après avoir choisi une plage ou non.

J'ai vérifié si j'avais mal écrit le code qu'il me demandait mai je ne vois rien. J'ai fait le même processus avec Microsoft 365 et Excel 2010.

Quelqu'un peut me dire ou je me suis fourvoyer?

Merci
 

Pièces jointes

  • Test Bouton.xlsm
    16.1 KB · Affichages: 16

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Payne,
TypeName(Selection) = "Range" ne peut pas marcher puisque qu'une cellule est déjà un range donc c'est non discriminant.
J'ai opté pour : Application.CountIf(Selection, "*") qui regarde si on a sélectionner une plage qui contient des "choses".
Dim WorkRange As Range suppose qu'ensuite vous initialisé WorkRange, il faut lui dire que ça correspond à Selection.
Ou tout simplement s'en passer et faire référence à Sélection.
En PJ un truc qui marche.
 

Pièces jointes

  • Test Bouton.xlsm
    18.2 KB · Affichages: 4

Jacky67

XLDnaute Barbatruc
Bonjour,

Je suis un néophyte dans VBA et en ce moment je me pratique à créer certains programme pour tester ce que j'ai appris.
Dans le livre de cours il me demande de créer une boite de dialogue qui doit changer le texte en Majuscules, minuscules ou seulement une majuscule au début de chaque mot après avoir choisi une plage de mots et si je ne le fais pas avant de cliquer sur le bouton OK un message qui est dans module1 doit me demander de choisir une plage.
Mais voilà ça ne fonctionne pas et je n'ai pas d'erreur qui s'affiche. Lorsque je clique sur OK rien ne ce produit après avoir choisi une plage ou non.

J'ai vérifié si j'avais mal écrit le code qu'il me demandait mai je ne vois rien. J'ai fait le même processus avec Microsoft 365 et Excel 2010.

Quelqu'un peut me dire ou je me suis fourvoyer?

Merci
Bonjour,
Perso, je ferais certainement quelque chose qui se rapproche de la PJ
 

Pièces jointes

  • Test Bouton.xlsm
    18.8 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Ma façon de faire
(un peu basique)
VB:
Private Sub CommandButton1_Click()
Choix = InputBox("MAJUSCULE=1" & Chr(13) & "minuscule=2" & Chr(13) & "Nom propre=3", "Changement casse")
Casse = Array(vbUpperCase, vbLowerCase, vbProperCase)(Choix - 1)
TextBox1 = StrConv(TextBox1, Casse)
End Sub
 

Payne

XLDnaute Nouveau
Bonjour Payne,
TypeName(Selection) = "Range" ne peut pas marcher puisque qu'une cellule est déjà un range donc c'est non discriminant.
J'ai opté pour : Application.CountIf(Selection, "*") qui regarde si on a sélectionner une plage qui contient des "choses".
Dim WorkRange As Range suppose qu'ensuite vous initialisé WorkRange, il faut lui dire que ça correspond à Selection.
Ou tout simplement s'en passer et faire référence à Sélection.
En PJ un truc qui marche.
Merci pour votre option et votre explication sur ma ligne "Workrange". J'ai fait la correction.
 

Staple1600

XLDnaute Barbatruc
Re

=>Payne
Et ma suggestion?
Elle ne fonctionne pas
EDITION: Ouf, ton dernier message vient de me rassurer. ;)

PS: L'émoticône dans le message#6 est censé indiquer au lecteur que le message en rédigé en mode humour.

C'était donc à prendre comme une boutade.
 

Staple1600

XLDnaute Barbatruc
Re

=>Payne
En guise de pénitence, pour la blagounette ;)
Une version plus classique (avec 3 OptionButton)
VB:
Private Sub OptionButton1_Click()
TextBox1 = UCase(TextBox1) '-> MAJUSCULE
End Sub
Private Sub OptionButton2_Click()
TextBox1 = LCase(TextBox1) '->minuscule
End Sub
Private Sub OptionButton3_Click()
TextBox1 = Application.Proper(TextBox1) '-> Nom propre
End Sub
 

Discussions similaires

Réponses
2
Affichages
299