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 -
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 !
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:
- Integration calcul du nbr de jour ouvrés VBA
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Mettre a jour chromecast - Accueil - Guide TV et vidéo
2 réponses
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
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
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