Nom Propre #valeurs

manuBX

XLDnaute Occasionnel
Bonjour
j utilise cette macro pour mettre sous forme Nom Propre en B23 mais si je mets trop de caractère il m affiche #valeurs
auriez vous une explication et comment y remedier ? !
Merci d avance
A+

Private Sub Worksheet_Change(ByVal Target As Range)
'Nom propre
If Not Application.Intersect(Target, Range("b23")) Is Nothing Then
Application.EnableEvents = False
Target = Application.Proper(Target)
Application.EnableEvents = True
End If
End Sub
 

Pièces jointes

  • test nom propre.xls
    20.5 KB · Affichages: 38

job75

XLDnaute Barbatruc
Re : Nom Propre #valeurs

Bonsoir manuBX,

Application.Proper c'est la fonction NOMPROPRE des feuilles de calcul.

Les deux sont limitées à 32767 caractères.

On peut tester avec la formule :

Code:
=NOMPROPRE(REPT("a";32767))

ou en VBA :

Code:
MsgBox IsError(Application.Proper(Application.Rept("a", 32767)))

Pour votre cellule B23 :

Target = Application.Proper(Target) => limite 255 caractères

Target = Application.Proper(Target.Value) => limite 32767 caractères.

Comme quoi il vaut mieux écrire cette propriété .Value (moi je ne la mets jamais...)

A+
 
Dernière édition:

hbenalia

XLDnaute Occasionnel
Re : Nom Propre #valeurs

Bonjour à tous,

Essayes avec le code suivant transformé (je ne vois aucune explication à l'erreur de l'autre code sauf peut-être le nombre de caractères de plus de 255) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Nom propre
If Not Application.Intersect(Target, Range("b23")) Is Nothing Then
Application.EnableEvents = False
Target.FormulaR1C1 = "=PROPER(R[-22]C)"
Application.EnableEvents = True
End If
End Sub

qui insère en cellule B23 la formule suivante :

Code:
= NOMPROPRE(B1)

La cellule B1 contient le texte à transformer (plus de 255 caractères)

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : Nom Propre #valeurs

Bonsoir à tous


Moi je regarde en dessous et en dessus, Job75 (;))

C'est pour cela que je demande quel est la limite pour
StrConv ?


(J'ai pas eu le temps d'appuyer sur F1, j'ai mon Excel qui tousse ce soir )

EDITION: bon j'ai remis Excel d'aplomb

En me basant sur ton code Job75; il semblerait que cela ne plante pas.

Code:
Sub a()
[A1] = StrConv(Application.Rept("a", 32767), vbProperCase)
End Sub
PS: j'ai rien trouver dans l'aide concernant une limite pour Strconv
 
Dernière édition:

hbenalia

XLDnaute Occasionnel
Re : Nom Propre #valeurs

Bonjour job75,

Bonsoir hbnalia,

Vour regardez parfois les posts qui précédent le vôtre ?

A+

J'avais déjà entamer la préparation de la réponse à la demande, et ça m'a pris tout ce temps (un peu plus d'une demi heure) pour réfléchir à la question et rédiger la réponse et l'actualisation dans le forum ne se fait pas d'une façon automatique... D'ailleurs ma réponse est différente de la votre, mais j'aurai préféré la votre qui est plus simple et efficace et je vous remercie pour l'information.

Cordialement
 

job75

XLDnaute Barbatruc
Re : Nom Propre #valeurs

Bonjour le fil, le forum,

En fait les fonctions REPT ou Application.Rept sont limitées à 32767 caractères.

On notera avec intérêt que ceci fonctionne bien :

MsgBox Len(Application.Rept("a", 32767) & Application.Rept("a", 32767))

mais que ceci bug :

MsgBox Len(Application.Proper(Application.Rept("a", 32767) & "a"))

alors que cette formule fonctionne :

=NOMPROPRE(REPT("a";32767)&REPT("a";32767))

Quant à StrConv, Staple a bien vu, aucun problème avec :

MsgBox Len(StrConv(Application.Rept("a", 32767) & Application.Rept("a", 32767), vbProperCase))

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 973
Membres
103 073
dernier inscrit
MSCHOE16