adapter la formule d'une cellule en visual basic

  • Initiateur de la discussion Initiateur de la discussion Saupin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour