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

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  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 : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 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

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