Itération hors module

Bonjour,

Etant débutant, je suis sur que la solution est simple mais j'ai beau chercher je ne la trouve pas.

Pourriez vous m'expliquer comment récupérer une valeur d'itération d'un boucle for hors module, sans quelle ne soit égale a sa dernière valeur. Je ne sais pas si je m'exprime correctement...

Un petit exemple

Dans le module 1

Public lavaleur As Integer

Function toto()

for i = 1 to 5

lavaleur = i

Next

End function

Dans le module 2

sub tutu()

toto

msgbox lavaleur

end sub

Chez moi, lavaleur reste bloquée à 5 et ne s'incrémente pas...et je sais pourquoi,

mais je ne trouve pas la solution pour palier au problème..

Auriez vous une explication SVP

D'avance merci

Matt

Bonsoir, tutu lance toto qui affecte à lavaleur 1 puis 2... puis 5, puis tutu affiche lavaleur, donc 5. Tu peux afficher chaque valeur de i en plaçant msgbox au cours de la boucle.

Function toto()
for i = 1 to 5
   lavaleur = i
   MsgBox i
Next
End function
oyobrans a écrit :

Bonsoir, tutu lance toto qui affecte à lavaleur 1 puis 2... puis 5, puis tutu affiche lavaleur, donc 5. Tu peux afficher chaque valeur de i en plaçant msgbox au cours de la boucle.

Function toto()
for i = 1 to 5
   lavaleur = i
   MsgBox i
Next
End function

Merci pour ta réponse, mais le problème est que j'ai besoin d'incrémenter lavaleur dans tutu() ^^'.

La MsgBox n'est là qu'a titre d'expemple

Bonsoir,

1) C'est normal : Ta proc. Tutu exécute la proc. Toto laquelle affecte une valeur à ta variable, que Tutu affiche.

2) Malgré l'instruction Function, Toto n'en est pas spécialement une, n'étant pas conçue pour renvoyer une valeur, et d'ailleurs tu l'utilises comme proc. Sub (ce qui serait par ailleurs faisable même si c'était une vraie fonction, à l'instar de MsgBox qui est une fonction).

3) Ton exemple ne justifie pas l'utilisation de plusieurs modules...

4) Explique mieux ce que tu veux obtenir exactement, et joins un fichier modèle qui permettra de te répondre sans avoir à en fabriquer un (ce que pour ma part je m'interdis !)

5) Si tu souhaitais faire un incrémenteur dont tu puisses constater la valeur prise à chaque incrément, la boucle dans Toto n'est pas la bonne solution, il faut qu'elle se contente d'ajouter 1 (ou l'incrément choisi) à la variable à chaque appel. Et c'est dans Tutu que tu peux mettre une boucle où à chaque tour tu peux appeler Toto et afficher la nouvelle valeur de la variable.

Cordialement.

Par soucis d'organisation, je souhaitais ranger dans un modules les enregistrements de bases de données dans des tableaux.

Exemple avec un tableau :

Module 1 : (contient plusieurs tableaux)

Public semaine As Integer

Function lecture_exemple()

derligne= Sheets("data").Range("I65000").End(xlUp).Row

            Dim tab_exemple()
            ReDim tab_exemple(derligne_equipes, 7)
            For i = 3 To derligne_equipes

            (....)
            semaine = Sheets("data").Range("K" & i)
            (....)

            tab_exemple(i, ...)
            tab_exemple(i, 2) = [b]semaine[/b]
            tab_exemple(i, ...)
            Next

End Function

Dans le module 2 je viens lire les tableaux pour colorer des cellules en fonction du numéro de la semaine est des conditions remplies (ou non). Sauf que la variable semaine est bloquée sur la dernière valeur du tableau.

une partie du code :

Module 2 :

For i = 1 To nbJours
iDate = DateSerial(Year(Now), numMois(mois), i - 1)

With Cells(2, i + 2)
.Interior.Color = RGB(230, 240, 250)
.Value = Format(iDate + 1, "ddd" & Chr(10) & "d")
End With

        For j = 0 To derligne_plan
        lecture_exemple
        eSemaine = DatePart("ww", DateSerial(Year(Now), numMois(mois), i), vbSunday, vbFirstFullWeek)

        If semaine = eSemaine Then
            If condi = True Then
            Sheets("plan").Cells(3, i + 3).Interior.Color = RGB(100, 110, 255)
            End If
            If nexth = True Then
            Sheets("plan").Cells(4, i + 3).Interior.Color = RGB(255, 110, 180)
            End If
        End If
        Next

Next

J'édite et je joins un modèle simplifié.

Cordialement

4exemple.xlsm (32.75 Ko)
Rechercher des sujets similaires à "iteration hors module"