Porté d'une variable

Bonjour,

SVP, j'ai un probleme avec les variables.

For LigP = 4 To DerLig

                Select Case .Range("G" & LigP).Value

                    Case "Janvier"
                        DebJanvier = LigP
                        MsgBox (DebJanvier)

DebJanvier me retourne la valeur de LigP entre le select et le end select.

mais si je l'appele en dehors de select end select j'ai une valeur 0.

comment je peux faire pour la rendre visible partout?

Merci bcp

Bonsoir,

Une macro commence par Sub NomMacro() et se termine par End Sub

De plus la portée d'une variable est souvent étroitement dépendante des modules du classeur... Inutile d'espérer un réponse argumentée avec 3 lignes de code extraites d'on ne sait ou !

Cependant, pour le peu qu'on en voit, LigP est la variable de contrôle de ta boucle For... on peut donc normalement voir sa valeur s'incrémenter jusqu'à Next

En dehors de cette boucle on peut raisonnablement penser que sa valeur est 0 avant le For (mais ce n'est pas obligatoire : ça dépend de la macro...) ; après le Next sa valeur est égale à DerLig sauf si elle est réutilisée dans le code...

A+

sans titre

Et j'ai encore répondu à coté de la question, mais ce n'est pas étonnant : avec une bribe de code on à forcément une vue partielle...

Il semble donc plutôt que c'est DebJanvier qui t'intéresse....

Tu peux donc la rendre visible de partout en déclarant :

Dim DebJanvier avant toute macro dans un module Standart (Module1).

...Mais cette construction ne me semble pas fameuse. (pour ne pas dire franchement mauvaise !)

A+

Bonjour,

oui t'as raison voila tout le code:

Sub planningOctobre(iIndexMois As Long)
'-----------------------------------------------------------------------------------------
'                                Déclarations
'-----------------------------------------------------------------------------------------
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim FileItem As Scripting.File

Dim Nchaine As String, Ndebut As String, Nfin As String
Dim Mchaine As String, Mdebut As String, f1mois As String
Dim name As String, namechemin As String
Dim Repertoire As String
Dim fPnom As String, fPnom1 As String, f1nom As String
Dim valListe As Double, valAbs As Double
Dim valListe1 As Double, valAbs1 As Double

Dim DerLig As Long, LigP As Long
Dim DerLig1 As Long, Lig1 As Long
'Dim DebJanvier As Long, DebFevrier As Long
Dim LigBo As Long, DerCel As Long, DerCel1 As Long
Dim listeRH As Worksheet
'-----------------------------------------------------------------------------------------
'                                 Traitements
'-----------------------------------------------------------------------------------------
Repertoire = Worksheets("Plannings Absences").Range("AP" & 518).Value

Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Repertoire)
Set listeRH = Sheets("Liste des ressources & Activité")

'Boucle sur tous les fichiers du répertoire
    For Each FileItem In SourceFolder.Files
    name = FileItem.name
    namechemin = Repertoire & FileItem.name

        'fnom renvoie le nom extrait du nom de fichier
        Nchaine = FileItem.name
        Ndebut = InStr(1, Nchaine, " ", vbTextCompare) + 1
        Nfin = InStr(1, Nchaine, "_", vbTextCompare)
        f1nom = Mid(Nchaine, Ndebut, Nfin - Ndebut)

        'fmois renvoie le mois extrait du nom du fichier
        Mchaine = FileItem.name
        Mdebut = Right(Mchaine, 9)
        f1mois = Mid(Mdebut, 1, 2)

        'récupération de l'indice du mois
        mois = Format(DateSerial(1, Val(iIndexMois), 1), "mmmm")

        'DerLig = Sheets("Plannings Absences").Range("A" & Rows.Count).End(xlUp).Row
        'MsgBox (DerLig)

        With Sheets("Plannings Absences")

            For LigP = 4 To DerLig

            Select Case .Range("G" & LigP).Value

                Case "Janvier"
                    DebJanvier = LigP

                Case "Février"
                    DebFevrier = LigP

                Case "Mars"
                    DebMars = LigP

                Case "Avril"
                    DebAvril = LigP

                Case "Mai"
                    DebMai = LigP

                Case "Juin"
                    DebJuin = LigP

                Case "Juillet"
                    DebJuillet = LigP

                Case "Aout"
                    DebAout = LigP

                Case "Septembre"
                    DebSeptembre = LigP

                Case "Octobre"
                    DebOctobre = LigP

                Case "Novembre"
                    DebNovembre = LigP

                Case "Décembre"
                    DebDecembre = LigP

                Case Else

            End Select

            Next LigP
        MsgBox (DebJanvier & " " & DebFevrier)

        End With

ce que je veux c que la valeur des DebMois soit garder, car j'en ai besoin pour mon traitement apres.

hy

Bonjour,

Pour garder la portée de ta variable, en supposant que ta macro "Sub planning" est dans un module mets "Public DebMois as .... "juste avant Sub planningOctobre(iIndexMois As Long)

Amicalement

Dan

bog bog2
Rechercher des sujets similaires à "porte variable"