Microsoft 365 Inscrire une formule dans une cellule

Yves du calvados

XLDnaute Nouveau
Bonjour à tous,

je posséde un petit programme permettent de coder/décoder des messages divers.

mon principal soucis est que je souhaiterai inserer la formule :

=SI(A11=" ";" ";RECHERCHEV(A11;Decodage!$C$10:$D$685;2))

de manière automatique sur un certain nombre de collones, cette formules fonctionne très bien, hors VBA.

J'ai essayé de la manière suivante :

Range(i & "12").Formulalocal = ""=SI(" i & "12=" ";" ";RECHERCHEV("i & "11;Codage!$C$10:$D$685;2))""

sans succès .
je n'arrive pas à comprendre mon erreur.

je vous remercie d'avance pour votre aide
Cordialement.
 

Pièces jointes

  • demende d'aide.xlsm
    75.4 KB · Affichages: 11

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
Adaptez ça à votre contexte.
 

sousou

XLDnaute Barbatruc
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
 
C

Compte Supprimé 979

Guest
Bonjour à tous,

@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

A+
 

Pièces jointes

  • Gourmand15_IntégrationFormule+Optimisation.xlsm
    74.6 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 407
Membres
103 201
dernier inscrit
centrale vet