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

Microsoft 365 grande.valeur : erreur de transposition formule en vba

WIsh_

XLDnaute Occasionnel
Bonjour à tous,

J'étais auparavant sur Excel 2013 et suis passé sur 365.

J'avais dans le code VBA un module pour réaliser des calculs mais depuis que je suis sur 365, la formule ne s'écrit plus correctement dans le fichier.

La formule qui s'inscrit en colonne E dans la feuille "Ligne" est :

{=SIERREUR(GRANDE.VALEUR(SI((VA2A[@Dcc]=[@Dcc])*(VA2A[@Present]="OUI");VA2A[jours]);LIGNES('GA2'!R1));"")}

alors qu'elle devrait être :

{=SIERREUR(GRANDE.VALEUR(SI((VA2A[Dcc]=[@Dcc])*(VA2A[Present]="OUI");VA2A[jours]);LIGNES('GA2'!R1));"")}

Dans le code vba :

Code:
Sub calcul()

Dim wk As Workbook
Dim WD6, WE5 As Worksheet

Set wk = ThisWorkbook
Set WE5 = wk.Worksheets("ligne")

With WE5.Range("E12")
.Formula = _
        "=IFERROR(LARGE(IF((VA2A[Dcc]=[@Dcc])*(VA2A[Present]=""OUI""),VA2A[jours]),ROWS('GA2'!R1)),"""")"
.FormulaArray = .FormulaR1C1
End With

End sub

Le fichier ci-joint vous sera peut-être plus parlant.

Merci d'avance pour l'expertise,
Wish
 

Pièces jointes

  • test calcul.xlsm
    32 KB · Affichages: 4
Dernière édition:
Solution
Bonsoir,

Cette ligne devrait suffire.
VB:
WE5.Range("E7").FormulaArray = "=IFERROR(LARGE(IF((VA2A[Dcc]=[@Dcc])*(VA2A[Present]=""OUI""),VA2A[jours]),ROWS('GA2'!R1)),"""")"
Testée sur excel 2021


Cordialement

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Cette ligne devrait suffire.
VB:
WE5.Range("E7").FormulaArray = "=IFERROR(LARGE(IF((VA2A[Dcc]=[@Dcc])*(VA2A[Present]=""OUI""),VA2A[jours]),ROWS('GA2'!R1)),"""")"
Testée sur excel 2021


Cordialement
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Pour toutes les plages de cellules.
VB:
Sub calcul()

    Dim c As Range

    With ThisWorkbook.Worksheets("ligne")
        For Each c In .Range("E7,E12,E17,E22,E27,E32")
            c.FormulaArray = "=IFERROR(LARGE(IF((VA2A[Dcc]=[@Dcc])*(VA2A[Present]=""OUI""),VA2A[jours]),ROW(1:1)),"""")"
            c.Resize(3).FillDown
        Next
    End With

End Sub
On pourrait faire une boucle par pas de 5 pour les lignes mais ça n'apporterait pas grand chose de plus.

Cordialement
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…