Liste déroulante et macro

Bonjour,

Dans l'onglet "Ville" j'ai une liste déroulante basée sur les infos prises dans l'onglet "LISTE" à l'aide de deux macros. Les macros marchent mais j'ai deux questions :

- Pourquoi il faut que je clique deux fois sur la liste déroulante pour avoir toutes les infos sur le choix des villes (surement une erreur dans la macro) ;

- Est-il possible de faire apparaître la correspondance du département et du n° de département dans la feuille « Ville » lorsque j’ai choisi la ville ?

Cordialement.

Bonsoir,

Essaie ainsi :

Private Sub CmbListe_GotFocus()
    With [Ville]
        CmbListe.ListFillRange = .Worksheet.Name & "!" & .Address
    End With
End Sub

Ville est la plage liste, nommée en dynamique.

Cordialement.

Salut Mferrand

C'est OK pour la 1ère question. Pour info je ne comprends pas pourquoi ça marche mieux en nommant la plage mais le principal c'est que je n'ai plus à cliquer deux fois ce qui était un peu lourd.

Par contre pour le deuxième point de ma question si je veux que les colonnes département et n° de département se remplissent automatiquement par rapport au choix de la ville pris dans la liste déroulante, on peut faire comment ?

Cordialement.

Bonjour,

je ne comprends pas pourquoi ça marche mieux en nommant la plage

Je ne fais pas que nommer la plage, ça c'est plus pour la commodité.

Je ne vide pas la Combo avant d'actualiser et j'utilise ListFillRange pour affecter la liste.

Le résultat vient plutôt de ces deux points... On ne sait jamais trop tout ce qui peut jouer, alors on balaie les possibilités pour prendre celle qui marche le mieux !

Remplir les départements, une classique RECHERCHEV doit le faire...

Cordialement.

Complément à ma réponse précédente (pour ma culture d'excel ) :

Question sur la fonction "=DECALER(LISTE!$A$2;;;NBVAL(LISTE!$A:$A)-1)". A quoi sert les ";" ? Dans l'aide sur la fonction "DECALER(réf, lignes, colonnes, [hauteur], [largeur])" il est marqué que les lignes et les colonnes sont obligatoire or je ne les vois pas pas dans ta formule puisqu'il y a des ";". Enfin à quoi sert le "-1" dans NBVAL(LISTE!$A:$A)-1). Merci.

Ou alors tu fais :

Private Sub CmbListe_Change()
    Dim n%
    n = CmbListe.ListIndex + 1
    If n > 0 Then ActiveCell.Resize(, 3).Value = _
     [Ville].Cells(n, 1).Resize(, 3).Value
    ActiveCell.Offset(1).Select
End Sub

Ta sélection dans la Combo fera servir les 3 colonnes.

Super c'est ce que je cherchais à obtenir. Merci.

La fonction DECALER c'est :

DECALER(PlageàDécaler;DécalageLigne;DécalageColonne;NombredeLignes;NombredeColonnes)

Pour donner un nom dynamique à une plage (c'est à dire qui s'adaptera à ses variations), on l'utilise ainsi :

=DECALER(CelluleSupérieureGauchedelaPlageàNommer;[rien]on ne décale pas en lignes;[rien]on ne décale pas en colonnes;Nombre de lignes défini par NBVAL dans la colonne -1 pour l'en-tête (ne faisant pas partie de la plage nommée);s'il y a lieu le nombre de colonnes soit en dur(nombre) soit également par NBVAL dans la ligne d'en-tête)

Mais ne nommer que la 1re colonne suffit le plus souvent, surtout en VBA, où il suffit de la redimensionner (avec Resize)...

A partir d'une plage colonne, voire d'une seule cellule, nommée, on définir par adressage relatif n'importe quelle plage sur la feuille.

Cordialement.

Merci pour cette explication très clair.

Juste une question sur la liste déroulante. Si je souhaite faire apparaître plusieurs colonne au-lieu que d'une je dois faire comment ? C'est façon me permet d'identifié plus surement le choix de la ville si par exemple j'ai des homonymes car deux villes du même nom dans le même département est assez rare.

J'ai essayé de mettre "2" dans les propriété de la liste déroulante de "ColumnCount" pour faire apparaître deux colonnes en laissant "1" dans "BoundColumn" pour que la référence se fasse bien sur la 1ère colonne mais ça ne marche pas.

Encore merci pour ta petite macro et explication.

Oui nombre de colonnes à 2, et petite modif...

Private Sub CmbListe_GotFocus()
    With [Ville].Resize(, 2)
        CmbListe.ListFillRange = .Worksheet.Name & "!" & .Address
    End With
End Sub

Tip top MFerrand. Comme quoi juste un petit chiffre à modifier dans la macro et le pb est réglé .... mais encore fallait-il le savoir

Merci.

Rechercher des sujets similaires à "liste deroulante macro"