Programmation VBA

Fermé
thibeau67 Messages postés 30 Date d'inscription lundi 20 avril 2015 Statut Membre Dernière intervention 2 mai 2016 - 28 avril 2016 à 09:15
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 28 avril 2016 à 15:57
Bonjour,

J'aimerai changer cette formule :

=SI(ESTERREUR(LIREDONNEESTABCROISDYNAMIQUE("Temps Coût MO";Feuil4!$A$3;"Article";$A5;"PDC";D$4)*$C5);0;LIREDONNEESTABCROISDYNAMIQUE("Temps Coût MO";Feuil4!$A$3;"Article";$A5;"PDC";D$4))*$C5

en code vba

J'aimerai que cette formule se face sur toute les cellules de la plage ( d5:AA(numéro de la dernière ligne non vide) dans mon cas ligne 1230)

J'aimerai bien que la macro face la cellule D5 en premier puis qu'elle face les cellules jusqu'à AA5 et ensuite qu'elle descende jusqu'à la dernière ligne non vide afin de remplir toute la plage demandée.

Est-ce possible ?

Merci d'avance

Cordialement

Thibeau67

1 réponse

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
28 avril 2016 à 15:57
Bonjour
Essayez ceci. Attention, n'ayant pas votre fichier, je n'ai pas pu la tester, faites un essai sur une copie.
Sub RecopieFormule()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    DerLig = Cells.Find("*", , , , xlByColumns, xlPrevious).Row
    Range(Cells(5, "D"), Cells(DerLig, "AA")).FormulaR1C1 = "=IF(ISERROR(GETPIVOTDATA(""Temps Coût MO"",Feuil4!R3C1,""Article"",R[4]C1,""PDC"",R4C[1])*R[4]C3),0,GETPIVOTDATA(""Temps Coût MO"",Feuil4!R3C1,""Article"",R[4]C1,""PDC"",R4C[1]))*R[4]C3"
    Application.Calculation = xlCalculationAutomatic
End Sub
Cdlt
0