Stocker la variable calculée dans une boucle

Bonjour à tous,

J’ai des absences de salariés par mois, et je dois déterminer les jours de présence qu’avec les absences.
Mon probléme est de stocker les variables à chaque tour de boucle avec jpr(m)

 list1 = Array("jpr2", "jpr3", "jpr4", "jpr5")
        For m = 0 To UBound(list1)
 jpr(m) = (Day(tb4.DataBodyRange(i + k, 4).Value)) - Day(tb4.DataBodyRange(i + k - 1, 5).Value) - 1
        next m

Voila le fichier pour voir le problème concrètement:
forum.xlsm (37,2 Ko)
Faire clic-droit
Sélectionner juillet, puis FITROI

Merci de votre aide

voir feuille « Blad1 », le nombre des jours sont assez facile à calculer avec la fonction WorksheetFunction.NetworkDays_Intl",voir fonction personalisée « f_CompterJours »
forum (5).xlsm (40,1 Ko)

Merci mais mais sans explications de la fonction dans le code, çà me parait difficile.
Votre ligne de 11 et 12 jours d’absences concerne quelle ligne de mon tableau ?
Mon cas concerne les jours de présence entre des absences, je rappelle.

Juin '25 pour FITROI, ligne 14, juin = 30 jours dont 9 samedis et dimanches et 21 jours ouvrables = pour tout le monde… De ces 21 jours ouvrables, FITROI est 12 jours absent et 9 jours présent. La calculation utilise le tableau entier, donc s’il y a plusieurs périodes et/ou types même en cheveauchement.
un moment
G23:G26 = calculations générales pour 07/2025 avec =NB.JOURS.OUVRES.INTL Fonction NB.JOURS.OUVRES.INTL - Support Microsoft
G29:G33 = ces mêmes calculations pour Fronck en 07/2025 avec la fonction personalisée f_CompterJours. Elle peut encore s’adapter à vos besoins et elle compte chaque jour 1 fois même avec des cheveauchements.
forum (5).xlsm (42,5 Ko)

Si ce n’est pas cela que vous voulez, c’est quoi que vous voulez calculer ?

Je vais faire une colonne de jours ouvrables (Et sans les jours fériés) comme çà.

donc,votre problème est résolu ? (avec NB.JOURS.OUVRES.INTL?)

En Vba ok ?
En Vba ok ?
En Vba ok ?

c’est avec les images du poste 5 ?
Avez-vous cela dans un fichier, eventuellement avec les jours fériés dans une liste/un tableau ?

Tu trouveras les jours fériés dans presque tous les fichiers de mon site xlapplis https://xlapplis.webnode.fr/
Mais le code n’est pas accessible, je suis auto-entrepreneur moi, plus bénévole.

si vous avez une question, il faut me donner tout ce qu’il est nécessaire, je n’ai pas l’intention de les récupérer de votre site. Moi, je suis bénévole.
Donc maintenant, c’est quoi la question et un tout petit fichier anonymisé avec les données.
Sinon, ça s’arrête ici.

Hello Bart,
Bah, rien ne t’empêche d’acheter ses « produits », issus de demandes d’aides aux bénévoles, à son profit…
En plus, tu rigolerais…
Bon courage

1 « J'aime »

Désolé mais tu ne réponds pas à ma question.
Dans une boucle sur des dates, je dois déterminer des durées de présence selon des absences.
Comme je fais la modification et l’ajout dans la même macro, je ne vois pas d’autre solution que de prendre une variable avant l’ajout ou la modif, et de lui donner un nom + un chiffre différent à chaque ligne ou tour de boucle s’il y a plusieurs mois d’absence.
J’ai besoin de décliner une variable 1 2…x dans une boucle
Cdt

Bonjours
Une variable ne peux être déclinée dans une boucle seules sa donnée peux être enrichie
Donc definir une variable à chaque tour de boucle est impossible
Il faut travailler sur sa donnée de manière structurée en l’enrichissant de chaque valeur exemple pour une variable « listedurėes » :

Premier tour valeur 10 listedurėes = « /10/ »
Deuxième tour valeur 20 listedurėes = « /10/20/ »
Troisième tour valeur 30 listedurėes = « /10/20/30/ »
Quatrième tour valeur 40 listedurėes =« /10/20/30/40/ »
Ainsi de suite

Reste à exploiter cette variable après la boucle avec une ligne de code appropriée pour cibler la valeur à récupérer dans celle-ci ce qui ne présente aucune difficulté
A toi de voir sinon possibilité de mettre toutes ces valeurs au lieu d’une variable dans une cellule d’un onglet propre à chacune pour les récupèrer dans le traitement
Voilà comment je traiterai ton besoin

1 « J'aime »

Merci pour ta réponse.
J’ai trouvé comment lire ou écrire une liste de variables
Sub test()

Dim list1 As Variant, m%
list1 = Array("jpr2", "jpr3", "jpr4", "jpr5")
    For m = 0 To UBound(list1)        
       'Pour lire
        MsgBox list1(m)
       'Pour écrire
       list1(m) = "jpr"
    Next m
End Sub

Mais c’est pour le nombre de lignes, variable de1 à x.
Avant le lancement, çà correspond au nombre de mois, mais je sais pas comment faire, c’est pas avec Redim ?

Attention ce n’est pas une liste de variable
Tu obtiens seulement dans la boucle une partie de la donnée de la variable list1 et non une nouvelle variable
As tu considéré ma solution qui au lieu d’une liste de variable qui porterait chaque nombre de jours de présence d’intégrer tous ceux-ci dans une seule et même variable de manière structurėe afin de les récupèrer en les ciblant une à une ?

Tu me parles chinois, mets le code stp.
Merci

La variable listedurėes portera ainsi toutes les valeurs de la formule de calcul générées par la variable jpr de toutes les boucles chacune séparée par le symbol « / »

Pour les récupèrer de cette variable ainsi structurée cette ligne de code :

durée1 =Split(listedurėes,"/")(1)

durée2 =Split(listedurėes,"/")(2)

durée3 =Split(listedurėes,"/")(3)

durée4 =Split(listedurėes,"/")(4)

Etc…

Pas plus difficile

1 « J'aime »

Le nombre de durées dans listedurėes est etablit par ta boucle
Si liste1 a 6 données de jpr1 à jpr6
Il y aura 6 boucles donc 6 durées dans listedurėes
Si liste1 a 2 données de jpr1 à jpr2
Il y aura 2 boucles donc 2 durées dans listedurėes
C’est automatique aucun soucis le contenu de listedurėes s’adaptera à celui de liste1

Trés bien, mais aprés la boucle je dois prendre la période concernée pour trouver les week-ends, et si elles sont pas numérotées çà me parait difficile. Voir le code du fichier.
forum1.xlsm (40,4 Ko)

Tu comptais faire comment avec une liste de variable que tu souhaitais mettre en place ?
Les durées sont dans la variable listedurėes dans le même ordre que les données de la variable liste1
Si tu mets celle-ci dans un ordre précis c’est ce même ordre a utiliser dans la variable listedurėes pour obtenir leur équivalent durée