Transposition de formule en VBA

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 !

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:
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
 
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:
- 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

Discussions similaires

Réponses
3
Affichages
285
Réponses
22
Affichages
1 K
Réponses
9
Affichages
671
Réponses
17
Affichages
1 K
Retour