J'essaie de faire appliquer la formule suivante par Excel, mais rien n'y
fait. Excel semble chercher un objet !!!!
Sub First60()
With Worksheets("Workpage")
Set plg = .Range("P2:P" & .Range("O65536").End(xlUp).Row)
End With
For Each cell In plg
cell.FormulaR1C1 =
"=IF(AND(RC[-2]>=DATE(YEAR(RC[-2]),1,1),2<=DATE(YEAR(RC[-2]),1,IF(WEEKDAY(DATE(YEAR(RC[-2]),1,60),2)<6,60,IF(WEEKDAY(DATE(YEAR(RC[-2]),1,60),2)=6,62,61)))),""X"","")"
'même si j'essaie comme suit:
cell.FormulaArray
"=IF(AND(N2>=DATE(YEAR(N2),1,1),2<=DATE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","")"
Next cell
La formule doit inscrire un X dans chaque cellule de la colonne P
(correspondant à la plage) à chaque fois que la date inscrite en colonne N
fait partie des 60 premiers jours de l'année. Si le 60e jour est un samedi
ouun dimanche, on se rapporte au lundi suivant... La formule fonctionne
bien... je veux juste l'intégrer en VBA..
L'erreur ne semble pas être au niveau de la plage. Excel bogue sur la
formule en me donnant une erreur 1004 ....
Merci..... mais ça ne fonctionne toujours pas !!!!!!! Y a autre chose.....
Denys
Faut doubler tes guillemets dans le 3° argument du IF : "=IF(.........,""X"","""")"
Avis perso : le type de référence R1C1, c'est pas terrible
AV
Denys
Maintenant Excel copie la même formule sur toute la plage...
J'ai trouvé l'erreur, en plus de celle qu'Alain a trouvé... Voici la bonne formule: Sub First60() With Worksheets("Workpage") Set plg = .Range("P2:P" & .Range("O65536").End(xlUp).Row) End With For Each cell In plg cell.FormulaArray = "=IF(AND(N2>ÚTE(YEAR(N2),1,1),$N2<ÚTE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","""")" Next cell
Sauf que maintenant, c'est exactement la même formule copiée dans toute la plage... N2 ne change pas en N3, puis en N4 etc....
Que dois-je faire?
Merci
Denys
Maintenant Excel copie la même formule sur toute la plage...
J'ai trouvé l'erreur, en plus de celle qu'Alain a trouvé... Voici la bonne
formule:
Sub First60()
With Worksheets("Workpage")
Set plg = .Range("P2:P" & .Range("O65536").End(xlUp).Row)
End With
For Each cell In plg
cell.FormulaArray =
"=IF(AND(N2>ÚTE(YEAR(N2),1,1),$N2<ÚTE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","""")"
Next cell
Sauf que maintenant, c'est exactement la même formule copiée dans toute la
plage... N2 ne change pas en N3, puis en N4 etc....
Maintenant Excel copie la même formule sur toute la plage...
J'ai trouvé l'erreur, en plus de celle qu'Alain a trouvé... Voici la bonne formule: Sub First60() With Worksheets("Workpage") Set plg = .Range("P2:P" & .Range("O65536").End(xlUp).Row) End With For Each cell In plg cell.FormulaArray = "=IF(AND(N2>ÚTE(YEAR(N2),1,1),$N2<ÚTE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","""")" Next cell
Sauf que maintenant, c'est exactement la même formule copiée dans toute la plage... N2 ne change pas en N3, puis en N4 etc....
Que dois-je faire?
Merci
Denys
AV
Sauf que maintenant, c'est exactement la même formule copiée dans toute la plage... N2 ne change pas en N3, puis en N4 etc....
Modifie comme suit :
Sub First60() With Worksheets("Workpage") x = .Range("O65536").End(xlUp).Row .[P2].FormulaArray "=IF(AND(N2>ÚTE(YEAR(N2),1,1),$N2<ÚTE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1, 60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","""")" .[P2].AutoFill Destination:=Range("P2:P" & x) End With End Sub
AV
Sauf que maintenant, c'est exactement la même formule copiée dans toute la
plage... N2 ne change pas en N3, puis en N4 etc....
Modifie comme suit :
Sub First60()
With Worksheets("Workpage")
x = .Range("O65536").End(xlUp).Row
.[P2].FormulaArray "=IF(AND(N2>ÚTE(YEAR(N2),1,1),$N2<ÚTE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1,
60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","""")"
.[P2].AutoFill Destination:=Range("P2:P" & x)
End With
End Sub
Sauf que maintenant, c'est exactement la même formule copiée dans toute la plage... N2 ne change pas en N3, puis en N4 etc....
Modifie comme suit :
Sub First60() With Worksheets("Workpage") x = .Range("O65536").End(xlUp).Row .[P2].FormulaArray "=IF(AND(N2>ÚTE(YEAR(N2),1,1),$N2<ÚTE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1, 60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","""")" .[P2].AutoFill Destination:=Range("P2:P" & x) End With End Sub
AV
Denys
Magnifique !!!!!!
Merci beaucoup Alain et bonne fin de semaine !!!!
Denys
Sauf que maintenant, c'est exactement la même formule copiée dans toute la plage... N2 ne change pas en N3, puis en N4 etc....
Modifie comme suit :
Sub First60() With Worksheets("Workpage") x = .Range("O65536").End(xlUp).Row .[P2].FormulaArray > "=IF(AND(N2>ÚTE(YEAR(N2),1,1),$N2<ÚTE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1, 60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","""")" .[P2].AutoFill Destination:=Range("P2:P" & x) End With End Sub
AV
Magnifique !!!!!!
Merci beaucoup Alain et bonne fin de semaine !!!!
Denys
Sauf que maintenant, c'est exactement la même formule copiée dans toute la
plage... N2 ne change pas en N3, puis en N4 etc....
Modifie comme suit :
Sub First60()
With Worksheets("Workpage")
x = .Range("O65536").End(xlUp).Row
.[P2].FormulaArray > "=IF(AND(N2>ÚTE(YEAR(N2),1,1),$N2<ÚTE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1,
60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","""")"
.[P2].AutoFill Destination:=Range("P2:P" & x)
End With
End Sub
Sauf que maintenant, c'est exactement la même formule copiée dans toute la plage... N2 ne change pas en N3, puis en N4 etc....
Modifie comme suit :
Sub First60() With Worksheets("Workpage") x = .Range("O65536").End(xlUp).Row .[P2].FormulaArray > "=IF(AND(N2>ÚTE(YEAR(N2),1,1),$N2<ÚTE(YEAR(N2),1,IF(WEEKDAY(DATE(YEAR(N2),1, 60),2)<6,60,IF(WEEKDAY(DATE(YEAR(N2),1,60),2)=6,62,61)))),""X"","""")" .[P2].AutoFill Destination:=Range("P2:P" & x) End With End Sub