OVH Cloud OVH Cloud

vba probl de if (pour newbie)

12 réponses
Avatar
gretabitis
bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 = "=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très
insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>=11,note<1
6),""Bien"",If(AND(note>=16,note<20),""Très
Bien"",If(note=20,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"), Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience

10 réponses

1 2
Avatar
Pierre Fauconnier
Bonjour

FormulaR1C1 "crée" une formule dans Excel. Il faut donc remplacer "note" par
"b2" dans la chaîne de construction de la formule. Cela permettra à Excel
d'adapter C2 lorsque B2 sera modifié

Cela convient-il?


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"gretabitis" a écrit dans le message de
news:
bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 = "=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très

insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1

6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"), Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience




Avatar
FxM
Bonsoir,

Outre le point 'note' soulevé par mon éminent collègue, tu devrais
pouvoir simplifier ta formule en enlevant une borne sur deux.

(attention aux coupures de lignes)
Sub Macro1()
ActiveSheet.Range("C2").Formula =
"=IF(B2<>"""",IF(B2=0,""Nul"",IF(B2<6,""Très
insuffisant"",IF(B2<11,""Insuffisant"",IF(B2<16,""Bien"",IF(B2<20,""Très
bien"",""Excellent""))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"), Type:=xlFillDefault
End Sub

@+
FxM





gretabitis wrote:
bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 = "=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très
insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1
6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"), Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience




Avatar
gretabitis
merci pour vos propositions
j'ai mis b2 à la place de note, mais j'ai toujours "la ligne jaune"

merci pour la proposition de simplification, mais je veux absolument garder
le ET pour voir

FxM wrote:
Bonsoir,

Outre le point 'note' soulevé par mon éminent collègue, tu devrais
pouvoir simplifier ta formule en enlevant une borne sur deux.

(attention aux coupures de lignes)
Sub Macro1()
ActiveSheet.Range("C2").Formula > "=IF(B2<>"""",IF(B2=0,""Nul"",IF(B2<6,""Très
insuffisant"",IF(B2<11,""Insuffisant"",IF(B2<16,""Bien"",IF(B2<20,""Très
bien"",""Excellent""))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"),
Type:=xlFillDefault
End Sub

@+
FxM





gretabitis wrote:
bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 >> "=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très

insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1


6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"), Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience




Avatar
FxM
Bien que je ne vois pas vraiment l'interet d'une telle formule [car la
définition de doubles bornes introduit une possibilité d'erreur et des
cas non prévus (note de 0.5 par exemple)], voilà la formule telle que tu
sembles la souhaiter.

(attention aux coupures de lignes)
Sub Macro2()
ActiveCell.Formula =
"=IF(B2<>"""",IF(B2=0,""Nul"",IF(AND(B2>=1,B2<6),""Très
insuffisant"",IF(AND(b2>=6,b2<11),""Insuffisant"",IF(AND(b2>,b2<16),""Bien"",IF(AND(b2>,b2<20),""Très
bien"",IF(b2 ,""Excellent"")))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"), Type:=xlFillDefault
End Sub

@+
FxM




gretabitis wrote:
merci pour vos propositions
j'ai mis b2 à la place de note, mais j'ai toujours "la ligne jaune"

merci pour la proposition de simplification, mais je veux absolument garder
le ET pour voir

FxM wrote:

Bonsoir,

Outre le point 'note' soulevé par mon éminent collègue, tu devrais
pouvoir simplifier ta formule en enlevant une borne sur deux.

(attention aux coupures de lignes)
Sub Macro1()
ActiveSheet.Range("C2").Formula >>"=IF(B2<>"""",IF(B2=0,""Nul"",IF(B2<6,""Très
insuffisant"",IF(B2<11,""Insuffisant"",IF(B2<16,""Bien"",IF(B2<20,""Très
bien"",""Excellent""))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"),
Type:=xlFillDefault
End Sub

@+
FxM





gretabitis wrote:

bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 >>>"=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très




insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1

6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"), Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience









Avatar
gretabitis
un grand merci
je vous rassure : avec excel "tout court" je n'aurais pas utilisé les deux
bornes, mais je voulais voir comment utiliser AND

d'accord, l'exemple est idiot, mais au moins j'ai vu que je me plantais avec
un truc aussi simple que ça

je peux dire avec fierté que je connais 5 % d'excel, et 0,001 de vba

et je ne dispose pas toujours de temps, surtout en continu

encore merci

FxM wrote:
Bien que je ne vois pas vraiment l'interet d'une telle formule [car la
définition de doubles bornes introduit une possibilité d'erreur et des
cas non prévus (note de 0.5 par exemple)], voilà la formule telle que
tu
sembles la souhaiter.

(attention aux coupures de lignes)
Sub Macro2()
ActiveCell.Formula > "=IF(B2<>"""",IF(B2=0,""Nul"",IF(AND(B2>=1,B2<6),""Très

insuffisant"",IF(AND(b2>=6,b2<11),""Insuffisant"",IF(AND(b2>,b2<16),""Bie

n"",IF(AND(b2>,b2<20),""Très
bien"",IF(b2 ,""Excellent"")))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"),
Type:=xlFillDefault
End Sub

@+
FxM




gretabitis wrote:
merci pour vos propositions
j'ai mis b2 à la place de note, mais j'ai toujours "la ligne jaune"

merci pour la proposition de simplification, mais je veux absolument
garder
le ET pour voir

FxM wrote:

Bonsoir,

Outre le point 'note' soulevé par mon éminent collègue, tu devrais
pouvoir simplifier ta formule en enlevant une borne sur deux.

(attention aux coupures de lignes)
Sub Macro1()
ActiveSheet.Range("C2").Formula >>> "=IF(B2<>"""",IF(B2=0,""Nul"",IF(B2<6,""Très
insuffisant"",IF(B2<11,""Insuffisant"",IF(B2<16,""Bien"",IF(B2<20,""Très
bien"",""Excellent""))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"),
Type:=xlFillDefault
End Sub

@+
FxM





gretabitis wrote:

bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 >>>> "=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très





insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1



6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"),
Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience








Avatar
FxM
Ne pense pas que VBA soit inné et que je puisse 'pondre' la formule
comme cela. Après avoir fait la formule dans la feuille de calculs, je
me suis contenté de la modifier (en fait F2 et entrée) avec
l'enregistreur de macros.

Vu que l'on indique des adresses de cellules en dur, il n'est plus
question de R1C1. Il faut remplacer RC[-1] par B2 et transformer
formulaR1C1 en formula.
De la logique sans rien de vraiment extraordinaire en fait.

@+
FxM




gretabitis wrote:
un grand merci
je vous rassure : avec excel "tout court" je n'aurais pas utilisé les deux
bornes, mais je voulais voir comment utiliser AND

d'accord, l'exemple est idiot, mais au moins j'ai vu que je me plantais avec
un truc aussi simple que ça

je peux dire avec fierté que je connais 5 % d'excel, et 0,001 de vba

et je ne dispose pas toujours de temps, surtout en continu

encore merci

FxM wrote:

Bien que je ne vois pas vraiment l'interet d'une telle formule [car la
définition de doubles bornes introduit une possibilité d'erreur et des
cas non prévus (note de 0.5 par exemple)], voilà la formule telle que
tu
sembles la souhaiter.

(attention aux coupures de lignes)
Sub Macro2()
ActiveCell.Formula >>"=IF(B2<>"""",IF(B2=0,""Nul"",IF(AND(B2>=1,B2<6),""Très



insuffisant"",IF(AND(b2>=6,b2<11),""Insuffisant"",IF(AND(b2>,b2<16),""Bie
n"",IF(AND(b2>,b2<20),""Très

bien"",IF(b2 ,""Excellent"")))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"),
Type:=xlFillDefault
End Sub

@+
FxM




gretabitis wrote:

merci pour vos propositions
j'ai mis b2 à la place de note, mais j'ai toujours "la ligne jaune"

merci pour la proposition de simplification, mais je veux absolument
garder
le ET pour voir

FxM wrote:


Bonsoir,

Outre le point 'note' soulevé par mon éminent collègue, tu devrais
pouvoir simplifier ta formule en enlevant une borne sur deux.

(attention aux coupures de lignes)
Sub Macro1()
ActiveSheet.Range("C2").Formula >>>>"=IF(B2<>"""",IF(B2=0,""Nul"",IF(B2<6,""Très
insuffisant"",IF(B2<11,""Insuffisant"",IF(B2<16,""Bien"",IF(B2<20,""Très
bien"",""Excellent""))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"),
Type:=xlFillDefault
End Sub

@+
FxM





gretabitis wrote:


bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 >>>>>"=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très





insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1



6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"),
Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience













Avatar
gretabitis
je m'accroche ! c'est vrai que je ferais mieux de commencer par le b.a ba

je pense être logique, tout va donc s'améliorer.....

espoir tu nous fais vivre !

FxM wrote:
Ne pense pas que VBA soit inné et que je puisse 'pondre' la formule
comme cela. Après avoir fait la formule dans la feuille de calculs, je
me suis contenté de la modifier (en fait F2 et entrée) avec
l'enregistreur de macros.

Vu que l'on indique des adresses de cellules en dur, il n'est plus
question de R1C1. Il faut remplacer RC[-1] par B2 et transformer
formulaR1C1 en formula.
De la logique sans rien de vraiment extraordinaire en fait.

@+
FxM




gretabitis wrote:
un grand merci
je vous rassure : avec excel "tout court" je n'aurais pas utilisé
les deux bornes, mais je voulais voir comment utiliser AND

d'accord, l'exemple est idiot, mais au moins j'ai vu que je me
plantais avec un truc aussi simple que ça

je peux dire avec fierté que je connais 5 % d'excel, et 0,001 de vba

et je ne dispose pas toujours de temps, surtout en continu

encore merci

FxM wrote:

Bien que je ne vois pas vraiment l'interet d'une telle formule [car
la définition de doubles bornes introduit une possibilité d'erreur
et des
cas non prévus (note de 0.5 par exemple)], voilà la formule telle
que
tu
sembles la souhaiter.

(attention aux coupures de lignes)
Sub Macro2()
ActiveCell.Formula >>> "=IF(B2<>"""",IF(B2=0,""Nul"",IF(AND(B2>=1,B2<6),""Très




insuffisant"",IF(AND(b2>=6,b2<11),""Insuffisant"",IF(AND(b2>,b2<16),""Bie


n"",IF(AND(b2>,b2<20),""Très

bien"",IF(b2 ,""Excellent"")))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"),
Type:=xlFillDefault
End Sub

@+
FxM




gretabitis wrote:

merci pour vos propositions
j'ai mis b2 à la place de note, mais j'ai toujours "la ligne jaune"

merci pour la proposition de simplification, mais je veux
absolument garder
le ET pour voir

FxM wrote:


Bonsoir,

Outre le point 'note' soulevé par mon éminent collègue, tu devrais
pouvoir simplifier ta formule en enlevant une borne sur deux.

(attention aux coupures de lignes)
Sub Macro1()
ActiveSheet.Range("C2").Formula >>>>> "=IF(B2<>"""",IF(B2=0,""Nul"",IF(B2<6,""Très

insuffisant"",IF(B2<11,""Insuffisant"",IF(B2<16,""Bien"",IF(B2<20,""Très





bien"",""Excellent""))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"),
Type:=xlFillDefault
End Sub

@+
FxM





gretabitis wrote:


bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 >>>>>> "=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très








insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1



6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"),
Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça
fait, j'aimerais garder les if et les and

merci pour votre patience












Avatar
Pierre Fauconnier
Salut FxM,

Comment vas-tu???
Vas-tu à Marseille? Pour moi, impossible pour l'instant, mais j'ai entendu
dire que quelque chose se tramait pour Paris fin d'année...

Allez, avec quelques belges, on va essayer de mettre un truc sur pied pour
le printemps...

A bientôt le plaisir de se revoir...

Pierre

"FxM" a écrit dans le message de
news:ua%
Bonsoir,

Outre le point 'note' soulevé par mon éminent collègue, tu devrais
pouvoir simplifier ta formule en enlevant une borne sur deux.

(attention aux coupures de lignes)
Sub Macro1()
ActiveSheet.Range("C2").Formula > "=IF(B2<>"""",IF(B2=0,""Nul"",IF(B2<6,""Très
insuffisant"",IF(B2<11,""Insuffisant"",IF(B2<16,""Bien"",IF(B2<20,""Très
bien"",""Excellent""))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"), Type:=xlFillDefault
End Sub

@+
FxM





gretabitis wrote:
bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 "=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très

insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1


6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"), Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience






Avatar
FxM
Bonsoir ami Pierrot,

Etant beaucoup boosté ces temps-ci, j'ai fait parvenir un mail d'excuses
auprès du c.o.i.n concernant Marseille. Le plaisir partagé de se revoir
devra attendre Paris. Allei les Belges :o)

Francois



Pierre Fauconnier wrote:
Salut FxM,

Comment vas-tu???
Vas-tu à Marseille? Pour moi, impossible pour l'instant, mais j'ai entendu
dire que quelque chose se tramait pour Paris fin d'année...

Allez, avec quelques belges, on va essayer de mettre un truc sur pied pour
le printemps...

A bientôt le plaisir de se revoir...

Pierre

"FxM" a écrit dans le message de
news:ua%

Bonsoir,

Outre le point 'note' soulevé par mon éminent collègue, tu devrais
pouvoir simplifier ta formule en enlevant une borne sur deux.

(attention aux coupures de lignes)
Sub Macro1()
ActiveSheet.Range("C2").Formula >>"=IF(B2<>"""",IF(B2=0,""Nul"",IF(B2<6,""Très
insuffisant"",IF(B2<11,""Insuffisant"",IF(B2<16,""Bien"",IF(B2<20,""Très
bien"",""Excellent""))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"), Type:=xlFillDefault
End Sub

@+
FxM





gretabitis wrote:

bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 >
"=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très



insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1

6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"), Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience











Avatar
sabatier
j'espère, pierre, que tu as bien entendu dire que paris, c'était le samedi
11 décembre pour le dîner traditionnel de fin d'année ; notre misange
devrait mettre cette info et un bulletin d'inscription en ligne dans son
excelabo mais je pense qu'elle n'a pas encore réagi à cette nouvelle manif'
du C.O.I.N.
jps

"Pierre Fauconnier" a écrit dans le
message de news:%
Salut FxM,

Comment vas-tu???
Vas-tu à Marseille? Pour moi, impossible pour l'instant, mais j'ai entendu
dire que quelque chose se tramait pour Paris fin d'année...

Allez, avec quelques belges, on va essayer de mettre un truc sur pied pour
le printemps...

A bientôt le plaisir de se revoir...

Pierre

"FxM" a écrit dans le message de
news:ua%
Bonsoir,

Outre le point 'note' soulevé par mon éminent collègue, tu devrais
pouvoir simplifier ta formule en enlevant une borne sur deux.

(attention aux coupures de lignes)
Sub Macro1()
ActiveSheet.Range("C2").Formula > > "=IF(B2<>"""",IF(B2=0,""Nul"",IF(B2<6,""Très
insuffisant"",IF(B2<11,""Insuffisant"",IF(B2<16,""Bien"",IF(B2<20,""Très
bien"",""Excellent""))))),"""")"
Range("C2").AutoFill Destination:=Range("C2:C15"), Type:=xlFillDefault
End Sub

@+
FxM





gretabitis wrote:
bonsoir

et voilà, je m'y remets et c'est dur
je n'arrive pas à trouver mon erreur :

extrait

note = Range("b2")
Range("c2").Activate
ActiveCell.FormulaR1C1 > "=If(note=0,""Nul"",if(AND(note>=1,note<6),""Très




insuffisant"",if(AND(note>=6,note<11),""Insuffisant"",if(AND(note>,note<1

6),""Bien"",If(AND(note>,note<20),""Très
Bien"",If(note ,""Excellent"")))))))))))"
Range("c2").Select
Selection.AutoFill Destination:=Range("c2:c15"), Type:=xlFillDefault
Range("c2:c15").Select


d'accord, c'est plus qu'alambiqué, mais "pour voir" ce que ça fait,
j'aimerais garder les if et les and

merci pour votre patience










1 2