Mise à jour d'élément provenant d'une liste déroulante

marine -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voila mon problème :
(Les feuilles et cellules sont données à titre d'exemple)

J'ai des listes déroulante (feuille 1, A1) avec comme source une plage nommé "fonction" (Feuille 2, A1:A4) --> liste insérer par marco Type: xlValidationList
Lorsque je change une donnée de ma plage, la liste de choix est mise à jour automatiquement... jusque la, pas de problème.

Mettons je choisie la fonction "Directeur", j'ai donc "Directeur" qui s'affiche en feuille1, A1.
Maintenant, je remplace dans la feuille 2 "Directeur" par "Directeur tartampion".
Ma liste de choix déroulante est donc mise à jour, mais pas ma selection en feuille 1, A1. Je suis obligée de RE-selectionner mon choix et je voudrais que la cellule se mette automatique à jour si modification dans la plage de donnée et cela après qu'une sélection est été faite.

J'espère que c'est à peu près clair...

Merci d'avance

3 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Maintenant, je remplace dans la feuille 2 "Directeur" par "Directeur tartampion". ce n'est plus une fonction mais une personne. Vous faites le changement combien de fois par heures????
    0
    1. marine
       
      c'était juste un exemple... :)
      La fréquence des changements est variable... Mais j'ai réussi après nombreuses recherches à trouver ce que je voulais grâce au code suivant :

      1- Définir un nom pour la liste de choix déroulant (Dans le code ci-dessous, le nom est "Fonction")
      2- Le code est à inserer dans la feuille où est située la plage de donnée du nom
      3- La boucle For Each In est suivi du nom de la feuille où les listes sont situées (Ici : "MPAOT")



      ' Procédure qui actualise toutes les valeurs des fonctions dans la feuille "MPAOT" choisies grâce à une liste déroulante
      'Est utile en cas de changement de nom de fonction


      Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect([Fonction], Target) Is Nothing Then
      Application.EnableEvents = False
      valSaisie = Target.Value
      Application.Undo
      For Each c In Sheets("MPAOT").Cells.SpecialCells(xlCellTypeAllValidation)
      If c.Value = Target Then c.Value = valSaisie
      Next
      Target = valSaisie
      Application.EnableEvents = True
      End If
      End Sub



      Pour ceux que ça intéresse....

      Merci en tout cas pour votre attention et votre réponse.

      J'aurais une autre question éventuellement :
      Comment faire une boucle sur des lignes filtrées?


      Exemple :
      Selection.AutoFilter Field:=6, Criteria1:="P"

      For i=2 To NbLignes
      .....
      ActiveCell.Formula = _
      "=INDEX(Fonctions!A2:A200,MATCH(MPAOT!I" & i & ",Fonctions!B2:B200,0))"
      Next i
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      une facon de faire avec filtre:

      '
      '
      '
      '
          Selection.AutoFilter Field:=6, Criteria1:="P"
          'adresse des lignes filtrees
          plageadd = Range("A2:A" & NbLignes).SpecialCells(xlVisible).Address
          'definition plage a modifiee
          Set plage = Range(plageadd)
          For Each ligne In plage
              '.....
              Cells(ligne.Row, "votre colonne").Formula = "=INDEX(Fonctions!A2:A200,MATCH(MPAOT!I" & ligne.Row & ",Fonctions!B2:B200,0))"
          Next ligne
      


      Probleme: dans votre boucle d'origine il y a i pour la formule, j'ai mis ligne.row, mais a vous de voir ce qu'il vous faut.
      0
  2. pandra Messages postés 2 Statut Membre
     
    Merci Marine! J'ai actuellement le même problème que toi mais je n'arrive pas à le resoudre. J'ai copié ton code dans la feuille où est située la plage de données et rien se passe. Est-ce que tu pourrais mettre ton fichier ici pour que je puisse le prendre comme exemple?

    Merci d'avance
    0
    1. marine
       
      mon ficher puisqu'il est confidentiel, il faudrait donc que je le transforme pour le mettre à disposition et cela prend un peu de temps.
      En attendant, tu peux peut être mettre le tiens et je regarderais.
      Pour information : La procédure inscrite dans une feuille est automatique, tu ne "vois" donc pas forcement si elle fonctionne ou pas sauf si tu change tes valeurs.
      J'essaye de modifier mon fichier dans le week end et d'expliciter les codes.
      0
    2. marine0207 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
       
      heu... Comment on dépose un fichier?
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      pour mettre un fichier a dispo cliquez sur le lien suivant https://www.cjoint.com/

      n'oubliez pas de copier/coller le lien cree sur votre prochain message
      0
    4. marine
       
      http://cjoint.com/?CFdj2VNSALR
      0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Vous pourriez reiterer votre demande, parce que je ne vois pas ce qui ne marche pas, Vu que pour votre demande: Comment faire une boucle sur des lignes filtrées? l'onglet n'existe pas ?????

    A+
    0
    1. marine
       
      J'ai résolu le problème pour la boucle sur liste filtrée (non visible dans le document en pièce jointe)
      Le document en ligne est destinée à pandra. Il résout le problème de mise à jour des listes déroulantes.
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Ok, ca roule

      Bye
      0