FormulaR1C1 et validation de la cellule contenant la formule

Bonjour à tous,

Je reprends le code VBA de quelqu'un d'autre et je suis confronté à un souci .

Une formule est insérée dans une cellule:

Range("E5104").Select 'Juste pour que vous compreniez que la formule est insérée dans une cellule dont la position est relative à "E5104"
ActiveCell.Offset(0, 37).NumberFormat = "General"
ActiveCell.Offset(0, 37).FormulaR1C1 = "=IF(rc8="""","""",concatenate(""sem"",NO.SEMAINE(rc8)-1,""-"",year(rc8)))" 

Lorsque la macro s'exécute, le formule est bien insérée mais une erreur #NOM? est affichée dans la cellule.
il suffit simplement de double-cliquer dans la cellule pour lever l'erreur:

Je ne comprends pas pourquoi il y a cette erreur et pourquoi le simple fait de double-cliquer la supprime.

Pourtant le format standard a bien été appliqué avec la bonne instruction, non ?

J'ai même remis cette instruction, en double, après avoir inséré la formule, mais rien n'y fait...

J'ai ensuite pensé que le fait de mettre la formule en LOCAL permettrait de résoudre les choses et j'ai donc "converti" l'instruction de la façon suivante:

ActiveCell.Offset(0, 37).FormulaR1C1Local = "=SI(RC8="""";"""";CONCATENER(""sem"";NO.SEMAINE(RC8)-1;""-"";ANNEE(RC8)))" 

C'est encore pire !
La formule n'est même pas insérée dans la cellule qui reste désespérément vide !
Même si ma formule n'est pas bonne, je pensais qu'elle serait tout de même écrite dans la cellule !

Si j'écris:

ActiveCell.Offset(0, 37).Value = "TOTO"

Ça fonctionne, donc ce n'est pas un problème d'adressage de la cellule.

Bref, je patauge et ça fait 3h00 que j'y suis à revoir tous les fondamentaux d'insertion de formules.

Bon après, je ne suis pas Bill Gates, mais je pense que vous l'aurez aisément deviné.

Merci d'avance pour votre aide et vos suggestions.

Bonne après-midi !

Bonjour,

tu as laissé NO.SEMAINE en français => #NOM
En revalidant sur la feuille, il connait fr et accepte.
Utilise weeknum()
eric

Bonsoir Eriiic.

Je te remercie d'avoir pris le temps de me répondre et, accessoirement, de m'avoir dépatouillé car en remplaçant NO.SEMAINE par WEEKNUM, ça fonctionne.

Par contre, j'aimerais comprendre pourquoi ma formule FormulaR1C1Local ne fonctionne pas tandis que la FormulaR1C1 non LOCAL fonctionne ?

ActiveCell.Offset(0, 37).FormulaR1C1Local = "=SI(RC8="""";"""";CONCATENER(""sem"";NO.SEMAINE(RC8)-1;""-"";ANNEE(RC8)))" 

Il faut que j'ouvre un autre sujet ?

Encore merci.

Oui, c'est piègeux, pas vu au 1er coup d'oeil (ni au 2nd d'ailleurs...).
Tu as laissé tes ref en anglais.
R(Row) => L(Ligne)
RC8 => LC8
eric

Bonsoir Pipout64, Le Forum

FormulaR1C1Local

Renvoie ou définit la formule de l'objet, en utilisant la notation de style R1C1 dans la langue de l'utilisateur

Alors que FormulaR1C1 ne tient pas compte des paramètres locaux et est donc plus passe-partout (international).

suite...
et bizarrement des fois ça passe.
Avec : ActiveCell.Offset(1, 2).FormulaR1C1 = "=nb.si(RC[-1]:R[3]C[-1],2)"
il se fout que les R soient restés (?!?)

Merci pour vos contributions messieurs.
C'est vrai que c'est hyper piégeux ce R1C1 !

Je n'ai pas pensé une seconde à ça.

@Eriiic: Bien joué œil de lynx (même si pas au premier coup d'œil !) !

@X cellus: merci pour les précisions: j'avais déjà eu l'occasion de l'utiliser une fois ou deux par le passé mais vu le peu de fois où c'est arrivé, je me fais avoir comme un bleu (que je suis, pour de vrai !)..

Plus qu'à tagger "Résolu", vous remercier encore et vous souhaiter une bonne soirée.

Rechercher des sujets similaires à "formular1c1 validation contenant formule"