Re... Salut Moa
Pas facile d'expliquer, la méthode Evaluate, à comme Name une chaîne texte, tout comme la fonction NOMPROPRE (PROPER en anglais) demande comme argument une chaîne texte.
Etant le dernier des ignares en VBA. j'utilise l'enregistreur de macro et rentre dans une cellule la fonction que je veux utiliser (la fonction en français, VBA la convertira automatiquement).
Voilà ce que me donne l'enregistreur
Range("A1").FormulaR1C1 = "=PROPER(""Mettre le texte sous forme de nom propre"")"
après lancement de ce code, la cellule A1, contiendra une formule.
Mais je ne veux pas une formule, mais la valeur résultante de la fonction, il faut écrire ceci
Range("A1")= Evaluate("PROPER(""Mettre le texte sous forme de nom propre"")")
C'est l'instruction Evaluate qui ce charge de calculer le résultat
Mais dans ce code la donnée data de NOMPROPRE n'est pas variable. Pour remplacer la partie "Mettre le texte sous forme de nom propre", par la référence de la cellule, tout bêtement :
Range("A1") = Evaluate("PROPER(" + Range("A1") + ")")
Apr!s exécution du code, tu obtiens un #NOM? comme résultat, pour comprendre ce qui ce passe, supprime dans la ligne Evaluate(, et la ) à la fin. Range("A1") = "PROPER(" + Range("A1") + ")" , le code retourne PROPER(Mettre le texte sous forme de nom propre), et Mettre le texte sous forme de nom propre n'est pas défini, c'est ce qui donne l'erreur.
Pour faire comprendre à la fonction que c'est du texte il faut ajouter les ""
Range("A1") = Evaluate("PROPER(""" + Range("A1") + """)")
J'espère avoir répondu à ta question.
@+Jean-Marie