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 :

EXCEL Combox : impossible de sélectionner un texte hors liste


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 25
    Points
    25
    Par défaut EXCEL Combox : impossible de sélectionner un texte hors liste
    Bonjour

    J’utilise Excel 10 sur Windows7 Home Premium. Mon problème est simple.
    J’utilise une combox (nommée ici Cbx_Tiers) dont le ListFillRange est constitué
    par une liste de noms (1 seule colonne). Cette liste se trouve sur une autre feuille (Sheet("TiersList") et est définie par le nom : Name = ‘EchTiersDirList’. Le paramètre MatchRequired de la Cbx = False.

    Cette Combox fonctionne parfaitement tant que je sélectionne un sujet de la liste.
    Je voudrais pouvoir saisir un nouveau nom, l’utiliser et qu’il soit rajouté à la liste existante. Mais cela ne fonctionne pas ! En saisissant un nouveau nom, le programme passe à Cbx_TiersDirlist.Change dès la 1ère lettre et n'affiche que celle-ci.

    J’ai introduit le code suivant dans la procédure Cbx_TiersDirlist.Change:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Cbx_TiersDirList.ListIndex = -1 Then
        Cbx_TiersDirList.AddItem Cbx_TiersDirList.Value
    End If
    Le message d’erreur est invariablement: Run-time Error ‘70’ Permission denied,
    même si j’introduis le code ‘Cbx_TiersDirList.clear’ avant la ligne ‘.AddItem’.
    Quelle est la bonne solution ?

    Merci

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    J’utilise une combox (nommée ici Cbx_Tiers) dont le ListFillRange est constitué
    Il s'agit donc d'une combobox liée à une plage de cellules. Elle ne peut être modifiée séparément.
    Quelle est la bonne solution ?
    modifier la plage de cellules à laquelle la combobox est liée. Cette modification sera automatiquement apportée à la combobox qui y est liée.

    PS : Bien évidemment : redéfinir au besoin l'adresse de la propriété ListFillRange (en cas de modification de la dimension de la plage liée)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 25
    Points
    25
    Par défaut Par défaut EXCEL Combox : impossible de sélectionner un texte hors liste
    Bonjour Unparja

    Merci de ta réponse.

    Cela veut dire que si un nouveau nom est ajouté directement dans la ComboBox, il faut l'ajouter séparément à la fin de la liste servant de référence au 'ListFillRange' de la ComboBox. Donc le fait d'ajouter un nouveau nom ne modifie pas automatiquement la ListFillRange liste.

    Dans mon cas, le nom (Name) de cette liste est réajusté automatiquement. Donc pas besoin ici de le réajuster.

    Je vais tester cela dès que possible et te ferais part de mes résultats.
    Merci, Jacksun

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 25
    Points
    25
    Par défaut Par défaut EXCEL Combox : impossible de sélectionner un texte hors liste
    Citation Envoyé par Jacksun Voir le message
    Bonjour Unparja

    Merci de ta réponse.

    Cela veut dire que si un nouveau nom est ajouté directement dans la ComboBox, il faut l'ajouter séparément à la fin de la liste servant de référence au 'ListFillRange' de la ComboBox. Donc le fait d'ajouter un nouveau nom ne modifie pas automatiquement la ListFillRange liste.

    Dans mon cas, le nom (Name) de cette liste est réajusté automatiquement. Donc pas besoin ici de le réajuster.

    Je vais tester cela dès que possible et te ferais part de mes résultats.
    Merci, Jacksun
    Bonjour,

    Je n'ai pas pu aller plus loin. Toujours impossible de saisir un nouveau mot dans la ComboBox car, comme je le mentionnais dans ma demande originale (ci-dessous) la ComboBox n'accepte que la 1ère lettre du nouveau mot...

    Je voudrais pouvoir saisir un nouveau nom, l’utiliser et qu’il soit rajouté à la liste existante. Mais cela ne fonctionne pas ! En saisissant un nouveau nom, le programme passe à Cbx_TiersDirlist.Change dès la 1ère lettre et n'affiche que celle-ci.
    Je n'ai pas trouvé quel(s) paramètre(s) de la ComboBox l'empêchent d'accepter le mot en entier? Où est mon erreur?

    Jacksun

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    comme l'a très précisément souligné unparia,

    si tu utilises la propriété ListFillRange pour remplir ta combobox, alors il est impossible d'ajouter un élément depuis la combobox.
    tu dois impérativement ajouter l'élément dans la plage source, et redimensionner au besoin ta plage nommée. L'élément apparaîtra ainsi automatiquement dans ta combobox.

    le plus simple (entre autres),c'est de réserver une cellule excel près de ta combobox, et dans l'évènement Change de Worksheet, détecter une saisie dans cette cellule afin de procéder à l'ajout de l'élément dans la liste source s'il n'existe pas déjà.
    et, petit conseil, modifie la propriété "Style" de ta combobox pour la passer en 2-fmStuleDropDownList afin d'empêcher la saisie manuelle dans cette combobox, qui ne se prête pas du tout à la configuration de ton objet (fillrange et souhait d'ajout d'éléments à la volée)

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 25
    Points
    25
    Par défaut EXCEL Combox : impossible de sélectionner un texte hors liste [Résolu]
    J'ai bien dû admettre qu'une ComboBox ne permet pas l'ajout automatique d'un nouvel élément.
    Suite à vos informations qui m'ont été indispensables, j'ai procédé comme suit:
    J'ai créé une Textbox" TB_Tiers" à côté de la ComboBox "CBx_Tiers" existante et ajouté la ligne "Nouveau ===>"
    à la liste RowSource "EchTiersList" existante avec le code suivant dans la partie "Change" de la ComboBox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Cbx_Tiers_Change()
    If Me.Cbx_Tiers = "<=Nouveau=>" Then
    Me.Cbx_Tiers.Enabled = False
    With Me.TB_Tiers	
        .Enabled = True	
        .Visible = True	
        .Value = ""	
        .SetFocus	
    End With		
    End If		
    End Sub
    de cette façon un nouvel élément peut être saisi dans la TextBox et ajouté à la liste "EchTiersList" de la RowSource
    la liste "EchTiersList" se trouvant sur la page "EchList"
    par une procedure dans Private Sub TB_Tiers_AfterUpdate()

    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
     Private Sub TB_Tiers_AfterUpdate()
    'Check for presence of the new Tiers in the existing EchTierList
     
    If UF21_Saisir.TB_Tiers <> "" Then
        TiersPresent = False
        For x = 3 To 19   'To LastTiersListRow
            If Sheets("TiersList").Cells(x, 2) = UF21_Saisir.TB_Tiers Then
                TiersPresent = True
            End If	
        Next		
        If Not TiersPresent Then
            resp = MsgBox("Ajouter ce Tiers à la liste des Tiers?", vbYesNo)
            If resp = vbYes Then   ' (6)
                'Add Tiers to EchTiersList
                Call Update_EchTiersList
                Call Mod_Echéancier.SortTiers
                Sheets("TiersList").Visible = False
            End If	
        End If		
    End If		
    End Sub
    Je te remercie toi et Unparia de vos bons conseils qui m'ont été très utiles et indispensables.

    Ce cas est ainsi résolu, mais je regrette de ne pas avoir découvert le tag "Résolu" à gauche en bas de page ni ailleurs.


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

Discussions similaires

  1. [WD-2010] Impossible de sélectionner du texte dans un document Word
    Par dede_bo dans le forum Word
    Réponses: 5
    Dernier message: 01/08/2016, 15h44
  2. Réponses: 0
    Dernier message: 26/10/2014, 15h32
  3. Impossible de sélectionner le contenu de champs input de type texte sur IE 6 / 7
    Par Lo-chan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/06/2008, 16h23
  4. Réponses: 6
    Dernier message: 14/06/2007, 12h13

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