Integration calcul du nbr de jour ouvrés VBA

Résolu
Eaheru Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   -  
Eaheru Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   -
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 !
A voir également:

2 réponses

Eaheru Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   20
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention   20
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Maintenant je résous par télépathie, ça va plus vite ;-)
eric
0
Eaheru Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   20
 
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