Microsoft 365 grande.valeur : erreur de transposition 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 !

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

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