XL 2013 Formule en vba

ZAKAO

XLDnaute Junior
Bonjour tout le monde,

J'espère que vous allez tous bien.

Je me demandais si quelqu'un arrive à écrire la formule suivante :
=SI(G4=1;SIERREUR(INDIRECT("Ecoulement!G" & LI+LIGNE()-4);0);"NA")
Avec : la formule en O4 et LI une cellule nommée qui porte une valeur INT

En vba avec .formuleR1C1

J'ai essayé comme ceci mais sans effet... C'est les guillemets autour de Ecoulement!G qui me pose problème.
VB:
"=IF(RC" & LCHE & "=1,IFERROR(INDIRECT("""" & F_ECOULEMENT.name & "!G""" & LI+ROW()-4),0),""NA"")"

Je vous remercie d'avance en vous souhaitant une bonne journée.

Bien cordialement,
ZAKAO
 

Dranreb

XLDnaute Barbatruc
Si vous tenez à ce que la formule ne change pas mais suive si vous ajoutez ou supprimez une ligne dans la plage source :
VB:
Sub InstallerRenvoi2()
   Dim RngSrc As Range
   On Error Resume Next
   Set RngSrc = Application.InputBox("Plage source ?", Type:=8)
   If Err Then Exit Sub
   Selection.FormulaR1C1 = "=IF(RC7=1,IFERROR(INDEX(" _
      & RngSrc.Address(True, True, xlR1C1, True) & ",ROW()-" _
      & Selection.Row - 1 & ",1),0),""NA"")"
   End Sub
 

ZAKAO

XLDnaute Junior
Si vous tenez à ce que la formule ne change pas mais suive si vous ajoutez ou supprimez une ligne dans la plage source :
VB:
Sub InstallerRenvoi2()
   Dim RngSrc As Range
   On Error Resume Next
   Set RngSrc = Application.InputBox("Plage source ?", Type:=8)
   If Err Then Exit Sub
   Selection.FormulaR1C1 = "=IF(RC7=1,IFERROR(INDEX(" _
      & RngSrc.Address(True, True, xlR1C1, True) & ",ROW()-" _
      & Selection.Row - 1 & ",1),0),""NA"")"
   End Sub
Bonjour @Dranreb,

Je tiens d'abord à vous remercier pour les réponses que vous m'avez envoyées et à m'excuser pour le retard de ma réponse.

Je viens tout juste de me repencher sur le sujet. J'avoue ne pas voir d'application concrète dans mon contexte.

Pourriez-vous m'expliquer concrètement les désavantages de la fonction INDIRECT par rapport à INDEX ? Y a-t--il un défaut de performance lié à cette fonction INDIRECT ?

Je vous remercie d'avance pour votre retour en vous souhaitant un bel après-midi.

Bien cordialement,
ZAKAO
 

Dranreb

XLDnaute Barbatruc
Elle est un peut inadaptée c'est tout. Si c'est la valeur à une position d'une plage fixe ou décalé d'une cellule fixe il vaut mieux l'exprimer comme ça. INDIRECT c'est pour une cellule complètement arbitraire y compris et surtout en ce qui concerne la feuille.
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 167
dernier inscrit
miriame