Transposition de formule en VBA

siocnarf

XLDnaute Occasionnel
Bonjour,

Je me heurte au problème suivant:

J'écris cette formule dans Excel:
=SI(SOMMEPROD(($B$1:$B1=$B2)*($G$1:$G1=$G2)*($B2<>"")*($C2=""))=0;"Unique";1)

En la transposant en VBA, j'obtiens:
"=IF(SUMPRODUCT((R1C2:R[-1]C2=RC2)*(R1C7:R[-1]C7=RC7)*(RC2<>"""")*(RC3=""""))=0,""Unique"",1)"

Code:
Workbooks(D_StrChiffrierDeBase).Activate
Sheets(1).Select 

h = "=IF(SUMPRODUCT((R1C2:R[-1]C2=RC2)*(R1C7:R[-1]C7=RC7)*(RC2<>"""")*(RC3=""""))=0,""Unique"",1)"

Application.ScreenUpdating = False
With Workbooks(D_StrChiffrierDeBase).Sheets(1).UsedRange
  .Columns(9).FormulaR1C1 = h 'Insère la formule f dans chaque cellule de la colonne I
End With
Application.ScreenUpdating = True

J'obtiens sur la ligne 1:
=SI(SOMMEPROD(($B$1:$B1048576=$B1)*($G$1:$G1048576=$G1)*($B1<>"")*($C1=""))=0;"Unique";1)
au lieu de
=SI(SOMMEPROD(($B$1:$B1=$B2)*($G$1:$G1=$G2)*($B2<>"")*($C2=""))=0;"Unique";1)

Mon classeur a 8 colonnes et 27000 lignes.

Mes questions:
1. Comment débuter ma formule sur la ligne 2 au lieu de la ligne 1 et donc poser la formule =SI(SOMMEPROD(($B$1:$B1=$B2)*($G$1:$G1=$G2)*($B2<>"")*($C2=""))=0;"Unique";1) sur la ligne 2?
2.Pourquoi mes coodonnées apparaissent incorrectement alors que c'est la même équation?

C'est quand même bizarre...

Merci,

François
 
Dernière édition:

siocnarf

XLDnaute Occasionnel
Re : Transposition de formule en VBS

Bonjour,

J'ai trouvé ma réponse.
.Offset(1).Resize(.Rows.Count - 1).Columns(9).FormulaR1C1 = h

Avec cette correction, la première équation est sur la seconde ligne et les formules sont correctes. Mon hypothèse est que pour la ligne 1, effectuer un -1 fait "looper" excel vers la dernière ligne et que c'est cela qui pose problème.

Merci,

François
 

JCGL

XLDnaute Barbatruc
Re : Transposition de formule en VBS

Bonjour à tous,

Ce codage n'est pas du VBS mais VBA.
Dans la formule tu prends toute la colonne B.

Peux-tu essayer avec :
Code:
 "=IF(SUMPRODUCT((R1C2:R30000C2=RC2)*(R1C7:R30000C7=RC7)*(RC2<> """")*(RC3=""""))=0,""Unique"",1)"
A+ à tous
 
Dernière édition:

Discussions similaires