OVH Cloud OVH Cloud

J'erre... mais à quel endroit ????????

5 réponses
Avatar
Denys
Bonjour à tous,

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 ....

Z'auriez une piste pour moi?

Merci

Denys

5 réponses

Avatar
AV
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
Avatar
Denys
Bonjour Alain,

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





Avatar
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
Avatar
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

Avatar
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