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 :

Combobox dans feuille [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut Combobox dans feuille
    Bonjour,

    J'ai un code qui permet d'afficher un combobox dans une feuille de classeur. A la différence d'une cellule avec "donnée" "validation" "liste", il permet de saisir de façon intuitive l’élément à sélectionner dans la liste.

    Bémol: j'aimerai pouvoir l'étendre à 100 cellule de ma colonne F.

    Voici le code pour la cellule F23, comment le rendre valable pour F23 à F123?

    Merci


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Address = "$F$23" Then 'Peut-on "dupliquer" sur une plage F23 à F123 par exemple?
     
        f = Sheets("FT").Range("Acteur").Value
        Me.ComboBoxChoixActeur.List = f
        Me.ComboBoxChoixActeur.Height = Target.Height + 3
        Me.ComboBoxChoixActeur.Width = Target.Width + 50
        Me.ComboBoxChoixActeur.Top = Target.Top
        Me.ComboBoxChoixActeur.Left = Target.Left
        Me.ComboBoxChoixActeur.Font.Size = 12
        Me.ComboBoxChoixActeur = Target
        Me.ComboBoxChoixActeur.Visible = True
        Me.ComboBoxChoixActeur.Activate
      Else
        Me.ComboBoxChoixActeur.Visible = False
     
     End If
     
     
    Private Sub ComboBoxChoixActeur_Change()
     ActiveCell.Value = Me.ComboBoxChoixActeur
    End Sub
     
    Private Sub ComboBoxChoixActeur_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
      Me.ComboBoxChoixActeur.List = f
      Me.ComboBoxChoixActeur.Activate
      Me.ComboBoxChoixActeur.DropDown
    End Sub
     
    Private Sub ComboBoxChoixActeur_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
      If KeyCode = 13 Then ActiveCell.Offset(1).Select
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    au hasard et de manière estivale et donc avec fainéantise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     nb_a_afficher = 100
     ComboBox1.ListFillRange = Range(Target, Target.Offset(nb_a_afficher)).Address
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    au hasard et de manière estivale et donc avec fainéantise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     nb_a_afficher = 100
     ComboBox1.ListFillRange = Range(Target, Target.Offset(nb_a_afficher)).Address
    End Sub
    Le hasard ne fait toujours bien les choses.
    Ta proposition, sauf erreur de ma part, a pour effet de mettre dans la propriété du combobox ListFill "F23:F123".
    Et provoque un plantage lorsque je sélectionne F23. Mais rien ne se passe si je sélectionne F24 ou F25...

    Pour réparer, il faut que je supprime "F23:F123" dans les propriété de la combobox.

    Pour être plus clair, ce que la macro fait en sélectionnant F23, j'aimerai le le rependre jusqu’à F123 .

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si l'idée est de produire le comportement de ta procédure Worksheet_SelectionChange sur la plage F23:F123, le plus simple serait de simplement modifier le test réalisé sur Target

    Ici, tu te bases sur l'adresse, je te propose un double test sur Target sous ces modalités :

    - Si la colonne est F (propriété .Column = 6)
    ET
    - Si la ligne est comprise entre 23 et 132 ( propriété .Row >= 23 And .Row <= 123)
    ALORS
    ==> on y va

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    si l'idée est de produire le comportement de ta procédure Worksheet_SelectionChange sur la plage F23:F123, le plus simple serait de simplement modifier le test réalisé sur Target

    Ici, tu te bases sur l'adresse, je te propose un double test sur Target sous ces modalités :

    - Si la colonne est F (propriété .Column = 6)
    ET
    - Si la ligne est comprise entre 23 et 132 ( propriété .Row >= 23 And .Row <= 123)
    ALORS
    ==> on y va
    Merci pour la proposition mais je ne sais pas la mettre en oeuvre.
    Par contre j'ai testé ceci, ça marche mais très long à écrire. Comment peut-on faire mieux avec un Offset ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Address = "$F$23" Or Target.Address = "$F$24" Or Target.Address = "$F$25" Then 'Peut mieux faire?

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    à la volée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Column = 6 And Target.Row >= 23 And Target.Row <= 123 And Target.Count = 1 Then
    ou en version à étage si c'est plus facile pour ta relecture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        If Target.Column = 6 _
        And Target.Row >= 23 _
        And Target.Row <= 123 _
        And Target.Count = 1 Then
            ' traitement
        End If
    et en souhaitant alléger avec un with
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        With Target
            If .Column = 6 _
            And .Row >= 23 _
            And .Row <= 123 _
            And .Count = 1 Then
                ' traitement
            End If
        End With

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

Discussions similaires

  1. [XL-2010] Combobox dans feuille sans doublon
    Par Defter dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 04/01/2012, 09h55
  2. Réponses: 2
    Dernier message: 30/10/2008, 13h28
  3. Mettre la valeur d'une combobox dans une feuille Excel
    Par biche1 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/10/2008, 13h56
  4. créer un comboBox dans une feuille de mon classeur
    Par Masmeta dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/08/2008, 14h52
  5. créer un comboBox dans une feuille de mon classeur
    Par mimi31110 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/07/2008, 17h12

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