adapter la formule d'une cellule en visual basic

S

Saupin

Guest
Bonjour,
Alors voila je voudrais adapter une formule présente dans une cellule en visual basic, pour qu'elle soit utilisable dans une boucle.
La formule est:
si(A4=Lundi!E7;H4+Lundi!IU7;H4+Lundi!IU7-Lundi!IV7)
La boucle servant à faire èvoluer les cellule de la formule. Ainsi par la suite,
si(A4=Lundi!E8;H4+Lundi!IU8;H4+Lundi!IU8-Lundi!IV8 Puis
si(A4=Lundi!E9;H4+Lundi!IU9;H4+Lundi!IU9-Lundi!IV9 et ainsi de suite jusqu'à 12 par exemple.
Merci
 
R

Rai

Guest
Bonjour,

J'ai considéré que tu souhaités automatiser ton test en partant de la cellule active de ta feuille active, jusqu'à N lignes plus bas.
En VBA ça donne quelquechose du genre (désolé, j'ai pas testé) :
Sub Saupin()
N! = 12
With Sheets("Lundi")
For i! = 0 To N - 1
If ActiveSheet.[A4].Offset(i, 0) = .[E7].Offset(i, 0) Then
ActiveCell.Offset(i, 0) = .[IU7].Offset(i, 0)
Else
ActiveCell.Offset(i, 0) = .[IV7].Offset(i, 0)
End If
Next i
End With
End Sub


Ca convient ??

Rai
 
O

OnErrorResumeNext

Guest
bonjour Saupin,

essaie ça, en adaptant l'adresse des cellules qui reçoivent le résultat :

----------------------------------------------------------------------------------------------
Sub boucle()
For i = 7 To 12
Range("A" & i) = IIf([A4] = Worksheets("lundi").Range("E" & i), Worksheets("lundi").Range("IU" & i) + [H4], _
Worksheets("lundi").Range("IU" & i) + [H4] - Worksheets("lundi").Range("IV" & i))
Next
End Sub
----------------------------------------------------------------------------------------------

amicalement
 
R

Rai

Guest
Re-,

Bon déjà, ta formule peut-être écrite différemment :
=H4+Lundi!IU7-SI(A4<>Lundi!E7;Lundi!IV7;)
Puisque tu utilises IU7 de la feuille "lundi", quelle que soit la valeur de A4, et que tu lui soustrais IV7 dans certains cas seulement.

En relisant tes posts, je vois que j'étais allé un peu vite.
Je te propose la correction suivante :
Sub Saupin()
N! = 12
With Sheets("Lundi")
For i! = 0 To N - 1
ActiveCell.Offset(i, 0) = [H4] + .[IU7].Offset(i, 0)
If ActiveSheet.[A4] <> .[E7].Offset(i, 0) Then
ActiveCell.Offset(i, 0) = ActiveCell.Offset(i, 0) - .[IV7].Offset(i, 0)
End If
Next i
End With
End Sub


La procédure effectue écrit sur la feuille active, en partant de la cellule active, pendant N lignes.
Si tu veux partir d'une cellule en particulier (indépendante de ta cellule active), remplace ActiveCell par [X8] ou toute adresse utile

Cordialement,

Rai
 
S

Saupin

Guest
Marche pas, moi je ensez faire quelque chose de ce genre:
Sub xxx()
For b=7 to 27
If Sheets("Bilan").range("A4")=Sheets("lundi").Range("E"&b) Then
Sheets("Bilan").range("F4")=Sheets("lundi").Range("IU"&b)+ Sheets ("Bilan").range("H4")
End If
next b
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 547
Messages
2 089 490
Membres
104 185
dernier inscrit
Daniel RONNA