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 :

Paramétrer Cellules d'une Liste Déroulante Intuitif code VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    ingénieur Chef de Projet
    Inscrit en
    Octobre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ingénieur Chef de Projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2017
    Messages : 15
    Par défaut Paramétrer Cellules d'une Liste Déroulante Intuitif code VBA
    Bonjour,
    Dans le code ci-dessous, [emprunté sur le très bon site de Jacques Boisgontier: (http://boisgontierjacques.free.fr/) et qui fonctionne très bien] je voudrais pouvoir paramétrer les cellules Ax:Ay de telle sorte que si j'intercale des lignes supplémentaires dans le tableau je n'ai pas besoin de modifier le code VBA.
    Existe-t-il une solution?
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect([Ax:Ay], Target) Is Nothing And Target.Count = 1 Then
    a = Application.Transpose(Sheets("Feuille1").Range("Donnees").Value)
    Me.ComboBox1.List = a
    Me.ComboBox1.Height = Target.Height + 3
    Me.ComboBox1.Width = Target.Width
    Me.ComboBox1.Top = Target.Top
    Me.ComboBox1.Left = Target.Left
    Me.ComboBox1 = Target
    Me.ComboBox1.Visible = True
    Me.ComboBox1.Activate
    Me.ComboBox1.DropDown
    Else
    Me.ComboBox1.Visible = False
    End If
    End Sub
    ----------------------

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bojour,



    a = Application.Transpose(f.Range("a2:a" & f.[A65000].End(xlUp).Row))


    Boisgontier
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Homme Profil pro
    ingénieur Chef de Projet
    Inscrit en
    Octobre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ingénieur Chef de Projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2017
    Messages : 15
    Par défaut
    Merci Jacques de ce retour.
    Une précision toutefois:
    Dans votre exemple joint (DVSaisieIntuitiveComboBox-2), à la fauille "Saisie", si j'insère une nouvelle ligne entre lignes 2 et 16, la liste n'est pas active à la cellule A17.
    Mon problème est le paramétrage de la zone de saisie: Range("A2:A16") dans votre exemple et non pas le paramétrage de la liste des données BD: (f.Range("a2:a" & f.[A65000].End(xlUp).Row)).
    Désolé de ne m'être pas bien expliqué dans mon message d'origine.
    Pierre

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Solution 1:

    Set zSaisie = Range("A2:A10000")

    Solution 2:

    Set zSaisie = Range("A2:A" & [A65000].End(xlUp).Row + 1)

    Boisgontier

  5. #5
    Membre averti
    Homme Profil pro
    ingénieur Chef de Projet
    Inscrit en
    Octobre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ingénieur Chef de Projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2017
    Messages : 15
    Par défaut
    Les deux solutions proposées fonctionnent mais ne répondent pas exactement à mon problème.
    Dans votre exemple (DVSaisieIntuitiveComboBox-2), mon souhait est d'avoir la liste accessible dans les cellules A2 à A17 si j'insère une nouvelle ligne entre la ligne 2 et la ligne 16, A2 à A18 si j'insère deux nouvelles lignes entre la ligne 2 et la ligne 16 et ainsi de suite.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    -Nommer le champ A2:A16 zsaisie

    Set zSaisie = Range("zsaisie") ' Range("A2:A16")

    Le champ sera agrandi automatiquement en cas d'insertion de ligne.


    Boisgontier

  7. #7
    Membre averti
    Homme Profil pro
    ingénieur Chef de Projet
    Inscrit en
    Octobre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ingénieur Chef de Projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2017
    Messages : 15
    Par défaut
    Parfait, c'était bien simple et comme toujours il suffisait d'y penser (où de le savoir)
    J'aurais du faire l'essai sans vous importuner.
    Merci encore
    Pierre

  8. #8
    Membre averti
    Homme Profil pro
    ingénieur Chef de Projet
    Inscrit en
    Octobre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ingénieur Chef de Projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2017
    Messages : 15
    Par défaut
    Je reviens dans cette discussion car j'ai constaté que sur une feuille ayant ce code VBA (voir mon premier message initiateur de ce fil de discussion), les fonctions bien utiles "Annuler" et "Rétablir" sont partiellement inopérantes.
    Confirmation, solutions ou suggestions sont les bienvenues.
    Pierre

Discussions similaires

  1. [XL-2007] [Excel 2007] Coordonnées d'une cellule via une liste déroulante
    Par macErmite dans le forum Excel
    Réponses: 1
    Dernier message: 06/10/2014, 10h42
  2. Réponses: 3
    Dernier message: 18/12/2012, 10h08
  3. Réponses: 2
    Dernier message: 24/08/2011, 07h47
  4. [QtGui] Transformer une cellule en une liste déroulante
    Par nancy maman dans le forum PyQt
    Réponses: 3
    Dernier message: 04/04/2011, 18h15
  5. remplir une liste déroulante en code behind
    Par tortuegenie dans le forum ASP.NET
    Réponses: 1
    Dernier message: 06/03/2008, 18h58

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