comment traduire INDIRECT en VBA

  • Initiateur de la discussion Initiateur de la discussion hidozo
  • Date de début Date de début

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 !

hidozo

XLDnaute Occasionnel
Bonjour,

j'aui une formule qui fonctionne très bien dans une cellule. Simplement, cela ralentit le traitement.

Comment traduire INDIRECT en VBA, je n'ai rien trouvé dessus ?

formule originale :

SOMMEPROD((SOUS.TOTAL(3;INDIRECT("feuil2!ar"&LIGNE(AR2:AR10000)))*(Feuil2!AR2:AR10000="Modèle 'Au bon moment'")))

Cordialement

Hidozo
 
Re : comment traduire INDIRECT en VBA

bonjour Hidozo

Voici la traduction de ta formule (mais je ne sais pas si c'est ce que tu souhaites!!)
Code:
[FONT=Times New Roman][SIZE=3]SUMPRODUCT((SUBTOTAL(3,INDIRECT("feuil2!ar"&LIGNE (AR2:AR10000)))*(Feuil2!AR2:AR10000"Modèle 'Au bon moment'")))[/SIZE][/FONT]
 
Re : comment traduire INDIRECT en VBA

Bonjour,

Merci de votre aide,

j'ai essayé :

ctivecell.formula=SUMPRODUCT((SUBTOTAL(3,INDIRECT("feuil2!ar"&LIGNE (AR2:AR10000)))*(Feuil2!AR2:AR10000="Modèle Au bon moment")))

Erreur de compilation !!!!!

Ne doit on pas remplacer LIGNE par rows ?
 
Re : comment traduire INDIRECT en VBA

Re,

j'ai même essayé :

Range("d3").Activate
ActiveCell.Formula = Application.WorksheetFunction.SumProduct((Application.WorksheetFunction.Subtotal(3, indirect("feuil2" & Rows("ar2:ar10000"))) * ("feuil2!ar2:ar10000" = "Modèle Au bon moment")))


Indirect n'est pas reconnu, ça ne marche pas

Cordialement

Hidozo

Je dois m'absenter, mais faut que je trouve une solution à mon problème. Je reviens ce PM.

Cordialement
 
Re : comment traduire INDIRECT en VBA

Bonjour à tous.

Hidozo: as tu essayé avec l'enregistreur de macro. Tu enregistres ta macro, tu cliques sur la formule, tu tapes F2 puis Entrée. Tu auras ainsi la tradution en VBA.

En général, cela permet de degrossir le problème.
 
Re : comment traduire INDIRECT en VBA

bonjour à tous

Formula est du string, essaye ca

Code:
activecell.formula= "SUMPRODUCT((SUBTOTAL(3,INDIRECT( ""feuil2!ar""&LIGNE (AR2:AR10000)))*(Feuil2!AR2:AR10000=""Modèle Au bon moment"")))"

par contre je n'ai pas tout compris, pourquoi faire un sommeprod pour nombrer avec un seul critere alors qu'un Nb.SI suffit largement.
nb.si prend beaucoup moins de ressource machine n'etant pas une formule matricielle
 
Re : comment traduire INDIRECT en VBA

Bonjour wilfried 42,

dans la colonne, j'ai 5 types de données : Modèle, dérive1, dérive2, dérive3 et dérive4

En fonction d'un filtre sur d'autres colonnes, je veux savoir combien i y a de modèle dans la colonne concernée, combien de dérive1 etc.... et chaque résultat va dans une cellule.

Dans les cellules Excel, avec les formules, ça marche très bien, mais ça prend tellement de ressource que l'ordi en peut plus.

C'est pour ca que je passe en VBA
 
Re : comment traduire INDIRECT en VBA

Wiflrie42,

Ta formule ne bug pas mais elle me copie juste la formule sans le = devant dans ma cellule. Ce que je voudrais moi, c'est de mettre dans cette cellule que le résultat de la formule
 
Re : comment traduire INDIRECT en VBA

Re

En l'absence de Wilfried 🙂 que je salue

teste:

Code:
activecell.formula= "=SUMPRODUCT((SUBTOTAL(3,INDIRECT( ""feuil2!ar""&LIGNE (AR2:AR10000)))*(Feuil2!AR2:AR10000=""Modèle Au bon moment"")))"

Mais je crois que ton problème ne sera pas reglé pour autant
Avec un petit fichier exemple on serait plus a même de t'aider efficacement
 
Re : comment traduire INDIRECT en VBA

Bonjour,

en fait, pour régler ce probléme qui m'a fait perdre 3 jours de boulot,

je sépare ma colonne avec différentes valeurs en plusieurs colonne où dedans ne se trouveront plus qu'une seule possibilité et là plus de prbléme de soustotal, j'ai la bonne formule.

merci à tous ceux qui m'ont aidés.

Cordialement

Hidozo

C'est quand même dommage qu'on n'ait pas trouvé la solution
 
Re : comment traduire INDIRECT en VBA

Bonjour,
Si j'ai bien compris, le problème d'hidozo est que le traitement des formules SOMMEPROD prend beaucoup de temps. Bien sûr cela est dû à la taille des matrices (10000 lignes) et au nombre des formules.
Perso je ne vois pas comment l'utilisation d'une macro VBA traitant SUMPRODUCT sur des bases similaires va résoudre ce problème... mais je peux me tromper.
A+

Edit : OK hidozo, mon post est parti sans que j'aie vu votre message
 
Dernière édition:
Re : comment traduire INDIRECT en VBA

>C'est quand même dommage qu'on n'ait pas trouvé la solution


Si tu expliques le problème, il y aura peut être une solution.

Exemple:
Compte dans une zone filtrée le nb d'enregistrements pour lequel le montant est >100

Code:
  For Each c In Range("c2", [c65000].End(xlUp)).SpecialCells(xlCellTypeVisible)
   If c.Value >= 100 Then t = t + 1
  Next c
  MsgBox t


JB
 
- 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
18
Affichages
2 K
H
Réponses
5
Affichages
1 K
H
E
Réponses
10
Affichages
11 K
Ethiryn - Glarilak
E
Retour