OVH Cloud OVH Cloud

Formule utilisant des liens entre des cases appartenant a des onglets differents

2 réponses
Avatar
simina.lazar
Un grand merci a Gaenonius qui m'a explique comment utiliser des
variables dans le cadre d'un lien.
En effet, j'ai utilise son expression :
ActiveCell.FormulaR1C1 = "=Pilotage!R[" & Z_Lien_l & "]C[" & Z_Lien_c
& "]"
et cela marche tres bien.

Mais maintenant j'ai besoin de creer une formule un peu plus
compliquee. J'ai essayé de la coder selon ces memes principes, mais
cela ne marche pas.

Plus precisemment, dans la formule :
ActiveCell.FormulaR1C1 = SI(Pilotage!G36;Pilotage!G36;"En analyse /
chiffrage")
je veux remplacer "G" et "30" par des variables, (désignant colonne /
ligne).

J'ai essaye comme ci-dessous :
-------------------------------------------------------------------
Dim Z_Lien_l As Integer
Dim Z_Lien_c As Integer
Dim Z_text_1 As String
Dim Z_text_2 As String
Dim Z_text_3 As String

Z_text_1 = "Pilotage!R[" & Z_Lien_l & "]C[" & Z_Lien_c & "]"
Z_text_2 = Chr(34) & "En analyse / chiffrage" & Chr(34)
Z_text_3 = "=SI(" & Z_text_1 & ";" & Z_text_1 & ";" & Z_text_2 &
")"
ActiveCell.FormulaR1C1 = Z_text_3
--------------------------------------------------------------------------

Malheureusement, cela ne marche pas. Je reste bloquee sur
l'instruction ActiveCell.FormulaR1C1 (erreur d'execution 1004).
Toutefois quand je regarde sous Debog, la variable "Z_text_3" semble
contenir la formule souhaitee (voir ci-dessous) :

Z_text_3 : "=SI(Pilotage!R[25]C[3];Pilotage!R[25]C[3];"En analyse /
chiffrage")" : String

Mais alors pourquoi cela ne marche pas ? Est-ce la formule trop
longue ?
Pourriez vous m'aider ? Je vous remercie par avance.
Simina

2 réponses

Avatar
papou
Bonjour
En VBA les fonctions sont traduites en anglais donc dans ton cas remplace SI
par IF
Cordialement
Pascal

"Simina" a écrit dans le message de news:

Un grand merci a Gaenonius qui m'a explique comment utiliser des
variables dans le cadre d'un lien.
En effet, j'ai utilise son expression :
ActiveCell.FormulaR1C1 = "=Pilotage!R[" & Z_Lien_l & "]C[" & Z_Lien_c
& "]"
et cela marche tres bien.

Mais maintenant j'ai besoin de creer une formule un peu plus
compliquee. J'ai essayé de la coder selon ces memes principes, mais
cela ne marche pas.

Plus precisemment, dans la formule :
ActiveCell.FormulaR1C1 = SI(Pilotage!G36;Pilotage!G36;"En analyse /
chiffrage")
je veux remplacer "G" et "30" par des variables, (désignant colonne /
ligne).

J'ai essaye comme ci-dessous :
-------------------------------------------------------------------
Dim Z_Lien_l As Integer
Dim Z_Lien_c As Integer
Dim Z_text_1 As String
Dim Z_text_2 As String
Dim Z_text_3 As String

Z_text_1 = "Pilotage!R[" & Z_Lien_l & "]C[" & Z_Lien_c & "]"
Z_text_2 = Chr(34) & "En analyse / chiffrage" & Chr(34)
Z_text_3 = "=SI(" & Z_text_1 & ";" & Z_text_1 & ";" & Z_text_2 &
")"
ActiveCell.FormulaR1C1 = Z_text_3
--------------------------------------------------------------------------

Malheureusement, cela ne marche pas. Je reste bloquee sur
l'instruction ActiveCell.FormulaR1C1 (erreur d'execution 1004).
Toutefois quand je regarde sous Debog, la variable "Z_text_3" semble
contenir la formule souhaitee (voir ci-dessous) :

Z_text_3 : "=SI(Pilotage!R[25]C[3];Pilotage!R[25]C[3];"En analyse /
chiffrage")" : String

Mais alors pourquoi cela ne marche pas ? Est-ce la formule trop
longue ?
Pourriez vous m'aider ? Je vous remercie par avance.
Simina


Avatar
AV
En ne me prononçant pas sur la validité de la formule mais simplement sur la
syntaxe (une des..) :

Exemple :
lg = 36: col = 7
ActiveCell.FormulaR1C1 = "=IF(Pilotage!" & "R" & lg & "C" & col & ",Pilotage!" &
"R" & lg & "C" & col & ",""En analyse /chiffrage"")"

AV