Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Réponses
9
Affichages
460
Réponses
17
Affichages
995
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…