OVH Cloud OVH Cloud

Formule If en VBA

7 réponses
Avatar
Denys
Bonjour =E0 tous,

J'ai essay=E9 d'=E9crire une formule IF en VBA, mais je ne=20
peux en venir =E0 bout; voici ce que cela donne:

Dim Ligne As Long

With ActiveSheet()
Ligne =3D .[a65536].End(xlUp)(2).Row

With ActiveSheet()
.Range("I" & Ligne).Formula =3D "=3Dif(B" & Ligne & ")=3D"",
((H" & Ligne & ")+ ((I"&Ligne&").offset(-1, 0)), (H" &=20
Ligne & "))"

Ce que je veux c'est que si la cellule correspondante (sur=20
le m=EAme ligne) en colonne B est vide, alors on additionne=20
la cellule en H plus la cellule pr=E9c=E9dente en I. Sinon=20
(donc s'il y a quelque chose d'=E9crit en B)on prend le=20
r=E9sultat en H.

Dans une cellule sans VBA on pourrait lire la formule=20
comme suit:
=3DIf(B11=3D"",H11+I10,H11)

Quelqu'un pourrait m'aider?

Merci beaucoup

Denys

7 réponses

Avatar
Michel Gaboly
Bonsoir,

Si tu utilises Formula, il faut traduire en anglais les
noms de fonctions (IF et pas SI).

Par ailleurs, tu peux simplifier en utilisant
Ligne -1, plutôt qu'un Offset dans (I"&Ligne&").
Offset(-1, 0).

Tu peux utiliser les noms en français, mais il faut
remplacer Formula par FormulaLocal.

L'inconvénient est que si un jour ton classeur est
ouvert avec une version d'Excel dans une autre langue
que le français, cela plantera ;-(((



Bonjour à tous,

J'ai essayé d'écrire une formule IF en VBA, mais je ne
peux en venir à bout; voici ce que cela donne:

Dim Ligne As Long

With ActiveSheet()
Ligne = .[a65536].End(xlUp)(2).Row

With ActiveSheet()
.Range("I" & Ligne).Formula = "=if(B" & Ligne & ")="",
((H" & Ligne & ")+ ((I"&Ligne&").offset(-1, 0)), (H" &
Ligne & "))"

Ce que je veux c'est que si la cellule correspondante (sur
le même ligne) en colonne B est vide, alors on additionne
la cellule en H plus la cellule précédente en I. Sinon
(donc s'il y a quelque chose d'écrit en B)on prend le
résultat en H.

Dans une cellule sans VBA on pourrait lire la formule
comme suit:
=If(B11="",H11+I10,H11)

Quelqu'un pourrait m'aider?

Merci beaucoup

Denys


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Papyty
Salut @ Tous,
Denys a écrit:

A tester, attention au coupure:

Sub Test()
Dim Ligne As Long

With ActiveSheet
Ligne = .[a65536].End(xlUp)(2).Row
.Range("I" & Ligne).FormulaR1C1 "=IF(RC[-7]="""",RC[-1]+R[-1]C,RC[-1])"
End With
End Sub

Est-ce que ça vas?

--
@+
Thierry
J'ai essayé d'écrire une formule IF en VBA, mais je ne
peux en venir à bout; voici ce que cela donne:

Dim Ligne As Long

With ActiveSheet()
Ligne = .[a65536].End(xlUp)(2).Row

With ActiveSheet()
.Range("I" & Ligne).Formula = "=if(B" & Ligne & ")="",
((H" & Ligne & ")+ ((I"&Ligne&").offset(-1, 0)), (H" &
Ligne & "))"

Ce que je veux c'est que si la cellule correspondante (sur
le même ligne) en colonne B est vide, alors on additionne
la cellule en H plus la cellule précédente en I. Sinon
(donc s'il y a quelque chose d'écrit en B)on prend le
résultat en H.

Dans une cellule sans VBA on pourrait lire la formule
comme suit:
=If(B11="",H11+I10,H11)


Avatar
isabelle
bonjour Denys,

essaie comme ça,

ActiveCell.Formula = "=IF(B" & _
Ligne & "="""",H" & Ligne & "+I" & _
Ligne - 1 & ",H" & Ligne & ")"

isabelle


Bonjour à tous,

J'ai essayé d'écrire une formule IF en VBA, mais je ne
peux en venir à bout; voici ce que cela donne:

Dim Ligne As Long

With ActiveSheet()
Ligne = .[a65536].End(xlUp)(2).Row

With ActiveSheet()
.Range("I" & Ligne).Formula = "=if(B" & Ligne & ")="",
((H" & Ligne & ")+ ((I"&Ligne&").offset(-1, 0)), (H" &
Ligne & "))"

Ce que je veux c'est que si la cellule correspondante (sur
le même ligne) en colonne B est vide, alors on additionne
la cellule en H plus la cellule précédente en I. Sinon
(donc s'il y a quelque chose d'écrit en B)on prend le
résultat en H.

Dans une cellule sans VBA on pourrait lire la formule
comme suit:
=If(B11="",H11+I10,H11)

Quelqu'un pourrait m'aider?

Merci beaucoup

Denys


Avatar
Denys
Bonjour Michel, Isabelle et Papyty,

Merci beaucoup pour vos réponses. je regarde cela à tête
reposée, et je vous reviens...

Merci pour votre temps

Denys


-----Original Message-----
Bonjour à tous,

J'ai essayé d'écrire une formule IF en VBA, mais je ne
peux en venir à bout; voici ce que cela donne:

Dim Ligne As Long

With ActiveSheet()
Ligne = .[a65536].End(xlUp)(2).Row

With ActiveSheet()
.Range("I" & Ligne).Formula = "=if(B" & Ligne & ")="",
((H" & Ligne & ")+ ((I"&Ligne&").offset(-1, 0)), (H" &
Ligne & "))"

Ce que je veux c'est que si la cellule correspondante
(sur

le même ligne) en colonne B est vide, alors on additionne
la cellule en H plus la cellule précédente en I. Sinon
(donc s'il y a quelque chose d'écrit en B)on prend le
résultat en H.

Dans une cellule sans VBA on pourrait lire la formule
comme suit:
=If(B11="",H11+I10,H11)

Quelqu'un pourrait m'aider?

Merci beaucoup

Denys
.



Avatar
Clément Marcotte
Dans une cellule sans VBA on pourrait lire la formule
comme suit:
=If(B11="",H11+I10,H11)


Quelqu'un pourrait m'aider?

Avec cela, beaucoup plus simple que les patentes des concurrents

Dim Ligne As Long

With ActiveSheet()
Ligne = .[a65536].End(xlUp)(2).Row

With ActiveSheet()
.Range("I" & Ligne).value = "=iif(B" & Ligne & ")="",
((H" & Ligne & ")+ ((I"&Ligne&").offset(-1, 0)), (H" &
Ligne & "))"

C'est bien iif()

Avatar
Denys
Bonsoir Clément,

Merci de m'avoir répondu. Cependant, je ne comprends pas
le iif .....

Je travaillerai là-dessus demain et te reviendrai..

En attendant, bonne soirée et merci...

Denys


-----Original Message-----
Dans une cellule sans VBA on pourrait lire la formule
comme suit:
=If(B11="",H11+I10,H11)


Quelqu'un pourrait m'aider?

Avec cela, beaucoup plus simple que les patentes des
concurrents


Dim Ligne As Long

With ActiveSheet()
Ligne = .[a65536].End(xlUp)(2).Row

With ActiveSheet()
.Range("I" & Ligne).value = "=iif(B" & Ligne & ")="",
((H" & Ligne & ")+ ((I"&Ligne&").offset(-1, 0)), (H" &
Ligne & "))"

C'est bien iif()
.




Avatar
Clément Marcotte
Bonjour,

C'est le même principe que le si d'Excel.

"Denys" a écrit dans le message
de news:041c01c3b86a$5bd9cb30$
Bonsoir Clément,

Merci de m'avoir répondu. Cependant, je ne comprends pas
le iif .....

Je travaillerai là-dessus demain et te reviendrai..

En attendant, bonne soirée et merci...

Denys


-----Original Message-----
Dans une cellule sans VBA on pourrait lire la formule
comme suit:
=If(B11="",H11+I10,H11)


Quelqu'un pourrait m'aider?

Avec cela, beaucoup plus simple que les patentes des
concurrents


Dim Ligne As Long

With ActiveSheet()
Ligne = .[a65536].End(xlUp)(2).Row

With ActiveSheet()
.Range("I" & Ligne).value = "=iif(B" & Ligne & ")="",
((H" & Ligne & ")+ ((I"&Ligne&").offset(-1, 0)), (H" &
Ligne & "))"

C'est bien iif()
.