Problème avec nom défini dynamiquement

Lolote83

XLDnaute Barbatruc
Bonjour à tous,
Je rencontre un problème qui nécessite vos interventions.
Comment se fait-il qu'alimenter un combobox via un nom défini non dynamiquement fonctionne alors que si ce même combobox est défini via un nom dynamique cela ne fonctionne pas. (Les comboBox ne sont pas inclus dans un formulaires mais directement sur la feuille Excel)

Vous trouverez donc dans le fichier joint 2 onglets.

- Un onglet OK avec les explications et le résultat qui marche
- Un onglet NON avec les explications mais avec des résultats incompréhensibles.

Un grand merci à tous ceux qui oseront se casser la tête sur ce problème.
Cordialement
Lolote83
 

Pièces jointes

  • Problème avec nom défini dynamiquement.xls
    84.5 KB · Affichages: 58
Dernière édition:
G

Guest

Guest
Re : Problème avec nom défini dynamiquement

Bonjour,

A cause du recalcul automatique à chaque fois que dans le code tu modifies une cellule ex: [L11]= Combobox2.Listindex. Calcul qui rapelle une mise à jour de la source du combox. Mise à jour qui appelle l'évènement Change du Combox etc., etc....

proposition:
Code:
Private Sub ComboBox2_Click()
    Application.Calculation = xlCalculationManual
    [L8] = ComboBox2.Column(0)
    [L9] = ComboBox2.Column(1)
    [L10] = ComboBox2.Column(2)
    [L11] = ComboBox2.ListIndex
    Application.Calculation = xlCalculationAutomatic
End Sub

A+

[Edition] la méthode de Dranreb ci-dessous est celle que je privilegie également.
 
Dernière modification par un modérateur:

Dranreb

XLDnaute Barbatruc
Re : Problème avec nom défini dynamiquement

Bonjour.
J'avais déjà entendu parlé, par des confrères d'ExcelDownload, de bug concernant les propriétés ListFillRange et RowSource lorsque des noms de plage dynamiques leurs sont assignées. Mais je ne les avais jamais constatées moi même, car j'ai toujours limité leur emploi au strictes plages fixes (quitte à les rectifier dans d'autre partie de l'appli si leur taille change). Dans tous les autres cas qui ne nécessitent pas carrément un remplissage ligne par ligne au moyen d'AddItem, je renseigne la propriété List du combobox. Ici, cela peut se faire ainsi:
VB:
Private Sub Worksheet_Activate()
Me.ComboBox2.Object.List = [xBaseDyn].Value
End Sub
Cordialement.
 
Dernière édition:

Lolote83

XLDnaute Barbatruc
Re : Problème avec nom défini dynamiquement

Merci Hasco, Dranreb,
En ce qui concerne la méthode de Dranreb, j'ai le message suivant qui apparait :
"Erreur d’exécution 70, Permission refusée"
Quand à ta solution asco, je l'avais aussi testée mais le résulta était le même.
Je continue mes recherches.
Merci encore à vous deux.
Cordialement
Lolote83
 

Lolote83

XLDnaute Barbatruc
RESOLU Problème avec nom défini dynamiquement

Salut Hasco,
Trop vite répondu. Ta solution marche.
Quand je t'ai dis que j'avais testé, je n'avais pas inscrit les deux lignes suivantes qui sont dans ton code et qui annule le calcul automatique.
Application.Calculation = xlCalculationManual
........
Application.Calculation = xlCalculationAutomatic
Donc un GRAND MERCI à vous deux
Cordialement
Lolote83
 
Dernière édition:
G

Guest

Guest
Re : Problème avec nom défini dynamiquement

Re,


Pour faire fonctionner la solution de Dranreb, ôter '.Object'
Code:
Private Sub Worksheet_Activate()
ComboBox2.List = Feuil1.Range("xBaseDyn").Value
End Sub

A+
 

Dranreb

XLDnaute Barbatruc
Re : Problème avec nom défini dynamiquement

Non, le "Permission refusée" vient de ce que la la propriété ListFillRange n'a pas été nettoyée de la fenêtre de propriété.
Mais c'est vrai que la propriété List du contrôle est apparemment accessible directement comme membre de ComboBox2 bien que ça ne puisse pas être un ComboBox (les feuille de calcul ne supportent pas ce genre d'objet directement)
 

Discussions similaires

Réponses
26
Affichages
762
Réponses
12
Affichages
721