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 :

Afficher la valeur d'une cellule dans un TextBox


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Afficher la valeur d'une cellule dans un TextBox
    Bonjour à tous,

    Voilà j'ai un petit problème sous VBA, j'ai créé un formulaire pour automatiser la saisie d'un volume horaire mensuel par projet. En effet, a l'ouverture du formulaire, chaque agent a la possibilité de pointer le nombre d'heure travaillé sur ce projet. Le problème c'est que mon formulaire va alimenter la feuille excel avec toutes les valeurs que l'agent aura saisi SAUF que, si l'agent ne veut modifier que certaine données, il est quand même obligé de recopier toutes les valeurs des cellules excel (correspondant au projet selectionné) dans les TextBox du formulaire.

    Pour résoudre ce problème, je voudrais que dès que mon agent sélectionne un projet, il puisse voir le volume horaire déjà sélectionné dans la plage excel pour qu'il puisse (si il y a lieu) fair une mise à jour.

    Voici mon 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
    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
    Public numeroDeProjet As Integer
     
     
    Private Sub ComboBoxChoixProjet_Change()
     
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
        ' récupère le numéro d'ordre du projet
        numeroDeProjet = ComboBoxChoixProjet.ListIndex ' attention la numérotation commence à 0
        ' remplir les Labels noms des employés
        remplirLabelsNoms
    End Sub
     
    Private Sub remplirLabelsNoms()
     
        ' remplir les des noms des employés en fonction de la saisie du projet
     
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
        ' teste l'ordre du projet sélectionné
        If numeroDeProjet >= 0 Then
            'recherche la ligne ou on trouve le premier acteur du projet
            ligne = (numeroDeProjet * 8) + 3
            ' la colonne elle est égale à 2
            colonne = 2
            ' range les noms des employés dans les bonnes étiquettes (labels)
            ' en changeant (incrémentant la ligne de recherche)
            For rang = 1 To 6
     
               Controls("LabelActeur" & rang).Caption = f.Cells(ligne, colonne)
                ligne = ligne + 1
     
            Next rang
        End If
    End Sub
     
     
    'Private Sub remplirtextbox()
    '
    '    ' se positionne sur la feuille suivi
    '    Set f = Sheets("Tb suivi Projets + MCO + Act")
    '    ' teste l'ordre du projet sélectionné
    '    If numeroDeProjet >= 0 Then
    '        'recherche la ligne ou on trouve le premier acteur du projet
    '        ligne = (numeroDeProjet * 8) + 3
    '
    '        For rang = 1 To 6
    '            Controls("TextBox" & rang).Value = f.Cells(ligne, colonne)
    '            ligne = ligne + 1
    '            colonne = colonne + 1
    '        Next rang
    '    End If
    '
    '
    'End Sub
     
    Private Sub CommandButtonQuitter_Click()
     
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
        'Bouton de commande quitter, qui décharge le formulaire quand on clique
        Unload Me
     
    End Sub
     
    Sub CommandEnregistrer_Click()
     
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
     
        ' teste l'ordre du projet sélectionné
        If numeroDeProjet >= 0 Then
            'initialise les lignes de début et de fin
            'en fonction de l'ordre du projet dans le combo
            'ligned = 3 puis 11 puis 19 puis 27 ...
            'lignef = 8 puis 16 puis 24 puis 32
            ligned = (numeroDeProjet * 8) + 3
            lignef = ligned + 5
        End If
     
        ' initialiser les box
        boite = 0
        ' boucle sur les lignes de début à fin
        For ligne = ligned To lignef
            ' boucle sur les colonnes C à N
            For colonne = 3 To 14
                ' change de textbox à chaque tour
                boite = boite + 1
                ' range dans la cellule pointée par la colonne et la ligne
                ' la valeur de la boite de texte pointée par le numéro de box
                f.Cells(ligne, colonne) = Me.Controls("TextBox" & boite).Value
            ' va à la colonne suivante
            Next colonne
        ' va à la ligne suivante
        Next ligne
     
    End Sub
     
    Private Sub UserForm_Activate()
     
     
    ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
        ' teste l'ordre du projet sélectionné
        If numeroDeProjet >= 0 Then
            'recherche la ligne ou on trouve le premier acteur du projet
            ligne = (numeroDeProjet * 8) + 3
     
            For rang = 1 To 6
                Controls("TextBox" & rang) = Range(f.Cells(ligne, colonne))
                ligne = ligne + 1
                colonne = colonne + 1
            Next rang
        End If
     
     
    End Sub
     
     
    Private Sub UserForm_Initialize()
     
        ' se positionne sur la feuille projet
        Set f = Sheets("Projets")
        'initialise les variables de projets
        numeroDeProjet = -1
        'Alimentation de la combobox avec le nom des différents projets
        For projet = 2 To 4
            ComboBoxChoixProjet.AddItem f.Cells(projet, 1)
        Next projet
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
     
    End Sub
    Le problème c'est que cela ne fonctionne pas, mes TextBox restent vides...
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Tu peux essayer avec un vlookup.

    Tu dis pour chacun de tes textbox si la valeur de ton Vlookup est différentes de 0 alors tu affiches cette valeur

    Tu peux t'aider de ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     UserForm1.TextBox1.Value = (Range("C2")

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    TU as trouvé une solution?

    Tu peux regarder ça

    http://michel.vergriete.perso.sfr.fr/userform.html

    et surtout ça

    http://michel.vergriete.perso.sfr.fr/userformLabel.html

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour,test ça
    Code UserFormprojet : 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
    159
    160
    161
    162
    163
    164
    165
    Public numeroDeProjet As Integer
     
     
    Private Sub ComboBoxChoixProjet_Change()
    'Lire
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
        ' récupère le numéro d'ordre du projet
        numeroDeProjet = ComboBoxChoixProjet.ListIndex ' attention la numérotation commence à 0
        ' remplir les Labels noms des employés
        remplirLabelsNoms
    End Sub
     
    Private Sub remplirLabelsNoms()
     
        ' remplir les des noms des employés en fonction de la saisie du projet
     
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
        ' teste l'ordre du projet sélectionné
        If numeroDeProjet >= 0 Then
            'recherche la ligne ou on trouve le premier acteur du projet
            ligne = (numeroDeProjet * 8) + 3
            ' la colonne elle est égale à 2
            colonne = 2
            ' range les noms des employés dans les bonnes étiquettes (labels)
            ' en changeant (incrémentant la ligne de recherche)
            For rang = 1 To 6
     
               Controls("LabelActeur" & rang).Caption = f.Cells(ligne, colonne)
                ligne = ligne + 1
     
            Next rang
        End If
        Lire
    End Sub
     
     
    'Private Sub remplirtextbox()
    '
    '    ' se positionne sur la feuille suivi
    '    Set f = Sheets("Tb suivi Projets + MCO + Act")
    '    ' teste l'ordre du projet sélectionné
    '    If numeroDeProjet >= 0 Then
    '        'recherche la ligne ou on trouve le premier acteur du projet
    '        ligne = (numeroDeProjet * 8) + 3
    '
    '        For rang = 1 To 6
    '            Controls("TextBox" & rang).Value = f.Cells(ligne, colonne)
    '            ligne = ligne + 1
    '            colonne = colonne + 1
    '        Next rang
    '    End If
    '
    '
    'End Sub
     
    Private Sub CommandButtonQuitter_Click()
     
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
        'Bouton de commande quitter, qui décharge le formulaire quand on clique
        Unload Me
     
    End Sub
     
    Sub CommandEnregistrer_Click()
     
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
     
        ' teste l'ordre du projet sélectionné
        If numeroDeProjet >= 0 Then
            'initialise les lignes de début et de fin
            'en fonction de l'ordre du projet dans le combo
            'ligned = 3 puis 11 puis 19 puis 27 ...
            'lignef = 8 puis 16 puis 24 puis 32
            ligned = (numeroDeProjet * 8) + 3
            lignef = ligned + 5
        End If
     
        ' initialiser les box
        boite = 0
        ' boucle sur les lignes de début à fin
        For ligne = ligned To lignef
            ' boucle sur les colonnes C à N
            For colonne = 3 To 14
                ' change de textbox à chaque tour
                boite = boite + 1
                ' range dans la cellule pointée par la colonne et la ligne
                ' la valeur de la boite de texte pointée par le numéro de box
                f.Cells(ligne, colonne) = Me.Controls("TextBox" & boite).Value
            ' va à la colonne suivante
            Next colonne
        ' va à la ligne suivante
        Next ligne
     
    End Sub
    Sub Lire()
     
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
     
        ' teste l'ordre du projet sélectionné
        If numeroDeProjet >= 0 Then
            'initialise les lignes de début et de fin
            'en fonction de l'ordre du projet dans le combo
            'ligned = 3 puis 11 puis 19 puis 27 ...
            'lignef = 8 puis 16 puis 24 puis 32
            ligned = (numeroDeProjet * 8) + 3
            lignef = ligned + 5
        End If
     
        ' initialiser les box
        boite = 0
        ' boucle sur les lignes de début à fin
        For ligne = ligned To lignef
            ' boucle sur les colonnes C à N
            For colonne = 3 To 14
                ' change de textbox à chaque tour
                boite = boite + 1
                ' range dans la cellule pointée par la colonne et la ligne
                ' la valeur de la boite de texte pointée par le numéro de box
                Me.Controls("TextBox" & boite).Value = f.Cells(ligne, colonne)
            ' va à la colonne suivante
            Next colonne
        ' va à la ligne suivante
        Next ligne
     
    End Sub
    Private Sub UserForm_Activate()
     
     
    ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
        ' teste l'ordre du projet sélectionné
        If numeroDeProjet >= 0 Then
            'recherche la ligne ou on trouve le premier acteur du projet
            ligne = (numeroDeProjet * 8) + 3
     
            For rang = 1 To 6
                Controls("TextBox" & rang) = Range(f.Cells(ligne, colonne))
                ligne = ligne + 1
                colonne = colonne + 1
            Next rang
        End If
     
     
    End Sub
     
     
    Private Sub UserForm_Initialize()
     
        ' se positionne sur la feuille projet
        Set f = Sheets("Projets")
        'initialise les variables de projets
        numeroDeProjet = -1
        'Alimentation de la combobox avec le nom des différents projets
        For projet = 2 To 4
            ComboBoxChoixProjet.AddItem f.Cells(projet, 1)
        Next projet
        ' se positionne sur la feuille suivi
        Set f = Sheets("Tb suivi Projets + MCO + Act")
     
    End Sub
    je ne me suis pas foulé, j'ai repris ta méthode d’enregistrement et j'ai inversé le sans d'écriture d'excel vers le UF ha! ha! ha!
    Dernière modification par Invité ; 21/08/2014 à 11h19.

Discussions similaires

  1. [XL-2007] Afficher la valeur d'une cellule dans un textbox
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/05/2015, 12h04
  2. Réponses: 1
    Dernier message: 10/04/2014, 07h22
  3. [XL-2007] Comment afficher la valeur d'une cellule dans un textbox
    Par alexworks dans le forum Excel
    Réponses: 2
    Dernier message: 24/09/2013, 11h46
  4. Réponses: 11
    Dernier message: 25/08/2012, 01h01
  5. Réponses: 6
    Dernier message: 02/03/2011, 16h04

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