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

Excel Discussion :

Liste Déroulante avec résultat dans plusieurs colonnes [XL-2003]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut Liste Déroulante avec résultat dans plusieurs colonnes
    Bonjour à toutes et à tous !

    Je trouve votre forum particulièrement intéressant et me suis déjà servis de vos solutions pour ma besogne personnelle !
    Mais voilà, je suis face à un problème pour lequel je n’ai pas trouvé de solution… Et pourtant, je vous l’assure, j’ai largement abusé de la fonction « recherche » qui je le sais est mon amie !

    Sur ces qlqs plaisanteries, laissez-moi-vous exposer mon besoin :
    J’ai 2 feuilles Excel dans un même classeur (pour faire simple, Feuil1 et Feuil2)
    Feuil1 contient une colonne intitulée « Code Postal » et la 2ème, « Commune ou Commentaire »
    Feuil2 contient une table sur 2 colonnes contenant la liste des « Codes postaux » et les communes associées dans la seconde qui me servira à créer une liste de validation pour les codes postaux de la première feuille.
    Jusque la, pas de difficulté majeure.
    Voici ce que j’aimerais faire (en Excel si possible… ou VBA si pas d’autre choix) :
    Dans la Feuil1 :
    - Lorsque je clique sur la liste de validation d’une cellule de la colonne « Code Postal », je veux voir apparaitre la liste des communes de la Feuil2 mais, à la sélection de l’une d’elle, je veux que ce soit son code postal qui soit rapatrié dans cette même cellule et le nom de la commune, dans la cellule de la 2ème colonne (« Commune ou Commentaire »)
    - Par contre, cette cellule doit pouvoir être édité pour soit, modifier le nom de cette commune, le compléter ou encore, complètement le modifier (pour y mettre le nom d’une commune rattachée par exemple n’ayant pas son propre code postal !)
    Je ne sais pas si tout est clair, mais j’espère que vous pourrez m’aider à résoudre cette équation !!

    Ci-joint, en miniature, des captures d’écran de ce que j’aimerais réaliser.

    Merci par avance pour l'aide que vous pourrez m'apporter !
    Images attachées Images attachées  

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    Etant donné que tu as besoin d'un RechercheV pour récupérer la commune selon le code postal, tu n'as pas d'autre choix que de passer par une macro.

    Une des possibilités est de lancer la macro lorsque la valeur de la feuil1, A2 est modifiée (Evènement sur feuille), donc quand l'utilisateur choisi un nouveau code postal.
    Dans ce cas, on met la formule Vlookup.
    Si le résultat ne convient pas l'utilisateur écrit sur la formule et l'écrase.
    Au changement de code postal, la formule "revient"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Address <> "$A$2" Then Exit Sub 'Vérifie si la cellule modifiée est bien A2, sinon sortie du code
     
        Cells(2, 2).Formula = "=VLOOKUP(A2,Feuil2!$A$2:$B$8,2,FALSE)" 'Met la formule de rehercheV dans la cellule B2
     
    End Sub
    Ou alors, c'est faire en sorte que la macro fasse l'équivalent du RechercheV, donc plus de formule mais un résultat écrit en "Dur" qui peut donc être modifié (perso, je préfère cette option).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim MaRech As Range
    If Target.Address <> "$A$2" Then Exit Sub 'Vérifie si la cellule modifiée est bien A2, sinon sortie du code
     
        Set MaRech = Sheets("Feuil2").Range("A2:B8").Find(Sheets("Feuil1").Range("A2"), LookIn:=xlValues) 'Recherche le code postal dans la table
        Sheets("Feuil1").Range("B2") = MaRech.Offset(0, 1).Value 'Applique la valeur de la cellule à droite du résultat de la recherche
        'PS, pas de gestion du non trouvé car dépendant d'une liste de validation issue de la même table.
     
    End Sub
    Au cas ou, pour pouvoir créer un évènement sur un module de feuille il faut faire un click droit sur l'onglet de la feuille conernée (ici feuil1) et choisir Voir code.

    A+
    N'oubliez pas le si votre problème est solutionné.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Merci Fvandermeulen !

    Je viens de tester ta 2ème solution (je la préfère aussi à la première), et elle répond effectivement à ma 2ème problématique qui était de permettre la saisie d'une valeur dans une cellule renseignée en automatique...
    Update => J'ai du rajouter une gestion pour le "non trouvé" dans le cas ou la valeur de la cellule A2 est supprimer !

    Par contre, pour ma première problématique, aurais tu une solution ?

    Rappel: dans la liste de validation de la colonne A, je veux voir la liste des communes mais à la sélection d'une ligne, je veux que ce soit son code qui vienne s'inscrire dans la cellule colonne A.

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    J'avais pas fait gaffe à ce premier problème mais c'est un peu plus chaud.
    Je te conseillerais vivement de faire une liste basé sur le nom de la commune en A et mettre le code en B et à nouveau le nom de la commune en C pour modification éventuelle.

    Sinon, je pense qu'il faudra passer par un formulaire...

    A+
    N'oubliez pas le si votre problème est solutionné.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Re !

    Je crois que l'on se comprends mal ! lol

    En fait, dans la colonne A, je veux bien récupérer le code postal, mais quand j'affiche la liste déroulante de choix, je veux que celle-ci me propose les communes.
    Ensuite, je sélectionne une des comunes de la liste et la, c'est son code postal qui doit être inscrit dans la colonne A..

    Tu me suis ..?

    En fait, il s'agit de faire une liste de validation avec les 2 colonnes de la feuil2 et à la sélection d'une des lignes, ne récupérer que le code postal.

  6. #6
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,

    Je te suis mais pour autant que je sache c'est pas possible.

    Une liste de validation ne peut se référer qu'à une colonne et renverra l'élément choisi dans cette liste.

    C'est pourquoi je te proposais ces solutions.
    D'une manière ou d'une autre il te faudra un déclencheur autre qu'un évènement.
    Par exemple un bouton "Sélectionnez commune" qui ouvre un formulaire dans lequelle on met la liste des communes. en fonction du choix on renvoi dans les cellules voulues le code et la commune.

    Ou, dans la colonne A, la liste avec les communes pour le choix et donc en B le code suivant le nom de la commune et en C la commune à modifier (comme le code que je t'ai donné)

    A+
    N'oubliez pas le si votre problème est solutionné.

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Merci pour ton aide !!

    Je recherche sur le Forum, il mesemblait avoir trouver des topics sur ce sujet... Du genre, je cré une 3eme colonne dans la feuil2 dans laquelle je concatene les valeurs de A et de B et je cré la liste de validation avec la colonne C.
    Jusque la, c'est ok, j'aurais donc dans la liste déroulante des chaines de ce type :
    98200 - Commune du 98200
    98300 - Commune du 98300
    98400 - Commune du 98400
    98500 - Commune du 98500

    .... maintenant il ne me reste plus qu'à trouver comment, à la sélection d'une ligne, il n'y a que le code postal qui s'affiche en A...

  8. #8
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Citation Envoyé par jbs68 Voir le message
    ...
    maintenant il ne me reste plus qu'à trouver comment, à la sélection d'une ligne, il n'y a que le code postal qui s'affiche en A...
    Selon moi, c'est bien là le problème...mais je ne serais pas faché si quelqu'un me contredit et trouve une solution

    En attendant, regarde la pièce jointe, les deux options y sont.

    A+
    Fichiers attachés Fichiers attachés
    N'oubliez pas le si votre problème est solutionné.

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 24
    Points
    24
    Par défaut

    Ouf !!!! Pas mécontent d'avoir chercher un peu partout sur le net !!





    Pour obtenir mon résultat, voici le principe....

    1/ Feuil2 : Concaténation des colonnes A et B dans la colonne C
    - Formule en C2 "= A2 & " - " & B2"

    2/ Feuil2 : Création d'une plage dynamique
    - Nom : "_ListeValidation"
    - Référence : "=DECALER(Feuil2!$C$2;;;NBVAL(Feuil2!$C:$C)-1)"

    3/ Feuil1 : Ajout des validations de données dans la colonne A
    - Autoriser : "Liste"
    - Source : "_ListeValidation"

    4/ Feuil1 : Ajout du code VBA dans la fonction Worksheet_Change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Vl As Range
     
       If Target.Count > 1 Then Exit Sub
       Set Vl = Target.SpecialCells(xlCellTypeAllValidation)
       If Not Intersect(Vl, Target) Is Nothing Then
          If Len(Target) > 5 Then
             Me.Cells(Target.Row, Target.Column + 1) = Right(Target, Len(Target) - 8)
             Target = Left(Target, 5)
          End If
          If Target = "" Then Me.Cells(Target.Row, Target.Column + 1) = ""
       End If
    End Sub
    Images attachées Images attachées  

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

Discussions similaires

  1. [XL-2010] cellule / on click / liste déroulante avec les données de colonne
    Par GADENSEB dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 06/05/2014, 17h07
  2. [AC-2010] liste déroulante avec SF dans Onglet
    Par benoit-ema dans le forum IHM
    Réponses: 4
    Dernier message: 06/08/2011, 13h28
  3. Calculs avec référence dans plusieurs colonnes
    Par sat478 dans le forum Excel
    Réponses: 1
    Dernier message: 24/11/2010, 17h35
  4. [XL-2003] Liste déroulante avec image sur plusieurs colonnes
    Par mimi62 dans le forum Excel
    Réponses: 3
    Dernier message: 27/09/2010, 21h05
  5. [AC-2003] Zone de liste déroulante avec plusieurs colonnes
    Par moilou2 dans le forum IHM
    Réponses: 4
    Dernier message: 05/08/2009, 14h41

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