Problème FormulaArray

Bonjour,

Je viens vers vous car je rencontre un petit soucis avec mon code VBA suivant :

    ' [----- Copier les heures en fonction des noms & prénoms de la feuille 0703138 -----] '
    MonClasseur.Sheets("0703138").Activate
    Range(Range("D10"), Range("D10").End(xlDown).Offset(-1, 0)).Copy
        ' [----- Coller les heures dans la feuille active -----] '
        ThisWorkbook.ActiveSheet.Range("E4").PasteSpecial xlPasteValues

    ' [----- Copier les heures en fonction des noms & prénoms de la feuille 0703156 -----] '
    MonClasseur.Sheets("0703156").Select
    Range(Range("D10"), Range("D10").End(xlDown).Offset(-1, 0)).Copy
        ' [----- Coller les heures dans la feuille active -----] '
        ThisWorkbook.ActiveSheet.Range("E4").End(xlDown).Offset(1, 0).PasteSpecial xlPasteValues

    ' [----- Copier les heures en fonction des noms & prénoms de la feuille 0703172 -----] '
    MonClasseur.Sheets("0703172").Select
    Range(Range("D10"), Range("D10").End(xlDown).Offset(-1, 0)).Copy
        ' [----- Coller les heures dans la feuille active -----] '
        ThisWorkbook.ActiveSheet.Range("E4").End(xlDown).Offset(1, 0).PasteSpecial xlPasteValues

    ' [----- Copier les heures en fonction des noms & prénoms de la feuille 0703178 -----] '
    MonClasseur.Sheets("0703178").Select
    Range(Range("D10"), Range("D10").End(xlDown).Offset(-1, 0)).Copy
        ' [----- Coller les heures dans la feuille active -----] '
        ThisWorkbook.ActiveSheet.Range("E4").End(xlDown).Offset(1, 0).PasteSpecial xlPasteValues

    ' [----- Calculer la dernière ligne de la colonne "D" -----] '
    derniereLigne = Cells(Rows.Count, 4).End(xlUp).Row

    'Boucle "For" pour associer les heures à la personne
    For i = 1 To derniereLigne:
        Cells(i, 5).Select
        Selection.FormulaArray = _
        "=MAX(IF(RC[-4]:R[204]C[-4]=RC[-1],RC[-3]:R[204]C[-3]))"
    Next
           

Il a pour but d'attribuer à chaque personne Inscrite dans la colonne "D", les heures effectuées. Sauf qu'ici j'ai l'erreur suivante :

image

Ce code fonctionnait parfaitement hier et la il ne fonctionne plus ^^
Auriez-vous une solution ?

Si vous avez la moindre question, n'hésitez pas !

Cordialement MikaG

Bonjour,

essayer ceci :

    With MonClasseur.Sheets("0703138")
        .Range(.Range("D10"), .Range("D10").End(xlDown).Offset(-1, 0)).Copy
        ' [----- Coller les heures dans la feuille active -----] '
        ThisWorkbook.ActiveSheet.Range("E4").PasteSpecial xlPasteValues
    End With

Même structure pour les 3 autres feuilles

Je ne pense pas que vous deviez utiliser une formule ARRAY (donc matricielle).
Remplacez la boucle FOR par les lignes ci-dessous

derniereligne = Cells(Rows.Count, 4).End(xlUp).Row
With Cells(i, 5)
    .FormulaR1C1 = "=MAX(IF(RC[-4]:R[204]C[-4]=RC[-1],RC[-3]:R[204]C[-3]))"
    .AutoFill Destination:=Range(Cells(i, 5), Cells(derniereligne, 5))
End With

Si ok -->

Cordialement

Bonjour,

Tout d'abords, merci pour votre réponse !

Ensuite en essayant votre code j'ai une erreur :

image

Et cela vient de cette ligne :

image
derniereligne = Cells(Rows.Count, 4).End(xlUp).Row
With Cells(i, 5)
    .FormulaR1C1 = "=MAX(IF(RC[-4]:R[204]C[-4]=RC[-1],RC[-3]:R[204]C[-3]))"
    .AutoFill Destination:=Range(Cells(i, 5), Cells(derniereligne, 5))
End With

Auriez-vous une solution ?

Cordialement

MikaG

Bonjour,

Heu oui juste, remplacez le i par 1 dans les deux lignes de code

Cordialement

Re bonjour,

Exactement ! Cela fonctionne très bien comme cela.

Merci beaucoup pour votre aide.

Cordialement

MikaG

Parfait

D'ailleurs à ce sujet, vous avez pas mal de sujets qui sont toujours ouverts.

Cordialement

Rechercher des sujets similaires à "probleme formulaarray"