Après plusieurs test, il semble impossible dans une FormulaR1C1 d'ouvrir plusieurs fois des guillemets :
FormulaR1C1 = "="blabla1" & variable définie & "blabla2"
Il est uniquement possible de faire : FormulaR1C1 = "="blabla1" & variable définie
Non je n'ai jamais eu ce problème car je n'écris jamais une formule en VBA
Et encore moins de formula R1C1, je déteste ce mode d'écriture
Soit j'écris la formule dans la feuille
soit je calcule le résultat de la formule dans VBA et je n'injecte dans la cellule que le résultat de la formule.
Je ne vois pas trop l'intérêt d'écrire une formule dans une feuille avec du code. Les tableaux excel permettent de gérer très facilement l'écriture automatique d'une formule dans la nouvelle ligne d'un tableau.
J'ai toujours trouvé galère les guillemets dans les formules VBA.
essaie si tu y tiens d'écrire
mon texte = et la tes concaténations de bouts de formules
puis de mettre
formulaR1C1=montexte (je n'ai jamais tenté, donc c'est sans garantie !)
J'ai essayé. Ca ne fonctionne pas non plus pour la même raison (fin d'instruction).
Je suis tout à fait d'accord avec toi : je n'aime pas utiliser de FormulaR1C1 mais n'étant pas du tout expert en VBA, je rame pour passer par Application.VLOOKUP... :
- Je ne sais pas l'appliquer sur un ensemble de cellules comme je le fait avec FormulaR1C1.
- Visiblement, il n'est pas possible pour le 1er argument de mettre RC[-5] pour rechercher la valeur de la colonne correspondante...
- Je sais encore moins traduire de façon simple les fonctions SI et ESTERREUR en VBA...
Bref, je pensais plus simple ma solution et ne voulais pas abreuver le forum de questions... Visiblement, je me suis un peu planter.
Simplement, pour terminer d'expliquer ma méthode : après avoir fais mes fonctions, je fige les valeurs par un bête copier/collage spécial valeur.
si= if
esterreur= iserror
if iserror(application.worksheetfunction.vlookup(...) ) then
range("A1") =""
else
range("A1")=application.worksheetfunction.vlookup(...)
end if
Effectivement, vu comme ça, c'est peut-être mieux...
Et pour l'appliquer sur toute une zone, la boucle For / Next reste la meilleure solution ?
Encore merci pour l e temps que tu as passé à me dépanner... (N'empêche que j'aurais bien aimé comprendre d'où venait mon problème de fin d'instruction !!!)
Oui tu peux faire cela avec une boucle.
Mais on discute vraiment dans le vide sans fichier, sans connaitre l'ensemble du "problème".
Encore une fois, avant toute autre solution, je préconise l'emploi des tableaux excel Ce lien n'existe plus si c'est adapté.