XL 2016 Boucler sur les ComboBox

GeoTrouvePas

XLDnaute Impliqué
Bonjour tout le monde,

Dans mon classeur, j'ai plusieurs feuilles comportant le même combobox nommé "ComboProjet".
Ces Combobox vont être chargés avec la même liste de données et seront liés (la modification de l'un modifiera les autres).

J'ai donc créé la routine suivante pour les charger :

VB:
    For Each Feuille In ThisWorkbook.Sheets
        For Each Ctrl In Feuille.OLEObjects
            If Ctrl.Name = "ComboProjet" Then
                Ctrl.Object.List = temp
                Ctrl.LinkedCell = Feuille.Range("Zone_NProjet")
                Ctrl.Object.ListIndex = Ctrl.Object.ListCount - 1
            End If
        Next
    Next

Le chargement s'effectue sans problème mais la cellule liée (LinkedCell) ne fonctionne pas.

Auriez vous une idée de ce qui ne va pas dans mon code ?
 

GeoTrouvePas

XLDnaute Impliqué
@BrunoM45

Bonjour et merci pour ta réponse,

La réponse était assez évidente (vu que c'était la seule ligne où je n'utilisais pas Object) et j'ai oublié de préciser que j'avais déjà tester.
Bon cela dit je viens de trouver et il s'agissait de la plage nommée Zone_NProjet qui était mal définie....

Désolé pour le dérangement
 

GeoTrouvePas

XLDnaute Impliqué
@mutzik

Bonjour et merci pour ta réponse
Effectivement je viens de constater mon erreur et je galère pour la réparer, mon fichier ne marche plus du tout alors que je dois le présenter dans la journée.

En fait j'ai plusieurs feuilles identiques comportant toutes un Combobox "ComboProjet".
Je voulais que ces combobox soient synchronisés (la modification de l'un entraine la modification des autres) et possède la même cellule liée (situé sur une feuille masqué qui effectue tous les calculs.

Comment je pourrais faire ça ?
 
C

Compte Supprimé 979

Guest
Bonjour le fil, salut GeoTrouvePas

Une combobox sur une feuille ne peut contenir une simple adresse, sinon elle ne pointe pas au bon endroit
Pour revenir sur ce qu'à dit mutzik, il faut mettre l'addresse de la cellule avec le nom de la feuille :
VB:
Ctrl.Object.LinkedCell = "NomFeuille!Cellule"
ou si le nom de la feuille contient des espaces
VB:
Ctrl.Object.LinkedCell = "'Nom de la Feuille'!Cellule"
Cellule est l'adresse de la cellule (par exemple : $A$1)

A+
 

GeoTrouvePas

XLDnaute Impliqué
@BrunoM45

Bonjour,

Je ne comprends pas ce que tu veux dire par "Une combobox sur une feuille ne peut contenir une simple adresse, sinon elle ne pointe pas au bon endroit"

Sinon je viens de modifier mon linkedcell par :
VB:
Ctrl.LinkedCell = "'Récap info'!Zone_NProjet"

et ça fonctionne impeccable. Merci pour votre aide !
 
C

Compte Supprimé 979

Guest
Re,

Je ne comprends pas ce que tu veux dire par "Une combobox sur une feuille ne peut contenir une simple adresse, sinon elle ne pointe pas au bon endroit"

Sinon je viens de modifier mon linkedcell par :
VB:
Ctrl.LinkedCell = "'Récap info'!Zone_NProjet"
et ça fonctionne impeccable. Merci pour votre aide !

C'est simple ;-)

Mutzik t'as donné le code
VB:
Ctrl.Object.LinkedCell = Feuille.Range("Zone_NProjet").address
Ce qui veut dire que la valeur inscrite dans la cellule liée de ta combobox est uniquement l'adresse de "Zone_NProjet". Ta cellule nommée (par exemple : A2) est dans la feuille "Récap info"

On peut donc traduite l'instruction VBA donnée par Mutizik, par :
VB:
Ctrl.Object.LinkedCell = A2
Et c'est là, que tu ne pointes pas au bon endroit, puisque la cellule "A2" est celle de ta feuille ou se trouve la combobox

Il faut donc ajouter avant, comme tu l'as fait, le nom de la feuille ;)

Est-ce clair maintenant ?
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin