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

Fermé
marine - 16 mai 2013 à 11:50
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 3 juin 2013 à 14:07
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
A voir également:

3 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
16 mai 2013 à 14:29
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
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié par f894009 le 16/05/2013 à 17:06
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
pandra Messages postés 2 Date d'inscription jeudi 30 mai 2013 Statut Membre Dernière intervention 8 mars 2016
30 mai 2013 à 17:08
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
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
marine0207 Messages postés 1 Date d'inscription vendredi 31 mai 2013 Statut Membre Dernière intervention 31 mai 2013
31 mai 2013 à 18:21
heu... Comment on dépose un fichier?
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
31 mai 2013 à 18:46
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
http://cjoint.com/?CFdj2VNSALR
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
3 juin 2013 à 13:55
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
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
3 juin 2013 à 14:07
Re,

Ok, ca roule

Bye
0