Décliner une variable dans une boucle

Bonjour à tous,

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 boucleFichier en exemple.
21forum-dico.xlsm (40.86 Ko)

Faire cli droit

sélectionner juillet, puis FITROI pour avoir le bug

Merci

bonjour,

j'ai du mal à comprendre la logique de ce que tu essaies de faire.

D'un point de vue programmation en VBA (sans comprendre ce que tu essaies de faire), on ne modifie pas les variables de gestion d'une boucle for (ici tu modifies n et m et la valeur de m dépasse le nombre de valeurs dans ton tableau, d'où l'erreur VBA). Ces variables sont incrémentées automatiquement lors de l'instruction next. Donc pour moi il y a une erreur de conception à ce niveau-là, pour la correction peux-tu expliquer ce que tu cherches à faire dans ce bout de code ?

    list1 = Array("jpr2", "jpr3", "jpr4", "jpr5")
    list2 = Array("jo2", "jo3", "jo4", "jo5")
    m = 0
    n = 0
    For i = deb + 1 To fin - 1
        For m = 0 To UBound(list1)
        For n = 0 To UBound(list2)
            'si jour de début période2 <> fin période1 + 1
            If Day(tb4.DataBodyRange(i + k, 5).Value) + 1 <> tb4.DataBodyRange(i + k - 1, 4).Value Then
                 jrD = Day(tb4.DataBodyRange(i + k - 1, 5).Value)
                 jrF = Day(tb4.DataBodyRange(i + k, 4).Value)
        MsgBox jrD & " " & jrF
                list1(m) = jrF - jrD - 1
                'recherche jrs we
                we = 0
                For j = 0 To jpr2
                    If Weekday(CDate(tb4.DataBodyRange(i + k - 1, 4).Value) + j) = 7 Or _
                       Weekday(CDate(tb4.DataBodyRange(i + k - 1, 4).Value) + j) = 1 Then
                        we = we + 1
                    End If
                Next j
                k = k + 1
                'jous ouvrables 2eme période
                list2(n) = dict1(list1(n)) - we
                m = m + 1
                n = n + 1
            End If
            Next n
            Next m
        Next i

Bonjour H2so4,

Merci pour ta réponse.

on ne modifie pas les variables de gestion d'une boucle for

Ok. Mon probléme est le nombre de valeurs dans l'array, qui correspond au nombre de mois.

Comment paramétrer la taille de l'array, en fonction du nbre de mois, ici fin - deb

J'ai vu qu'en tableaux, c'est pas possible que la taille soit variable.

Merci

Bonjour Fronck, Frunch.....

Bienvenue, sous une nouvelle identité...

Bon courage

Bonjour,

A cousinhub,

Oh béh là c'est sûr plus grand monde va me répondre.

Mais j'ai trouvé la solution en simplifiant, avec les jours ouvrables pour chaque absence.

8

Bonne chance.

Oh béh là c'est sûr plus grand monde va me répondre.

c'est normal, t'es un voleur ...

Rechercher des sujets similaires à "decliner variable boucle"