Cherche formule

Sur ton fichier exemple avec 500 lignes de formules ça donne un temps de 62.5

avec 1000 lignes 35.15

2000 lignes 62.5

5000 lignes 160.15

10000 lignes 304.68

20000 lignes 679.68

Sur mon fichier ça plante avec 13000 lignes de formule

Quand tu me parles de formules, je ne suis plus ! VBA : on travaille sans formule. Donc quand tu reviens sur des formules je ne sais plus de quoi il retourne !

Cordialement.

Le sujet du post ma formule ensuite tu me parle de dico

Ce que je voudrais savoir au final c'est si tu peux me faire fonctionner ça je parle surtout de la matricielle en AO2 les autres ça fonctionne.

Cette super formule que tu m'a faite

{=SI(Q2<>"";Q2-SI(ESTERREUR(DECALER($E$1;MAX(($E$1:E1=E2)*($Q$1:Q1<>"")*LIGNE($E$1:E1))-1;12));0;DECALER($E$1;MAX(($E$1:E1=E2)*($Q$1:Q1<>"")*LIGNE($E$1:E1))-1;12));"")}

dans cette macro moi ça fonctionne pas ça renvois FAUX comme valeur.

Sub Formules()
    Dim ws As Worksheet
    Dim Nblig As Long
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name Like "Feuil1" Then
            With ws
                .Select
                Nblig = .Cells(Rows.Count, "A").End(xlUp).Row
                If Nblig = 1 Then Exit Sub
                .Range("BI2:BI" & Nblig) = "=SUMPRODUCT((R2C31:R2000C31=RC31)*(R2C18:R2000C18=COLUMN(C[-60]))*R2C2:R2000C2)"
                .Range("BK2:BK" & Nblig) = "=SUMPRODUCT((R2C31:R2000C31=RC31)*(R2C18:R2000C18=COLUMN(C[-61]))*R2C2:R2000C2)"
                .Range("BM2:BM" & Nblig) = "=SUMPRODUCT((R2C31:R2000C31=RC31)*(R2C18:R2000C18=COLUMN(C[-62]))*R2C2:R2000C2)"
                .Range("BO2:BO" & Nblig) = "=SUMPRODUCT((R2C31:R2000C31=RC31)*(R2C18:R2000C18=COLUMN(C[-63]))*R2C2:R2000C2)"
                .Range("BQ2:BQ" & Nblig) = "=SUMPRODUCT((R2C31:R2000C31=RC31)*(R2C18:R2000C18=COLUMN(C[-64]))*R2C2:R2000C2)"
                .Range("BS2:BS" & Nblig) = "=SUMPRODUCT((R2C31:R2000C31=RC31)*(R2C18:R2000C18=COLUMN(C[-65]))*R2C2:R2000C2)"

                .Range("AO2:AO" & Nblig) = FormulaArray = _
        "=IF(RC[-57]<>"""",RC[-57]-IF(ISERROR(OFFSET(R1C5,MAX((R1C5:R[-1]C[-69]=RC[-69])*(R1C17:R[-1]C[-57]<>"""")*ROW(R1C5:R[-1]C[-69]))-1,12)),0,OFFSET(R1C5,MAX((R1C5:R[-1]C[-69]=RC[-69])*(R1C17:R[-1]C[-57]<>"""")*ROW(R1C5:R[-1]C[-69]))-1,12)),"""")"

                With [A1]
                    .CurrentRegion.Copy
                    .PasteSpecial Paste:=xlPasteValues
                    .Select
                    Application.CutCopyMode = False
                End With

            End With
        End If
    Next ws

End Sub

dans ce fichier là que tu m'a fais, j'ai pas insérer le module faudra le rajouter avec la macro

On est passé à une procédure VBA qui dispense d'utiliser une formule !

Il me paraît donc inutile de revenir sur la formule...

En outre je suis très généralement opposé à utiliser VBA pour placer des formules (sauf cas très très particuliers qui pourraient le justifier).

Les formules c'est l'affaire d'Excel, si on utilise VBA c'est qu'on veut s'en passer !

Mettre une formule en VBA est toujours plus compliqué et long que le faire manuellement ! C'est maso de procéder ainsi !

Cordialement.

.Range("BI2:BI" & Nblig) = "=SUMPRODUCT((R2C31:R2000C31=RC31)*(R2C18:R2000C18=COLUMN(C[-60]))*R2C2:R2000C2

ne va généralement pas faire fonctionner ta formule !

Il faut ajouter la propriété FormulaR1C1ou FormulaLocal


Hello MFerrand

MFerrand a écrit :

En outre je suis très généralement opposé à utiliser VBA pour placer des formules (sauf cas très très particuliers qui pourraient le justifier).

je plussoie

ps : tu ne m'en voudras pas d'intervenir ?

Steelson a écrit :
.Range("BI2:BI" & Nblig) = "=SUMPRODUCT((R2C31:R2000C31=RC31)*(R2C18:R2000C18=COLUMN(C[-60]))*R2C2:R2000C2

ne va généralement pas faire fonctionner ta formule !

Il faut ajouter la propriété FormulaR1C1ou FormulaLocal

Pourtant ça fonctionne comme ça

MFerrand a écrit :

On est passé à une procédure VBA qui dispense d'utiliser une formule !

Il me paraît donc inutile de revenir sur la formule...

En outre je suis très généralement opposé à utiliser VBA pour placer des formules (sauf cas très très particuliers qui pourraient le justifier).

Les formules c'est l'affaire d'Excel, si on utilise VBA c'est qu'on veut s'en passer !

Mettre une formule en VBA est toujours plus compliqué et long que le faire manuellement ! C'est maso de procéder ainsi !

Cordialement.

Tu suggère quoi alors ? sauf si mon cas est très particulier

Steelson a écrit :

Hello MFerrand

MFerrand a écrit :

En outre je suis très généralement opposé à utiliser VBA pour placer des formules (sauf cas très très particuliers qui pourraient le justifier).

je plussoie

ps : tu ne m'en voudras pas d'intervenir ?

Voyons ! Absolument pas ! Même si tu ne plussoyais pas !

Cela alimente la discussion... Et on se fait quelques civilités propres à conserver un climat agréable !

Je suis en train de me faire bouffer par des moustiques ! Ça, c'est moins agréable ! On est pourtant en hiver !

MFerrand a écrit :

Je suis en train de me faire bouffer par des moustiques ! Ça, c'est moins agréable ! On est pourtant en hiver !

Ben sur mon île, en plein été, nada, pas de moustiques ! et pourtant il y a des marais.

La dernière fois que je suis passé par là c'était en 93 et 94 je crois, j'avais un ami qui avait été nommé à Barbâtre. Je ne me souviens pas de moustiques en effet ! Il devait y en avoir moins qu'à Arles... Mais ne vieillissant j'y suis plus sensibles qu'autrefois ! Ou alors c'est qu'ils m'apprécient plus !!!

Rechercher des sujets similaires à "cherche formule"