Integration calcul du nbr de jour ouvrés VBA

Résolu/Fermé
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
- 7 juil. 2010 à 16:17
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
- 7 juil. 2010 à 19:25
Bonjour,

J'essaie donc d'intégrer un calcul de jour ouvrés dans une routine VBA que certains ici m'ont permis de construire.

La voici :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Long
lig = Target.Row
If lig = 1 Then Exit Sub 'non actif sur ligne 1
ActiveSheet.Unprotect Password:="" 'password a remplir quand routine ok
Cells(lig, 12).Locked = Not (Application.CountA(Cells(lig, 1).Resize(1, 8)) = 8)
If Not Intersect(Target, Cells(lig, 2).Resize(1, 7)) Is Nothing Then
If Application.CountA(Cells(lig, 2).Resize(1, 7)) = 7 Then
Cells(lig, 1) = Now()
Else
Cells(lig, 1) = ""
End If
ElseIf Not Intersect(Target, Range("I" & lig)) Is Nothing Then
Cells(lig, 1).Resize(1, 11).Locked = (Cells(lig, 9) <> "")
Cells(lig, 11).FormulaR1C1 = "=NB.JOURS.OUVRES(RC[-6],RC[-4])"
Cells(lig, 10) = Now()
End If
ActiveSheet.Protect Password:="", DrawingObjects:=False, Contents:=True, Scenarios:=False 'password a remplir quand routine ok
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub


La macro en temps que telle fonctionne bien mais ...
depuis que j'ai inséré la ligne :
Cells(lig, 11).FormulaR1C1 = "=NB.JOURS.OUVRES(RC[-6],RC[-4])"
J'ai une erreur "1004" : erreur définie par l'application ou par l'objet
et la ligne : Cells(lig, 10) = Now() ne s'exécute plus.

Je dois oublier quelque chose, mais la .. je bloque. Auriez vous une idée ?

Merci d'avance !

2 réponses

Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
7 juil. 2010 à 16:59
Je progresse dans mon dépannage et voici ou j'en suis :

J'ai donc la boucle :

ElseIf Not Intersect(Target, Range("I" & lig)) Is Nothing Then
Cells(lig, 1).Resize(1, 12).Locked = (Cells(lig, 9) <> "")
Cells(lig, 10) = Now()
Cells(lig, 11).FormulaR1C1 = "=NETWORKDAYS(RC[-6],RC[-4])"
End If

qui ne fonctionne pas.
mais si je fais :

ElseIf Not Intersect(Target, Range("I" & lig)) Is Nothing Then
Cells(lig, 1).Resize(1, 12).Locked = (Cells(lig, 9) <> "")
'Cells(lig, 10) = Now()
Cells(lig, 11).FormulaR1C1 = "=NETWORKDAYS(RC[-6],RC[-4])"
End If

la ligne 'Cells(lig, 10) = Now() étant commentée
La boucle s'exécute parfaitement et ne plante pas.
Si je fais :

ElseIf Not Intersect(Target, Range("I" & lig)) Is Nothing Then
Cells(lig, 1).Resize(1, 12).Locked = (Cells(lig, 9) <> "")
Cells(lig, 10) = Now()
'Cells(lig, 11).FormulaR1C1 = "=NETWORKDAYS(RC[-6],RC[-4])"
End If

la ligne 'Cells(lig, 11).FormulaR1C1 = "=NETWORKDAYS(RC[-6],RC[-4])" étant commentée
La aussi la boucle s'exécute sans problème.

Donc il doit y avoir une règle (que je cherche) :limitant le nombre d'action dans ce type de boucle ? commet peut on s'affranchir de cette limite ?

Merci d'avance
0
eriiic
Messages postés
24408
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 juin 2022
7 090
7 juil. 2010 à 17:13
Bonjour,

Il n'y a pas de limitation à l'intérieur d'une boucle.
Tu devrais être plus précis et donner les messages d'erreur.
Et encore mieux, déposer un fichier exemple sur cijoint.fr et coller ici le lien fourni
eric
0
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
7 juil. 2010 à 17:39
Bonjour Eriic et merci de ta réponse.

Voici le lien vers l'exemple ... qui fonctionne sans que j'ai vraiment compris ce que j'ai modifié ... :)
http://www.cijoint.fr/cjlink.php?file=cj201007/cijXJPDQEF.xls
0
eriiic
Messages postés
24408
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 juin 2022
7 090
7 juil. 2010 à 17:48
Maintenant je résous par télépathie, ça va plus vite ;-)
eric
0
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
7 juil. 2010 à 19:25
Ah ben oui, carrément ! :) merci de t'être penché sur le sujet en tout cas.comme tu peux le voir ta macro fonctionne très bien ! :)
0