Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Aide formule R1C1

netparty

XLDnaute Occasionnel
Bonjour à tous

J'essaye de transformer ma formule au formatR1C1 pour l'intégrer dans une macro, mais je n'y arrive pas.
voici ma formule :
=SI(ET($J31="SLA12";$K31="NON CRITIQUE";M31>MOIS.DECALER($L31;BONUS!$E$14));ARRONDI.SUP($M31-(MOIS.DECALER($L31;BONUS!$E$14));0)*BONUS!$C$14;"")

j'ai essayé comme ceci :
Range("O" & i).FormulaR1C1 = "=IF(AND(rc10=""SLA12"",rc11=""NON CRITIQUE"",rc13>EDATE(rc12,BONUS!R14C5)),ROUNDUP(rc13-(EDATE(rc12,BONUS!r14c5)),0)*BONUS!r14c3,""""))"

Merci d'avance

Bonne journée à tous
 

Jacky67

XLDnaute Barbatruc
Bonjour,

Pour une plage donnée
Exemple
Code:
Sub TesT()
    Dim Plage
    Set Plage = [O10:O20]
    Plage.FormulaLocal = "=SI(ET($J31=""SLA12"";$K31=""NON CRITIQUE"";M31>MOIS.DECALER($L31;BONUS!$E$14));ARRONDI.SUP($M31-(MOIS.DECALER($L31;BONUS!$E$14));0)*BONUS!$C$14;"""")"
End Sub
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans ces cas là, sélectionnez une cellule qui contient la formule, puis dans l'éditeur de macro (VBE) dans la fenêtre d'exécution (CTRL+G si elle n'est pas ouverte) tapez le texte suivant (y compris le ?) :

?ActiveCell.FromulaR1C1
Validez par entrée et vous verrez s'afficher votre formule telle qu'elle doit être écrite.
Doublez les "" internes de la formule

=IF(AND(R[28]C10="SLA12",R[28]C11="NON CRITIQUE",R[28]C[-1]>EDATE(R[28]C12,BONUS!R14C5)),ROUNDUP(R[28]C13-(EDATE(R[28]C12,BONUS!R14C5)),0)*BONUS!R14C3,"")
Mais vba n'exige pas le R1C1 vous pouvez également faire :

? Activecell.Formula
et vous aurez :
=IF(AND($J31="SLA12",$K31="NON CRITIQUE",M31>EDATE($L31,BONUS!$E$14)),ROUNDUP($M31-(EDATE($L31,BONUS!$E$14)),0)*BONUS!$C$14,"")
que vous pourrez mettre dans Range("O" & i).Formula

Par contre .Formula est préférable à .FormulaLocal (qui voyagera très mal d'un système fr vers d'autres systèmes)

Cordialement
 

netparty

XLDnaute Occasionnel
merci Roblochon
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Quelle boucle ?

Sur une plage de cellule elle incrémentera lignes et colonnes idoines.
Range("A1:A10").Formula ="=IF(AND($J31=""SLA12"",$K31=""NON CRITIQUE"",M31>EDATE($L31,BONUS!$E$14)),ROUNDUP($M31-(EDATE($L31,BONUS!$E$14)),0)*BONUS!$C$14,"""")"

$J31 en A1 deviendra $J32 en A2

Cordialement
 

Jacky67

XLDnaute Barbatruc
Re..
Certes OUI
Mais il est donné ==>Range("O" & i).Formula
Et là, c'est bien une boucle, non?
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,
Certes Oui,
Mais on ne connaît pas le reste du projet ni de quelle incrémentation il s'agit ni le pourquoi du comment. Rien ne nous dit que i n'est pas alimenté par autre chose qu'une boucle (Textbox, inputBox etc.)
Puisque vous semblez connaître l'ensemble du problème, êtes sûr que c'est la meilleure solution, et que je ne goûte pas à ce genre de tergiversation, qui pollue les fils, je vous laisse là.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…