Fonctions Personnalisées (avec Feuilles Variables)
Bonjour MarieG
Qu'entends-tu exactement par :
J'ai remarqué qu'avec cette nouvelle, les cellules ont du mal à se mettre à jour.
As-tu moyen de nous donner ton dernier fichier utilisé (anonymisé) ?
A+
Bonjour BrunoM45,
Ci-joint le fichier pour le problème de rafraîchissement des formule . J'ai aussi deux autres questions que je 'ai mis en commentaire dans le fichier pour mieux illustrer.
Mille merci pour votre aide.
Bonjour MarieG
Qu'entends-tu exactement par :
J'ai remarqué qu'avec cette nouvelle, les cellules ont du mal à se mettre à jour.
As-tu moyen de nous donner ton dernier fichier utilisé (anonymisé) ?
A+
Re,
Je n'ai pas tout compris dans tes questions, j'ai essayé de faire au mieux
A+
Voilà, désolée
Re,
Je n'ai pas tout compris dans tes questions, j'ai essayé de faire au mieux
A+
Bonjour BrunoM45,
J'espère que vous allez bien.
J'avais émis l'idée de faire transformer la fonction en une fonction qui parcourir les feuilles (mois), donc avoir un calcul cumulé.
Dans le classeur, seules les feuilles mois auront une couleur 37, donc on peut boucler selon ce critère. Je me permet
Ci-après le code et le fichier.
Pensez-vous que cette fonction sois performante ou ?
Merci pour votre aide.
Function Total_Heures_Productives_Cumulees(Dossier As String)
Dim ws As Worksheet
Dim Feuille As Worksheet
Dim Ligne As Long
Dim Colonne As Long
Dim DuréeTache As Double
Dim NbreTaches As Integer
Dim NbHeures As Double
Dim TotalHeures As Double
Application.Volatile
For Each Feuille In Worksheets
If Feuille.Tab.ColorIndex = 37 Then
'Set Feuille = Sheets(Feuille_Mois)
NbreDeJourMois = Feuille.Range("C1").Value
Colonne = NbreDeJourMois + 7
'MsgBox Colonne
' Pour chaque ligne
For Ligne = Feuille.Range("D" & Rows.Count).End(xlUp).Row To 9 Step -1
If Feuille.Range("D" & Ligne).Value = Dossier Then
' Initialiser les valeurs
NbreTaches = 0: DuréeTache = 0
' Comptabiliser le nombre d'absences
Autres = Application.WorksheetFunction.CountIf(Feuille.Range(Feuille.Range("H" & Ligne), Feuille.Cells(Ligne, Colonne)), "*Cong*") + _
Application.WorksheetFunction.CountIf(Feuille.Range(Feuille.Range("H" & Ligne), Feuille.Cells(Ligne, Colonne)), "*Mal*") + _
Application.WorksheetFunction.CountIf(Feuille.Range(Feuille.Range("H" & Ligne), Feuille.Cells(Ligne, Colonne)), "*Abs*")
' Durée de la tâche en centième
DuréeTache = (Feuille.Range("G" & Ligne).Value - Feuille.Range("F" & Ligne).Value) * 24
' Comptabiliser le nombre de tâche de producion
NbreTaches = Application.WorksheetFunction.CountA(Feuille.Range(Feuille.Range("H" & Ligne), Feuille.Cells(Ligne, Colonne))) - Autres
' Calculer le nombre d'heures pour la ligne
NbHeures = NbreTaches * DuréeTache
' Totaliser le nombre d'heures
TotalHeures = TotalHeures + NbHeures
End If
Next Ligne
End If
Next Feuille
' Retourner la valeur à la fonction
Total_Heures_Productives_Cumulees = TotalHeures
'Set Feuille = Nothing
End Function
Désolée, je n'avais pas vu votre message. Apparemment vous avez ouvert l'autre fichier sans le mot de passe.
Comment avez-vous fait?
Sinon à quoi était dû l'erreur 400 ?
Re,
Je n'ai pas tout compris dans tes questions, j'ai essayé de faire au mieux
A+