Bonjour Gourmand, et bienvenu sur XLD.
Dans votre macro, "i" est un nombre entier. ( en l'occurrence 261 qd on sort de la boucle )
Donc dans votre formule "i & " & 11" va donc valoir : 26111, ce qui ne veut rien dire dans une formule XL, une cellule est appelée soit par A1 soit par L1C1.
Une possibilité est de passer par un Index pour récupérer la valeur.
Par ex "INDEX(11:11;COLONNE()" récupère la valeur de la ligne 11 de la colonne où est la formule.
Essayez ça. Il propage la formule sur la ligne 20 de la colonne A à la colonne U :
VB:
Sub essai()
For i = 1 To 21
Cells(20, i).FormulaLocal = "=SI(INDEX(11:11;COLONNE())="" "";"" "";RECHERCHEV(INDEX(11:11;COLONNE());Decodage!$C$10:$D$685;2))"
Next i
End Sub
Bonjour à tous
ici la reprise de ta formule pour le codage
Le supprespace est à ajouter la ligne 11 contient des espaces dans certaines colonnes
For i = 1 To longueur
formule = "=SI(supprespace(" & Cells(11, i).Address & ")=" & """" & """" & ";" & """" & """" & ";RECHERCHEV(" & Cells(11, i).Address & " ;Codage!$C$10:$D$685;2))"
Cells(12, i).FormulaLocal = formule
'
Next i
@gourmand15, une autre approche et une optimisation du code en plus
VB:
'' Codage du message
Dim sForm As String
sForm = "=SI(A#="""";"""";RECHERCHEV(A#;Codage!$C$10:$D$685;2))"
For I = 1 To Longueur
Wsh.Cells(12, I).FormulaLocal = Replace(sForm, "#", I)
Next I