Bonsoir,
c'est un problème de "guillemet".
Sous VBA les guillemets sont utilisés pour "couper" une chaine de caractère afin d'y incorporer une variable avec l'ajout du "et" d'imprimerie :
Variable LRD = 2
MsgBox("Mon âge est de " & LRD & " ans.")
Résultat : Mon âge est de 2 ans.Le guillemet sert à indiquer à VBA que le guillemet ne sert pas de coupure de chaine de caractère, du coup il en faut deux consécutifs :
un dicton : "Ciel rouge le soir, réjouis le cœur du berger"
MsgBox("Comme le dit souvent mon père : ""Ciel rouge le soir, réjouis le cœur du berger"". Et voilà...")
Résultat : Comme le dit souvent mon père : "Ciel rouge le soir, réjouis le cœur du berger". Et voilà...
Du coup si vous avez une chaine de caractère avec des guillemets et qu'en plus vous voulez ajouter une variable, cela donne :
Sheets("Feuil1").Cells(1, 2).FormulaR1C1 ="=INDIRECT("""&TextBox4.Value!D4&""")"
guillemets rouge : début et fin de la chaine de caractère
guillemets verts : doubles guillemet pour que VBA comprenne que le deuxième doit être considéré comme un guillemet
guillemet bleus avec le "et" d'imprimerie "& : coupure de la chaine pour insertion de la variable
Résultat de la chaine de caractère inscrite dans la cellule si TextBox = Feuille2 : =INDIRECT("Feuille2!D4")
Donc insertion d'une variable dans une chaine de caractère après un guillemet fait qu'il doit y avoir 3 guillemets consécutifs ! CQFD !
@ bientôt
LouReeD