Bonjour,

J'ai dans 2 userform un multipage dont les textbox, lisbox, label,.... ont le même nom pour simplifier mon programme.
J'ai créé une sub qui permet de remplir ces éléments.
Cette sub a pour paramétres nom et prenom car il faut chercher la bonne ligne dans une feuille nommé "listagent"
Le dernier paramètre est le nom de la sub à modifier

ma sub à ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Sub cyclemodif(nom As String, pre As String, feuille As String)
 
Dim FEUIL As UserForm
Set FEUIL = feuille
For z = 5 To 102
 
    If nom = Sheets("listagent").Range("b" & z).Value And pre = Sheets("listagent").Range("c" & z).Value Then
 
        x = 5
 
        For y = 1 To 4 'boucle pour passer les 4 semaines
 
            v = 1
            FEUIL.Controls("nomagsem" & y).Caption = nom & " " & pre    'remplir le nom des agents
 
            For w = 1 To 7 'boucle pour passer tous les jours d'1 semaine
 
                FEUIL.Controls("s" & y & "_j" & w & "_hdeb").Value = Format(Sheets("listagent").Cells(z, x + v).Value, "hh:mm")
                v = v + 1
                FEUIL.Controls("s" & y & "_j" & w & "_hfin").Value = Format(Sheets("listagent").Cells(z, x + v).Value, "hh:mm")
                v = v + 1
                FEUIL.Controls("s" & y & "_j" & w & "_pdeb").Value = Format(Sheets("listagent").Cells(z, x + v).Value, "hh:mm")
                v = v + 1
                FEUIL.Controls("s" & y & "_j" & w & "_pfin").Value = Format(Sheets("listagent").Cells(z, x + v).Value, "hh:mm")
                v = v + 1
 
            Next w
 
            'remplir la page cycle
            FEUIL.nomagsem5.Caption = nom & " " & pre
            num = Sheets("listagent").Range("d" & z).Value
            FEUIL.cyc_nbrcyc.Value = num
            For w = 1 To 8 'masque les cellules semaine non utilisé
                If FEUIL.cyc_nbrcyc.Value < w Then
                    FEUIL.Controls("cyc_s" & w).Visible = False
                    FEUIL.Controls("cyclab_s" & w).Visible = False
                End If
            Next w
            For w = 1 To num
                FEUIL.cyc_s1.Value = Sheets("listagent").Cells(z, w + 117).Value
            Next w
 
            x = x + 28 'saute d'1 semaine sur la feuille
 
        Next y
        Exit For
    End If
Next z
 
End Sub
J'ai essayé plusieurs solutions comme définir feuille en userform, ou objet, ou worksheet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Sub cyclemodif(nom As String, pre As String, feuil As userform)
J'ai utilisé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
VBA.UserForms.Add(sVariable).
sans succés.
J'ai des messages d'erreurs ou les cellules ne se remplissent pas !!!!!
Il me semble l'avoir déjà fait mais je ne retrouve rien dans mes projets précédents.

merci pour votre aide