XL 2010 nompropre vba

matoupitou

XLDnaute Occasionnel
bonjour

peut-être que qq1 peut m'aider
j'aimerai créer un bouton dans ma barre d'outils qui me permettrait de passer au format 1ère lettre en maj de chaque mot et sinon minuscule ; écrasant les anciens texte et figeant les nouvelles valeurs
je sais que la fonction nompropre permet cela ; en enregistrant une macro je n'arrive pas à écrire que cela fonctionne pour n'importe quelle cellule. parfois ça efface

en pj un exemple avec mon texte VBA

par avance merci pour votre aide
 

Pièces jointes

  • nompropre.xlsm
    14.3 KB · Affichages: 12

patricktoulon

XLDnaute Barbatruc
re
joli!!joli!!joli!!
a la j'adore tu me fait la plage sans la matricielle
je dis respect Monsieur ++++++++++
je la met tout de suite dans mes archives
mais pourquoi j'ai pas pensé a index suis je bète
c'est un délice.... le pain d’épice de la marque bien sur ;)
 

job75

XLDnaute Barbatruc
oui dans une boucle :) ;) c'est en matricielle que c'est intéressant
Une formule matricielle ? Pas sûr que ce soit bien intéressant mais bon :
VB:
Sub NomPropre()
Dim a As Range, f$, c As Range
ActiveCell.Activate 'au cas où la sélection n'est pas un Range
For Each a In Selection.Areas
    f = "=PROPER({"
    For Each c In a.Cells
        f = f & """" & c & """" & ";"
    Next c
    f = Left(f, Len(f) - 1) & "})"
    a.FormulaArray = f 'formule matricielle
Next a
End Sub
Chaque formule ne doit pas dépasser 8192 caractères...
 

Emile63

XLDnaute Junior
Bonjour Patrick, merci pour ton suivi.
Oui, j'ai bien vu les option possibles, malheureusement "UPPER" et "LOWER" ne fonctionnent pas chez moi (Office 365 Business):
Selection.Value = Application.Upper(Selection.Value)
--> Erreur '438' Propriété ou méthode non gérée par cet objet.

Dans le doute j'ai essayé avec "Uppercase" et "vbUpperCase", mais non.... Pas de succès.
 

job75

XLDnaute Barbatruc
Bonjour Emile63, le forum,
jAu cas ou je souhaiterais tout mettre en majuscules ou minuscules, je remplace Proper par quoi ?
Sans fioriture :
VB:
Sub Majuscules()
Dim a As Range
ActiveCell.Activate 'au cas où la sélection n'est pas un Range
For Each a In Selection.Areas
    a = UCase(a)
Next
End Sub

Sub Minuscules()
Dim a As Range
ActiveCell.Activate 'au cas où la sélection n'est pas un Range
For Each a In Selection.Areas
    a = LCase(a)
Next
End Sub
Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 976
Membres
103 077
dernier inscrit
kamel26asus