INSERER FORMULE EXCEL par le VBA

awa123

XLDnaute Occasionnel
Bonjour,

j'essaie de part ce code

Code:
 .Cells(19, 11).Formula = "=IF(OR(" & .Cells(19, 3).Address(0, 0) & "=" & """" & "," & .Cells(19, 8).Address(0, 0) & "=" & """" _
 & ")," & """" & ",(MOD(" & .Cells(19, 8).Address(0, 0) & "-" & .Cells(19, 3).Address(0, 0) & ",1)-IF(" & .Cells(19, 8).Address(0, 0) & ">" & .Cells(19, 3).Address(0, 0) & _
 ",MAX(0,MIN(" & .Cells(19, 8).Address(0, 0) & ",1)-MAX(" & .Cells(19, 3).Address(0, 0) & ",6/24)),MAX(0,1 - MAX(" & .Cells(19, 3).Address(0, 0) & ",6/24))+MAX(0,MIN(" & .Cells(19, 8).Address(0, 0) & ",1)-6/24))))"

d'insérer la formule excel suivante qui marche à merveille :
Code:
    =SI(OU(C19="";H19="");"";(MOD(H19-C19;1)-SI(H19>C19;MAX(0;MIN(H19;24/24)-MAX(C19;6/24));MAX(0;24/24-MAX(C19;6/24))+MAX(0;MIN(H19;24/24)-6/24))))

cependant un erreur subsiste dans le code VBA car il bloque lors du lancement de la macro.

si quelqu'un aurait une idée d'où ça peut venir...


merci
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : INSERER FORMULE EXCEL par le VBA

Bonjour awa123.


Gaffe aux """""""""""""""""""""""""""""" ! Il en faut suffisamment mais pas trop...​
VB:
  .Cells(19, 11).Formula = "=IF(OR(" & .Cells(19, 3).Address(0, 0) & "=""""," & .Cells(19, 8).Address(0, 0) & "="""")" & _
    ","""",MOD(" & .Cells(19, 8).Address(0, 0) & "-" & .Cells(19, 3).Address(0, 0) & ",1)-IF(" & .Cells(19, 8).Address(0, 0) & ">" & _
    .Cells(19, 3).Address(0, 0) & ",MAX(0,MIN(" & .Cells(19, 8).Address(0, 0) & ",1)-MAX(" & .Cells(19, 3).Address(0, 0) & ",1/4)),MAX(0,1-MAX(" & _
    .Cells(19, 3).Address(0, 0) & ",1/4))+MAX(0,MIN(" & .Cells(19, 8).Address(0, 0) & ",1)-1/4)))"
et, plus simplement,​
VB:
  .Cells(19, 11).FormulaLocal = "=SI(OU(C19="""";H19="""");"""";MOD(H19-C19;1)-SI(H19>C19;MAX(0;MIN(H19;1)-MAX(C19;1/4));MAX(0;1-MAX(C19;1/4))+MAX(0;MIN(H19;1)-1/4)))"
ou​
VB:
  .Cells(19, 11).Formula = "=IF(OR(C19="""",H19=""""),"""",MOD(H19-C19,1)-IF(H19>C19,MAX(0,MIN(H19,1)-MAX(C19,1/4)),MAX(0,1-MAX(C19,1/4))+MAX(0,MIN(H19,1)-1/4)))"


Bonne journée.


ℝOGER2327
#7503


Dimanche 8 Phalle 141 (Sainte Léda, ajusteuse - fête Suprême Tierce)
1[SUP]er[/SUP] Fructidor An CCXXII, 0,3418h - prune
2014-W34-1T00:49:13Z
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : INSERER FORMULE EXCEL par le VBA

Bonsour®

obtenu via l'enregisteur :
Code:
.Cells(19, 11).FormulaR1C1 ="=IF(OR(RC[-8]="""",RC[-3]=""""),"""",(MOD(RC[-3]-RC[-8],1)-IF(RC[-3]>RC[-8],MAX(0,MIN(RC[-3],24/24)-MAX(RC[-8],6/24)),MAX(0,24/24-MAX(RC[-8],6/24))+MAX(0,MIN(RC[-3],24/24)-6/24))))"
on notera :
- nom de fonction US
- séparateur d'argument = ","
- adresse relative "[ et ]"

:rolleyes:au sein d'une chaine VBA pour faire apparaitre les quotes il faut les doubler...

:cool:ou bien : (US A1)
Code:
.Cells(19, 11).Formula="=IF(OR(C19="""",H19=""""),"""",(MOD(H19-C19,1)-IF(H19>C19,MAX(0,MIN(H19,24/24)-MAX(C19,6/24)),MAX(0,24/24-MAX(C19,6/24))+MAX(0,MIN(H19,24/24)-6/24))))"
on notera :
- nom de fonction US
- séparateur d'argument = ","

:cool:ou encore : (FR A1)
Code:
.Cells(19, 11).FormulaLocal ="=SI(OU(C19="""";H19="""");"""";(MOD(H19-C19;1)-SI(H19>C19;MAX(0;MIN(H19;24/24)-MAX(C19;6/24));MAX(0;24/24-MAX(C19;6/24))+MAX(0;MIN(H19;24/24)-6/24))))"
on notera :
- nom de fonction FR
- séparateur d'argument = ";"

:cool:ou (FR L1C1)
Code:
.Cells(19, 11).FormulaR1C1Local ="=SI(OU(LC(-8)="""";LC(-3)="""");"""";(MOD(LC(-3)-LC(-8);1)-SI(LC(-3)>LC(-8);MAX(0;MIN(LC(-3);24/24)-MAX(LC(-8);6/24));MAX(0;24/24-MAX(LC(-8);6/24))+MAX(0;MIN(LC(-3);24/24)-6/24))))"
on notera :
- nom de fonction FR
- séparateur d'argument = ";"
- adresse relative "( et )"
- "R et C" deviennent "L et C"

Oupssss.... bonjour Roger ;)
 
Dernière édition:

Statistiques des forums

Discussions
312 392
Messages
2 088 000
Membres
103 691
dernier inscrit
christophe89