IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Soustraction et addition de dates dans un 2e userform [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur RH
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur RH

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut Soustraction et addition de dates dans un 2e userform
    Bonjour à tous,

    je suis en train de construire un outil pour faire des plannings. J'ai déjà été bien conseillé par un membre du site pour faire les soustractions et additions ds un userform -> "Lundi = FinMatin - DebMatin + FinAprem - DebAprem + formation" et cela pour tous les jours de la semaine
    Un dernier textbox fait le total des jours de la semaine

    Le code du 1er userform (User) est d'ailleurs parfait et j'essaye depuis des jours de le reproduire pour un autre userform (userform2) dans un lequel, il ne faudra faire que des soustractions pour les jours de la semaine -> Lundi = FinMatin - DebAprem" et cela pour tous les jours de la semaine
    Un dernier textbox fait le total des jours de la semaine.

    Il y aura dans cet userform 21 textbox (7 pour le total jrs semaine + 7 DebMatin + 7 FinAprem) et le 22e pour le total de la semaine.

    Je vous donne les lignes de code du premier userform (User) qui fait les soustractions et additions avec un total jour et hebdo.

    Dans Projet VBA/Feuilles/User

    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
    Option Explicit
    Dim txt(1 To 42) As New classe1, I As Byte
     
    <hr />
     
    Private Sub UserForm_Initialize()
     
        For I = 1 To 42
     
            Set txt(I).GroupeTxt = Controls("T" & I)
     
        Next I
        End Sub
     
    <hr />
     
    Private Sub User_Initialize()
     
    For I = 1 To 5: Set txt(I).txt = Controls("T" & I): Next I
     
    End Sub

    Dans le module de classe 1
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Option Explicit
    Public WithEvents GroupeTxt As MSForms.TextBox
     <hr />
    Private Sub GroupeTxt_Change()
     
        Dim DebMatin As Date
        Dim FinMatin As Date
        Dim DebAprem As Date
        Dim FinAprem As Date
        Dim Lundi As Date
        Dim Mardi As Date
        Dim Mercredi As Date
        Dim Jeudi As Date
        Dim Vendredi As Date
        Dim Samedi As Date
        Dim Dimanche As Date
        Dim Formation As Date
        Dim Total As Double
        Dim Total_formation As Double
        Dim I As Integer
     
        For I = 6 To 42 Step 6
     
            'si la longueur du texte est égale à 5 pour tous
            If Len(user.Controls("T" & I - 5).Value) = 5 _
                And Len(user.Controls("T" & I - 4).Value) = 5 _
                And Len(user.Controls("T" & I - 3).Value) = 5 _
                And Len(user.Controls("T" & I - 2).Value) = 5 _
                And Len(user.Controls("T" & I - 1).Value) = 5 Then
     
                'converti en date
                DebMatin = CDate(user.Controls("T" & I - 5).Value)
                FinMatin = CDate(user.Controls("T" & I - 4).Value)
                DebAprem = CDate(user.Controls("T" & I - 3).Value)
                FinAprem = CDate(user.Controls("T" & I - 2).Value)
                Formation = CDate(user.Controls("T" & I - 1).Value)
     
                'totalise en convertissant en double
                Total = CDbl(FinMatin - DebMatin + FinAprem - DebAprem) + CDbl(Formation)
     
                'affiche au format heures : minutes
                user.Controls("T" & I).Value = Application.WorksheetFunction.Text(Total, "hh:mm")
     
            End If
     
        Next I
     
        On Error Resume Next 'permet de totaliser ligne par ligne
     
        'idem, conversion en date
        Lundi = CDate(user.T6.Value)
        Mardi = CDate(user.T12.Value)
        Mercredi = CDate(user.T18.Value)
        Jeudi = CDate(user.T24.Value)
        Vendredi = CDate(user.T30.Value)
        Samedi = CDate(user.T36.Value)
        Dimanche = CDate(user.T42.Value)
     
     
        'puis en double
        Total = CDbl(Lundi + Mardi + Mercredi + Jeudi + Vendredi + Samedi + Dimanche)
        Total_formation = CDate(user.T5.Value) + CDate(user.T11.Value) + CDate(user.T17.Value) + CDate(user.T23.Value) + 
        CDate(user.T29.Value) + CDate(user.T35.Value) + CDate(user.T41.Value)
     
        'au format heures : minutes au delà de 24 h
        user.T43.Value = Application.WorksheetFunction.Text(Total, "[hh]:mm")
        user.T44.Value = Application.WorksheetFunction.Text(Total_formation, "[hh]:mm")
     
     
     End Sub
    <hr />
     Private Sub GroupeTxt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
     
    End Sub
     
     <hr />
    Private Sub GroupeTxt_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
        If KeyCode <> 8 Then 'suppression !
     
            If Len(GroupeTxt) = 2 Then GroupeTxt = GroupeTxt & ":"
            If Len(GroupeTxt) > 5 Then GroupeTxt = Left(GroupeTxt, 5)
     
        End If
     
    End Sub

    Puis dans le module 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ouverture()
    user.Show 0
    End Sub
    C'est ballot mais je bloque avec les "Private Sub UserForm_Initialize()" pour nommer l'userform2 dans le module 1 et les valeurs des variables (I dans le 1er userform etc..).
    J'ai fais des tas d'essais avec la création d'un second module de classe et en renommant les variables I mais là, je suis arrivé au bout du bout...
    J'aurais donc besoin de vos lumières, n'hésitez pas à me dire si un fichier joint serait plus utile...

    Je vous remercie par avance pour vos conseils.

    Danny

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Tu peux créer un second groupe dans ton module de classe qui concernera l'UserForm2 :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    Public WithEvents GroupeTxt As MSForms.TextBox
    Public WithEvents GroupeTxt2 As MSForms.TextBox
     
    Private Sub GroupeTxt2_Change() 'Appelé par l'UserForm2 ..!
     
        'ici ton code concernant l'UserForm2...
        'probablement adapté de "GroupeTxt_Change" ci-dessous ?
     
    End Sub
     
    Private Sub GroupeTxt2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Appelé par l'UserForm2 ..!
     
        If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
     
    End Sub
     
    Private Sub GroupeTxt2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 'Appelé par l'UserForm2 ..!
     
        If KeyCode <> 8 Then 'suppression !
     
            If Len(GroupeTxt) = 2 Then GroupeTxt = GroupeTxt & ":"
            If Len(GroupeTxt) > 5 Then GroupeTxt = Left(GroupeTxt, 5)
     
        End If
     
    End Sub
     
    Private Sub GroupeTxt_Change()
     
        Dim DebMatin As Date
        Dim FinMatin As Date
        Dim DebAprem As Date
        Dim FinAprem As Date
        Dim Lundi As Date
        Dim Mardi As Date
        Dim Mercredi As Date
        Dim Jeudi As Date
        Dim Vendredi As Date
        Dim Samedi As Date
        Dim Dimanche As Date
        Dim Total As Double
        Dim I As Integer
     
        For I = 5 To 35 Step 5
     
            'si la longueur du texte est égale à 5 pour tous
            If Len(user.Controls("T" & I - 4).Value) = 5 _
                And Len(user.Controls("T" & I - 3).Value) = 5 _
                And Len(user.Controls("T" & I - 2).Value) = 5 _
                And Len(user.Controls("T" & I - 1).Value) = 5 Then
     
                'converti en date
                DebMatin = CDate(user.Controls("T" & I - 4).Value)
                FinMatin = CDate(user.Controls("T" & I - 3).Value)
                DebAprem = CDate(user.Controls("T" & I - 2).Value)
                FinAprem = CDate(user.Controls("T" & I - 1).Value)
     
                'totalise en convertissant en double
                Total = CDbl(FinMatin - DebMatin + FinAprem - DebAprem)
     
                'affiche au format heures : minutes
                user.Controls("T" & I).Value = Application.WorksheetFunction.Text(Total, "hh:mm")
     
            End If
     
        Next I
     
        On Error Resume Next 'permet de totaliser ligne par ligne
     
        'idem, conversion en date
        Lundi = CDate(user.T5.Value)
        Mardi = CDate(user.T10.Value)
        Mercredi = CDate(user.T15.Value)
        Jeudi = CDate(user.T20.Value)
        Vendredi = CDate(user.T25.Value)
        Samedi = CDate(user.T30.Value)
        Dimanche = CDate(user.T35.Value)
     
        'puis en double
        Total = CDbl(Lundi + Mardi + Mercredi + Jeudi + Vendredi + Samedi + Dimanche)
     
        'au format heures : minutes au delà de 24 h
        user.TextBox40.Value = Application.WorksheetFunction.Text(Total, "[h]:mm")
     
     
     End Sub
     
    Private Sub GroupeTxt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
     
    End Sub
     
     
    Private Sub GroupeTxt_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
        If KeyCode <> 8 Then 'suppression !
     
            If Len(GroupeTxt) = 2 Then GroupeTxt = GroupeTxt & ":"
            If Len(GroupeTxt) > 5 Then GroupeTxt = Left(GroupeTxt, 5)
     
        End If
     
    End Sub
    Et dans le module de L'userForm2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim txt(1 To 21) As New classe1, I As Byte
     
    Private Sub UserForm_Initialize()
     
        For I = 1 To 35
     
            Set txt(I).GroupeTxt2 = Controls("T" & I)
     
        Next I
     
    End Sub
    Normalement, le code d'un module de classe doit être encapsulé, il n'appelle aucun objet ou variable qui se trouve hors du module mais ici c'est plus simple ;-)

  3. #3
    Membre averti
    Homme Profil pro
    Directeur RH
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur RH

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut
    Bonjour Theze,

    je te remercie encore pour ton retour, c'est vraiment sympa de m'accorder ce temps et ce travail. Ton regard et tes commentaires sont très pédagogiques et me permettent de comprendre la logique et j'en étais pas très loin

    J'ai adapté ton code du module de classe de l'userform2 car en fait, ce dernier n'est pas adapté de textboxs de l'user (le 1er userform).

    Dans l'userform2, ce sont d'autres données (des temps de formation) qui viennent ensuite s'afficher dans un troisième userform (qui est juste un affichage du résultat des calcul de l'userform2), il oblige en définitive l'utilisateur à respecter la chronologie de construction des plannings.

    Je viens ensuite incrémenter les résultats des tps/jour de formations de ce 3e userform dans la colonne formation du premier userform (appelé user). J'ai en fait modifié le premier code que tu avais envoyé la 1ere fois pour rajouter une colonne formation qui reçoit les données de l'userform2

    j'ai vu ton dernier commentaire pour appeler l'userform2 mais les modifs que j'ai apportées ne permettent peut être pas d'appeler l'userform2.

    Je te donne le code complet avec les modifs apportées. Je te précise aussi l'erreur que cela affiche.
    Si tu peux bien sur, me conseiller sur cette erreur, je t'en remercie d'avance.

    Dans le module de classe
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    Public WithEvents GroupeTxt As MSForms.TextBox
    Public WithEvents GroupeTxt2 As MSForms.TextBox
     
    Private Sub GroupeTxt2_Change() 'Appelé par l'UserForm2 ..!
        Dim DebMatinf As Date
        Dim FinApremf As Date
        Dim Lundif As Date
        Dim Mardif As Date
        Dim Mercredif As Date
        Dim Jeudif As Date
        Dim Vendredif As Date
        Dim Samedif As Date
        Dim Dimanchef As Date
        Dim Totalf As Double
        Dim J As Integer
     
        For J = 3 To 21 Step 3
     
            'si la longueur du texte est égale à 5 pour tous
            If Len(UserForm2.Controls("T" & J - 4).Value) = 5 _
                And Len(UserForm2.Controls("T" & J - 3).Value) = 5 _
                And Len(UserForm2.Controls("T" & J - 2).Value) = 5 _
                And Len(UserForm2.Controls("T" & J - 1).Value) = 5 Then
     
     
                'converti en date
                DebMatinf = CDate(UserForm2.Controls("T" & J - 2).Value)
                FinApremf = CDate(UserForm2.Controls("T" & J - 1).Value)
     
                'totalise en convertissant en double
                Totalf = CDbl(FinApremf - DebMatinf)
     
                'affiche au format heures : minutes
                UserForm2.Controls("T" & J).Value = Application.WorksheetFunction.Text(Total, "hh:mm")
     
            End If
     
        Next J
     
        On Error Resume Next 'permet de totaliser ligne par ligne
     
        'idem, conversion en date
        Lundif = CDate(UserForm2.T100.Value)
        Mardif = CDate(UserForm2.T101.Value)
        Mercredif = CDate(UserForm2.T102.Value)
        Jeudif = CDate(UserForm2.T103.Value)
        Vendredif = CDate(UserForm2.T104.Value)
        Samedif = CDate(UserForm2.T105.Value)
        Dimanchef = CDate(UserForm2.T106.Value)
     
     
        'puis en double
        Totalf = CDbl(Lundif + Mardif + Mercredif + Jeudif + Vendredif + Samedif + Dimanchef)
     
        'au format heures : minutes au delà de 24 h
        UserForm2.T107.Value = Application.WorksheetFunction.Text(Total, "[hh]:mm")
     
    End Sub
    Private Sub GroupeTxt2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Appelé par l'UserForm2 ..!
     
        If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
     
    End Sub
     
    Private Sub GroupeTxt2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 'Appelé par l'UserForm2 ..!
     
        If KeyCode <> 8 Then 'suppression !
     
            If Len(GroupeTxt2) = 2 Then GroupeTxt2 = GroupeTxt2 & ":"
            If Len(GroupeTxt2) > 5 Then GroupeTxt2 = Left(GroupeTxt2, 5)
     
        End If
     
    End Sub
     
    Private Sub GroupeTxt_Change()
     
        Dim DebMatin As Date
        Dim FinMatin As Date
        Dim DebAprem As Date
        Dim FinAprem As Date
        Dim Lundi As Date
        Dim Mardi As Date
        Dim Mercredi As Date
        Dim Jeudi As Date
        Dim Vendredi As Date
        Dim Samedi As Date
        Dim Dimanche As Date
        Dim Formation As Date
        Dim Total As Double
        Dim Total_formation As Double
        Dim I As Integer
     
        For I = 6 To 42 Step 6
     
            'si la longueur du texte est égale à 5 pour tous
            If Len(user.Controls("T" & I - 5).Value) = 5 _
                And Len(user.Controls("T" & I - 4).Value) = 5 _
                And Len(user.Controls("T" & I - 3).Value) = 5 _
                And Len(user.Controls("T" & I - 2).Value) = 5 _
                And Len(user.Controls("T" & I - 1).Value) = 5 Then
     
                'converti en date
                DebMatin = CDate(user.Controls("T" & I - 5).Value)
                FinMatin = CDate(user.Controls("T" & I - 4).Value)
                DebAprem = CDate(user.Controls("T" & I - 3).Value)
                FinAprem = CDate(user.Controls("T" & I - 2).Value)
                Formation = CDate(user.Controls("T" & I - 1).Value)
     
                'totalise en convertissant en double
                Total = CDbl(FinMatin - DebMatin + FinAprem - DebAprem) + CDbl(Formation)
     
                'affiche au format heures : minutes
                user.Controls("T" & I).Value = Application.WorksheetFunction.Text(Total, "hh:mm")
     
            End If
     
        Next I
     
        On Error Resume Next 'permet de totaliser ligne par ligne
     
        'idem, conversion en date
        Lundi = CDate(user.T6.Value)
        Mardi = CDate(user.T12.Value)
        Mercredi = CDate(user.T18.Value)
        Jeudi = CDate(user.T24.Value)
        Vendredi = CDate(user.T30.Value)
        Samedi = CDate(user.T36.Value)
        Dimanche = CDate(user.T42.Value)
     
     
        'puis en double
        Total = CDbl(Lundi + Mardi + Mercredi + Jeudi + Vendredi + Samedi + Dimanche)
        Total_formation = CDate(user.T5.Value) + CDate(user.T11.Value) + CDate(user.T17.Value) + CDate(user.T23.Value) + CDate(user.T29.Value) + CDate(user.T35.Value) + CDate(user.T41.Value)
     
        'au format heures : minutes au delà de 24 h
        user.T43.Value = Application.WorksheetFunction.Text(Total, "[hh]:mm")
        user.T44.Value = Application.WorksheetFunction.Text(Total_formation, "[hh]:mm")
     
     
     End Sub
     Private Sub GroupeTxt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
     
    End Sub
     
     
    Private Sub GroupeTxt_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
        If KeyCode <> 8 Then 'suppression !
     
            If Len(GroupeTxt) = 2 Then GroupeTxt = GroupeTxt & ":"
            If Len(GroupeTxt) > 5 Then GroupeTxt = Left(GroupeTxt, 5)
     
        End If
     
    End Sub
    Comme tu peux le voir, j'ai remplacer la variable I par J car les valeurs des textboxs de l'userform2 ne sont pas les même que le 1er userform (user)
    J'ai même rajouter un "f" à la fin de chaque variable debfinf, finApremf etc...,, toujours pour les mêmes raisons, les valeurs des textboxs de l'userform2 ne sont pas les même que le 1er userform (user). Je me trompe peut être...

    Dans le module de l'userform2
    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
    Option Explicit
    Dim txt(1 To 21) As New classe1, J As Byte
     
    Private Sub UserForm_Initialize()
     
        For J = 1 To 21
     
            Set txt(J).GroupeTxt2 = Controls("T" & J)
     
        Next J
     
    End Sub
     
    Private Sub UserForm2_Initialize()
    For I = 1 To 5: Set txt(I).txt = Controls("T" & I): Next I
    End Sub

    Dans le module le l'user
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub UserForm_Initialize()
     
        For I = 1 To 42
     
            Set txt(I).GroupeTxt = Controls("T" & I)
     
        Next I
        End Sub
     
    Private Sub User_Initialize()
    For I = 1 To 5: Set txt(I).txt = Controls("T" & I): Next I
    End Sub
    Dans le module 1 du projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ouverure()
    user.Show 0
    End Sub
     
    Sub ouverure()
    UserForm2.Show
    End Sub
    C'est ici que j'ai une erreur de compilation des sub ouverture, ce qui est logique puisqu'ils s'appellent pareil mais j'ai modifié la sub ouverture et l'userform initialize de l'userform2 en ajoutant un "1" à la fin des deux et l'userform2 s'ouvre mais il ne fonctionne pas (il ne fait pas les sommes jours ni le total de la semaine et ne reconnait pas les formats dates.

    N'hésites pas si tu préfères avoir le fichier concerné pour mieux comprendre.
    Je te remercie infiniment par avance et te souhaite une excellente soirée.

    Danny

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Comme tu peux le voir, j'ai remplacer la variable I par J car les valeurs des textboxs de l'userform2 ne sont pas les même que le 1er userform (user)
    J'ai même rajouter un "f" à la fin de chaque variable debfinf, finApremf etc...,, toujours pour les mêmes raisons, les valeurs des textboxs de l'userform2 ne sont pas les même que le 1er userform (user). Je me trompe peut être..
    En fait, les variables déclarées au sain d'une procédure n'ont de portée que dans la procédure où elles sont déclarée donc, tu aurais pus laisser les noms tel quel sans qu'il y ai le moindre problème.
    Alors effectivement, il ne peut exister deux procédures ayant le même nom dans un même projet.

    Pour que je puisse tester, il faudrait que tu poste ton classeur contenant aussi le second UserForm.

  5. #5
    Membre averti
    Homme Profil pro
    Directeur RH
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur RH

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut
    Bonjour Theze,

    merci pour ton retour
    hier soir, après relecture de tes conseils et tes propositions, j'ai revu ma copie pour simplifier la programmation de l'outil voire même son utilisation.
    Désormais, tout est gérer à partir d'un seul userform, (le fameux user)

    Je me suis bien sur imprégner de ton tout premier code mais cela bloque toujours sur l'appel de l'user -> user.Show 0

    je t'envoie le fichier pour que tu comprennes bien la problématique
    J'en suis qu'au début, et pas mal de textbox ne fonctionnent pas encore, c'est normal mais cela te permettra de comprendre comment l'outil sera utilisé.

    Je te remercie encore d'avance

    Bonne journée
    Danny

    version 02.1 - Copie.xlsm

  6. #6
    Membre averti
    Homme Profil pro
    Directeur RH
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur RH

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut
    Bonsoir,

    j'ai bien avancé et j'ai renommé les textboxs convenablement
    Mais j'ai tenté de réadapté ton premier code au 4 nouvelles colonnes (deb et fin formation, le total de la formation et le total de la période par jour) mais en vain
    Je dois me tromper dans la boucle mais l'userform s'ouvre enfin

    Je te joins à nouveau le fichier qui est plus avancé que le dernier fichier que j'ai envoyé ce matin.

    Merci par avance pour tes conseils

    Bonne soirée

    Danny

    version 02.1 - Copie (2).xlsm

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2007] Afficher un IF pour addition de date dans word
    Par Debutant10 dans le forum Word
    Réponses: 4
    Dernier message: 22/08/2012, 13h21
  2. Addition de date dans ACCESS
    Par gds10 dans le forum IHM
    Réponses: 3
    Dernier message: 16/02/2009, 16h27
  3. Soustraction de date dans une requête
    Par smail21 dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/01/2008, 16h17
  4. Réponses: 3
    Dernier message: 19/03/2003, 15h19
  5. [VB6] Problème d'addition de dates et de nombres
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/11/2002, 21h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo