Erreur de compilation sur FormulaLocal en VBA

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonsoir Le Forum,
Je bloque sur un Code qui m’annonce le message suivant :
« Erreur de compilation : Attendu Fin d’Instruction »

Pouvez-vous me venir en aide sachant que, dans le code suivant, l’erreur indiquée se produit sur la ligne centrale Range("K" & x).FormulaLocal = (pour être précis sur les ;) ?

Pouvez-vous aussi me dire laquelle des deux tentatives suivantes sera la meilleure et la plus rapide ?
'Objectif : placer la formule en K
'en K26 puis suivantes :
'=SI(J26="";"";SOMMEPROD(($H$26:$H$33=J26)*$I$26:$I$33))
' adaptée en
'"=IF("J" & x ="";"";SUMPRODUCT(($H$26:$H" & m= J" & x)*$I$26:$I" & m))"


VB:
'---
'tentative 1
m = Cells(26, 9).End(xlDown).Row 'analysera des valeurs en colonne I
For x = 26 To m
  Range("K" & x).FormulaLocal = "=IF(J" & x ="""";"""";SUMPRODUCT(($H$26:$H" & m= J" & x)*$I$26:$I" & m))"
Next x

ou bien celle -ci :

VB:
'tentative 2
m = Cells(26, 9).End(xlDown).Row 'analysera des valeurs en colonne I
 For Each Cellule In Range(Cells(26, 11), Cells(x, 11))
   With Cellule
     .Formula =  "=IF(J" & x ="""";"""";SUMPRODUCT(($H$26:$H" & m= J" & x)*$I$26:$I" & m))"
     .Value = .Value
   End With
 Next Cellule
'---

J'y planche depuis 24 heures et j'en attrape un mal de tête à force d'arrêts de la macro sur ces lignes.
Merci à l'avance pour votre aide,
Webperegrino
 
C

Compte Supprimé 979

Guest
Re : Erreur de compilation sur FormulaLocal en VBA

Bonjour Webperegrino

Code:
m = Cells(26, 9).End(xlDown).Row 'analysera des valeurs en colonne I
For x = 26 To m
  'Range("K" & x).FormulaLocal = "=IF(J" & x & "="""";"""";SUMPRODUCT(($H$26:$H" & m & "=J" & x & ")*$I$26:$I" & m & "))"
  Range("K" & x).FormulaLocal = "=SI(J" & x & "="""";"""";SOMMEPROD(($H$26:$H" & m & "=J" & x & ")*$I$26:$I" & m & "))"
Next x

A+
 

Dranreb

XLDnaute Barbatruc
Re : Erreur de compilation sur FormulaLocal en VBA

Bonsoir.
Moi, pour plus de rapidité, je le ferais plutôt en une fois sur toute la plage mais en R1C1:
VB:
With Range(Cells(26, 11), Cells(m, 11))
   .FormulaR1C1 = "=IF(RC10="""","""",SUMPRODUCT((R26C8:R" & m & "C8=RC10)*R26C9:R" & m & "C9))"
   .Value = .Value
   End With
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Erreur de compilation sur FormulaLocal en VBA

Bonjour Le Forum,
Bonjour BrunoM45 et bonjour Dranreb,
C'est parfait : vos deux solutions fonctionnent à merveille !
Me voilà maintenant avec l'embarras du choix( pour cette formule qui découle d'un choix justement dans ma macro générale).
Vous me comblez : ça va tourner du feu de dieu dans mon application !
Merci et excellente journée à vous.
Webpereregrino
 

Statistiques des forums

Discussions
312 305
Messages
2 087 093
Membres
103 467
dernier inscrit
Pandiska