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 :

Comment modifier la valeur d'une liste déroulante attachée à une cellule de feuille excel par VBA ? [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Par défaut Comment modifier la valeur d'une liste déroulante attachée à une cellule de feuille excel par VBA ?
    bonsoir,
    Dans mon classeur, j'ai un onglet "base de données des 400 agents de ma société qui comporte notamment l'identité de chaque agent (une ligne par agent). Dans le même fichier j'ai un autre onglet servant de formulaire. Dans ce formulaire j'ai créé une liste déroulante par le menu excel Données/validation de données qui est liée à la liste de mes agents située dans l'onglet "base de données". Cet onglet formulaire comporte plusieurs données relatives à l'agent (nom, date de naissance, métier, salaire.....) Lorsque je sélectionne un agent, les données de cet agent s'affichent aussitôt dans le formulaire grâce à la formule "=recherchev". Il y a également d'autres informations qui sont le croisement des données de la base de données mais qui ne figurent pas dedans.
    Tout cela fonctionne bien tant que je sélectionne chaque agent un à un avec ma souris.

    OR, j'ai besoin de synthétiser toutes les données de chaque agent dans un journal, toutes les données c'est-à-dire celles provenant de la base de données et celles qui se croisent et qui se calculent en fonction des informations de chaque agent.
    J'ai rédigé quelques lignes de code en vba pour "exporter" pour chaque agent les données dont j'ai besoin dans un 3ème onglet appelé "Journal".

    VBA doit donc sélectionner à ma place chaque agent dans la liste déroulante de la feuille excel avant d'envoyer les données calculées dans le journal. J'ai programmé un "copier-coller" dans la cellule concernée. D'une part cela efface la liste déroulante et d'autre part, les formules "=recherchev" ne se mettent plus à jour. BIGRE !

    Quelqu'un aurait-il la clef de mon problème pour modifier la valeur de la liste déroulante automatiquement ?
    Merci d'avance pour vos réponses
    Floriane

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Floriane7522 Voir le message
    Bonjour,

    Le fichier joint contient le code suivant que vous pourriez adapter :

    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
     
    Sub LancerLaBoucleNomsPrenoms()
     
    Dim AireNomsPrenoms As Range, CelluleNomsPrenoms As Range, CelluleCible As Range
    'Dim I As Long
     
        Set AireNomsPrenoms = Sheets("Source").Range("NomsPrenoms")
        Set CelluleCible = Sheets("Cible").Range("NomPrenomChoisi")
     
     '   I = 0
        For Each CelluleNomsPrenoms In AireNomsPrenoms
     
            CelluleCible = CelluleNomsPrenoms
      '      If I <= 5 Then MsgBox CelluleCible
     
      '      I = I + 1
     
        Next CelluleNomsPrenoms
     
        Set AireNomsPrenoms = Nothing
        Set CelluleCible = Nothing
     
    End Sub

  3. #3
    Membre régulier
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Par défaut
    Bonjour Eric,
    Merci pour votre aide.
    C'est presque ce dont j'ai besoin, il manque dans votre proposition un onglet. Comme je ne me suis pas très bien exprimée, j'ai repris votre classeur et je l'ai complété en rajoutant mon formulaire et en pré remplissant l'onglet cible pour mieux exprimer mon besoin et permettre de comprendre le résultat final.
    je vous ai retourné votre classeur au cas où pourriez faire un nouvel examen.
    merci pour votre réponse
    bien cordialement
    Florence
    Fichiers attachés Fichiers attachés

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Floriane7522 Voir le message
    Bonsoir,

    Quel est l'intérêt d'un formulaire ? Vous pourriez réaliser vos calculs directement dans l'onglet journal, non ?

  5. #5
    Membre régulier
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonsoir,

    Quel est l'intérêt d'un formulaire ? Vous pourriez réaliser vos calculs directement dans l'onglet journal, non ?
    En fait, le formulaire (comportant beaucoup plus de données en réalité) va être remis à chaque salarié de l'entreprise. Parallèlement, j'ai besoin d'un journal (ce que vous appelez cible) qui résume pour chaque salarié certaines données et apporte en sus des calculs (je n'ai pas tout mis dans l'onglet car cela n'apporte rien de plus à l'exercice), l'objectif de l'onglet cible étant :
    - de quantifier financièrement ce qui faut rajouter unitairement et globalement par type d'emplois pour la fin de l'exercice annuel
    - de faire des statistiques ensuite sur les niveaux de rémunération en fonction de l'âge et d'autres paramètres.
    merci
    florence

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Floriane7522 Voir le message
    Il ne vous reste plus qu'à compléter le 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
     
    Option Explicit
     
    Sub MettreAJourLeJournal(ByVal FeuilleFormulaire As Worksheet)
     
    Dim AireNomsPrenoms As Range, CelluleNomsPrenoms As Range
     
        Set AireNomsPrenoms = Sheets("Journal").Range("NomsPrenoms")
        For Each CelluleNomsPrenoms In AireNomsPrenoms
     
            If CelluleNomsPrenoms = FeuilleFormulaire.Range("NomPrenomChoisi") Then
     
               CelluleNomsPrenoms.Offset(0, 2) = FeuilleFormulaire.Range("AgentAge")
               CelluleNomsPrenoms.Offset(0, 3) = FeuilleFormulaire.Range("AgentQuotite")
               ' A compléter avec le reste des zones nommées du formulaire (en jaune)
     
               Exit For
     
            End If
     
        Next CelluleNomsPrenoms
        Set AireNomsPrenoms = Nothing
     
    End Sub

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/09/2012, 00h48
  2. Réponses: 7
    Dernier message: 22/06/2012, 13h12
  3. Réponses: 4
    Dernier message: 20/02/2012, 17h59
  4. Réponses: 1
    Dernier message: 12/12/2011, 11h07
  5. [XL-2003] Menu déroulant avec une liste principale et une liste secondaire
    Par bbcancer dans le forum Excel
    Réponses: 2
    Dernier message: 03/05/2011, 14h50

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