Transcription d'une formule en langage VBA

Je souhaiterais transcrire cette formule en langage vba.

Une idée?

Merci!

=SI(ET(AB$2>=$C3;$D3>=AB$2);1;0)+SI(ET($C3>$D3; AB$2<=$D3);1;0)+SI(ET($C3>$D3; AB$2>=$C3);1;0)

essaie ça :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R2C[27]>=R[1]C3,R[1]C4>=R2C[27]),1,0)+IF(AND(R[1]C3>R[1]C4,R2C[27]<=R[1]C4),1,0)+IF(AND(R[1]C3>R[1]C4,R2C[27]>=R[1]C4),1,0)"

Pour transcrire en VBA ce genre de formule, je me mets toujours en mode "enregistrer une macro", et je tape la formule dans une cellule. Dans VBA, c'est traduit automatiquement, ça évite de se prendre la tête.

Bonjour, Salut Bajole,

Ou bien si tu ne veux pas te casser la tête avec la traduction, tu le fais avec cette syntaxe suivante, A1 recevant la formule :

[A1].FormulaLocal ="=SI(ET(AB$2>=$C3;$D3>=AB$2);1;0)+SI(ET($C3>$D3; AB$2<=$D3);1;0)+SI(ET($C3>$D3; AB$2>=$C3);1;0)"

PS : Je suis persuadé qu'on pourra la simplifier si on connaaît les tenants et les aboutissants.

j'avais fait ca mais ca ne marche pas...

ou est la faute de syntaxe a votre avis?

Sub occup()
'
' occup Macro
'
Dim ligne As Long
Dim col As Long
Dim entree As Long
Dim sortie As Long

Dim occup As Double

a = InputBox("Quel est le nombre de relevés?")

ligne = 3

With Sheets("dataoccup")

entree = .Cells(ligne, 3).Value
sortie = .Cells(ligne, 4).Value
occup = .Cells(ligne, col).Value

For col = 5 To 29
For ligne = 3 To a

If (entree <= (col - 5) And sortie >= (col - 5)) Then occup = 1
ElseIf entree > sortie And sortie >= (col - 5) Then occup = 1
ElseIf entree > sortie And entree <= (col - 5) Then occup = 1
Else: occup = 0
End If

End With

Bonsoir

Je ne comprends vraiment ce que tu veux faire mais je te proposes la correction suivante.

Cordialement

Sub Occup()

' occup Macro

Dim Ligne As Long

Dim Col As Long 'si il s'agit du numéro de colonne : "Dim Col as Byte" suffit (255 colonnes maxi)

Dim Entree As Long

Dim Sortie As Long

Dim Occup As Double

a = InputBox("Quel est le nombre de relevés?")

Ligne = 3

With Sheets("dataoccup")

For Col = 5 To 29

For Ligne = 3 To a

'Récupération des données à l'intérieur des boucles

Entree = .Cells(Ligne, 3).Value

Sortie = .Cells(Ligne, 4).Value

Occup = .Cells(Ligne, Col).Value

If (Entree <= (Col - 5) And Sortie >= (Col - 5)) Then

Occup = 1

ElseIf Entree > Sortie And Sortie >= (Col - 5) Then

Occup = 1

ElseIf Entree > Sortie And Entree <= (Col - 5) Then

Occup = 1

Else

Occup = 0

End If

'Et faire quelquechose

Next ' ou "Next Ligne" pour fermer la boucle 2

Next ' ou "Next Col" pour fermer la boucle 1

End With 'Fin du "With"

End Sub

Bonjour à tous

Dim Col As Long 'si il s'agit du numéro de colonne : "Dim Col as Byte" suffit (255 colonnes maxi)

sauf sur une version 2007, Dim col as integer

Rechercher des sujets similaires à "transcription formule langage vba"