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 :

pb avec userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    manager
    Inscrit en
    Février 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : manager
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2010
    Messages : 56
    Par défaut pb avec userform
    Bonjour à tous

    voila je vais essayé d'être le plus clair possible mais cela va être dur.

    J'ai un fichier une sorte de matrice de formation.
    J'utilise un userform1 qui me permet de rentrer un nouvel op puis j'utilise un autre userform2 qui me permet de saisir des données par rapport au op.
    le souci que j'ai c'est lorsque je saisi un nouvel op il n'apparait pas automatiquement dans l'userform2 qui me permet de saisir les données.
    je suis obligé d'ouvrir l'userform2 et de le fermer avec la croix en haut à droite.

    il y a t il un moyen que pour suite à une saisie avec l'userform1 la liste avec de l'userform2 se met à jour

    Merci de votre aide
    A+

    je vous met le code

    code userform1


    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
    Public trouvé As String
    Public datum As New Collection
    Private Sub CommandButton1_Click()    'pour ajouter un operateur
    ActiveSheet.Unprotect "thibaut"       'déproteger
        Dim Lig As Long
     
        With Sheets("suivi OPL")
            Lig = .Range("b65536").End(xlUp).Row + 1 'jusqu'a la ligne 65536 et décale d'une ligne à chaque entrée
            .Cells(Lig, 1).Value = ComboBox2         'ligne 1 colonne 1 valeur du combobox 2
            .Cells(Lig, 2).Value = TextBox2          'ligne 1 colonne 2 valeur du textbox 2
            .Cells(Lig, 3).Value = ComboBox1         'ligne 1 colonne 3 valeur du combobox 1
            .Cells(Lig, 4).Value = TextBox5          'ligne 1 colonne 4 valeur du combobox 5
            .Cells(Lig, 5).Value = TextBox6          'ligne 1 colonne 5 valeur du combobox 6
     
     
        End With
    ComboBox2 = ""              'vider le contenu
    ComboBox1 = ""              'vider le contenu
    TextBox2 = ""               'vider le contenu
    TextBox5 = ""               'vider le contenu
    TextBox6 = ""               'vider le contenu
    UserForm1.Hide              'avec la touche valider fermer l'userform 1 ajouter un operateur
     
     
    Dim ZoneàModifier As Range  'mise en couleur selon la couleur de l'équipe
    Dim cellule As Range
     
    Set ZoneàModifier = Range("A17:A500")                                           'pour la selection A17:A500
    For Each cellule In ZoneàModifier                                               'pour les cellules dans la zone à modifier
    Select Case cellule                                                             'selectionner les cellules
    Case Is = ""                                                                    'si la case est vide
    cellule.Interior.ColorIndex = 2                                                 'interieur couleur blanche
    Case Is = "verte"                                                               'si la case contient verte
    cellule.Interior.ColorIndex = 4                                                 'interieur couleur verte
    Case Is = "rose"                                                                'si la case contient rose
    cellule.Interior.ColorIndex = 7                                                 'interieur couleur rose
    Case Is = "jaune"                                                               'si la case contient jaune
    cellule.Interior.ColorIndex = 6                                                 'interieur couleur jaune
    Case Is = "bleu"                                                                'si la case contient bleu
    cellule.Interior.ColorIndex = 5                                                 'interieur couleur bleu
    Case Is = "Orange"                                                              'si la case contient orange
    cellule.Interior.ColorIndex = 46                                                'interieur couleur orange
    End Select                                                                      'fin de selection
    cellule.Offset(0, 1).Interior.ColorIndex = cellule.Interior.ColorIndex          'décaler de 0 cellule vert le bas et d'1 cellule vers la droite et interieur couleur selon la valeur
    cellule.Offset(0, 2).Interior.ColorIndex = cellule.Interior.ColorIndex          'décaler de 0 cellule vert le bas et d'2 cellule vers la droite et interieur couleur selon la valeur
    cellule.Offset(0, 3).Interior.ColorIndex = cellule.Interior.ColorIndex          'décaler de 0 cellule vert le bas et d'3 cellule vers la droite et interieur couleur selon la valeur
    cellule.Offset(0, 4).Interior.ColorIndex = cellule.Interior.ColorIndex          'décaler de 0 cellule vert le bas et d'4 cellule vers la droite et interieur couleur selon la valeur
    Next                                                                            'ensuite
    ActiveSheet.Protect "thibaut"
     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFiltering:=True
        ActiveSheet.EnableSelection = xlNoSelection
    End Sub
    Private Sub UserForm_Initialize() ' a ajouter sur la matrice finale avec la modif de l'userform et les champs en a9 etc
    'deprotege la feuille
    ActiveSheet.Unprotect "thibaut"
    Dim Cell As Range
     'selectionner l'équipe
        For Each Cell In Range("A3:A7")
            If Cell <> "" Then ComboBox2.AddItem (Cell)
        Next
      'selectionner la fonction
        For Each Cell In Range("A8:A14")
            If Cell <> "" Then ComboBox1.AddItem (Cell)
        Next
     
        'Protege la feuille
        ActiveSheet.Protect "thibaut"
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFiltering:=True
        ActiveSheet.EnableSelection = xlNoSelection
    End Sub
     
    Private Sub CommandButton2_Click()    'modifie
        Dim Lig As Long
     
        If ListBox1.ListIndex = -1 Then Exit Sub
     
        Lig = ListBox1.ListIndex + 2
     
        With Sheets("Feuil1")
            .Cells(Lig, 1).Value = TextBox1
            .Cells(Lig, 2).Value = TextBox2
            .Cells(Lig, 3).Value = TextBox3
            .Cells(Lig, 4).Value = CDate(TextBox4)
            .Cells(Lig, 5).Value = CDbl(TextBox5)
            If Me.OptionButton1 Then .Cells(Lig, 6).Value = Me.OptionButton1.Caption
            If Me.OptionButton2 Then .Cells(Lig, 6).Value = Me.OptionButton2.Caption
            .Cells(Lig, 7).Value = ComboBox1.Value
            .Cells(Lig, 8).Value = TextBox7
        End With
     
    End Sub
    Private Sub OptionButton3_Click()
        If OptionButton3 = True Then
            Me.CommandButton1.Enabled = True
            Me.CommandButton2.Enabled = False
        End If
    End Sub
    Private Sub OptionButton4_Click()
        If OptionButton4 = True Then
            Me.CommandButton1.Enabled = False
            Me.CommandButton2.Enabled = True
     
        End If
    End Sub
    Private Sub CommandButton3_Click()
    ComboBox2 = ""
    ComboBox1 = ""
    TextBox2 = ""
    TextBox5 = ""
    TextBox6 = ""
     
    UserForm1.Hide
    End Sub
    Code 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
    Private Sub CommandButton1_Click()
    UserForm2.Hide 'bouton fermer
         ComboBox1 = ""
         ComboBox2 = ""
     
    End Sub
     
    Private Sub CommandButton2_Click()
    UserForm2.Hide 'bouton annuler
    End Sub
    Private Sub UserForm_Initialize()
     
    ActiveSheet.Unprotect "thibaut" 'deprotege la feuille
    Dim Cell As Range
        'selcetionner le range nom
        For Each Cell In Range("B17:B3173")
            If Cell <> "" Then ComboBox1.AddItem (Cell)
        Next
        'selectionner le rang OPL
        For Each Cell In Range("g15:HP15")
            If Cell <> "" Then ComboBox2.AddItem (Cell)
        Next
        'Protege la feuille
        ActiveSheet.Protect "thibaut"
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFiltering:=True
        ActiveSheet.EnableSelection = xlNoSelection
     
    End Sub
     
    Private Sub CommandButton6_Click()
    Calendrier.Show
    End Sub
    Private Sub CommandButton3_Click()
          'deprotege la feuille
        ActiveSheet.Unprotect "thibaut"
    Dim datevalidation As Date 'déclaration de la variable
    Dim datedeploiement As Date 'déclaration de la variable
           With Calendrier
     
      If .Calendar1.Value = "" Then formé = Now() Else: formé = .Calendar1.Value
      nom = ComboBox1.Value
        Formation = ComboBox2.Value
        statut = OptionButton1.Value * 1
        If statut = 0 Or Formation = "" Or nom = "" Then
            Exit Sub
        Else
            'Range  se trouve une case au dessus de la premiere case du tableau
            Range("g17").Offset(Me.ComboBox1.ListIndex * 1 - (statut + 1), Me.ComboBox2.ListIndex) = _
            Choose(-statut, .Calendar1.Value)
        End If
     
        datedeploiement = Range("g17").Offset(Me.ComboBox1.ListIndex - Me.ComboBox1.ListIndex - 9, Me.ComboBox2.ListIndex).Value
        Select Case Range("g17").Offset(Me.ComboBox1.ListIndex * 1 - (statut + 1), Me.ComboBox2.ListIndex)
     
        Case Is = "" ' cas ou la case est vide
     
            Range("g17").Offset(Me.ComboBox1.ListIndex * 1 - (statut + 1), Me.ComboBox2.ListIndex).Interior.ColorIndex = 3
     
        Case Is <= datedeploiement 'cas ou la date de validation est inferieure ou égale à la date de déploiement
     
            Range("g17").Offset(Me.ComboBox1.ListIndex * 1 - (statut + 1), Me.ComboBox2.ListIndex).Interior.ColorIndex = 2
            Range("g17").Offset(Me.ComboBox1.ListIndex * 1 - (statut + 1), Me.ComboBox2.ListIndex).Font.ColorIndex = 4
     
        Case Is > datedeploiement 'cas ou la date de validation est superieure à la date de déploiement
     
            Range("g17").Offset(Me.ComboBox1.ListIndex * 1 - (statut + 1), Me.ComboBox2.ListIndex).Interior.ColorIndex = 2
            Range("g17").Offset(Me.ComboBox1.ListIndex * 1 - (statut + 1), Me.ComboBox2.ListIndex).Font.ColorIndex = 3
     
        End Select
     
        End With
         UserForm2.Hide
         ComboBox1 = ""
         ComboBox2 = ""
     
     
       'Protege la feuille
       ActiveSheet.Protect "thibaut"
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFiltering:=True
        ActiveSheet.EnableSelection = xlNoSelection
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sans avoir regardé ton code, voici une exemple de code placé dans un UserForm nommé UserForm1 qui a 2 contrôles ComboBox nommés respectivement cbJours et cbMois et qui alimentent deux TextBox se trouvant dans un autre UserForm nommé UserForm2 dès que l'on clique sur un des éléments de la liste.
    Ci-dessous le code placé dans UserForm1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub cbJours_Click()
     UserForm2.tbJours = Me.cbJours.Value
    End Sub
    Private Sub cbMois_Click()
     UserForm2.tbMois = Me.cbMois.Value
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    manager
    Inscrit en
    Février 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : manager
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2010
    Messages : 56
    Par défaut
    Hello,

    Merci pour ta réponse,
    j'ai testé mais cela ne fonctionne pas en tout cas de la façon que je l'ai retranscrit.
    N’étant pas un expert c'est possible d'être plus explicite dans ton code, ou je le met comment je l'adapte.


    Merci d'avance et bonne journée

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu remplis tes listes sur l'évènement Initalize de ton Userform2. (cette évènement des déclenché au chargement de cet usf)
    Dans les code, je vois que tu utilise seulement des Donc, tu ne fais que les cacher.

    Soit tu décharge tes usf par Soit tu utilise l'évènement Activate pour remplir ta Liste

Discussions similaires

  1. Pb menu déroulant avec UserForm - débutant
    Par Philou_92 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/05/2008, 15h23
  2. direction avec Userform
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/04/2008, 16h57
  3. renommer un fichier avec userform
    Par pipo159 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/04/2008, 18h57
  4. problème avec userform
    Par sash6 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/08/2007, 17h03
  5. [VBA-E]erreur d'éxécution 9 avec userform
    Par heavenly dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/05/2007, 15h53

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