OVH Cloud OVH Cloud

Excel, ListFillRange dans une autre feuille

13 réponses
Avatar
LaurentC
Bonjour Í  tous

Dans une feuille j'ai une liste de nom dans la colonne A, cette zone
dynamique (décaler+nbval) est nommée "UnTitreMesTitres".
A coté j'ai un ComboBox nommé "UnTitreCbxTitre".

Dans le code de cette feuille, j'ai mis
Private Sub Worksheet_Activate()
ActiveSheet.UnTitreCbxTitre.ListFillRange Range("UnTitreMesTitres").Address
End Sub

Ca fonctionne, la liste proposée par le ComBox est bien la liste
attendue.
Si je déplace cette zone nommée dans une autre feuille ça ne fonctionne
plus ;-(

Au secours !!!
S'avez vous faire pointer le ListFillRange d'un ComboBox vers une zone
nommée située sur une autre feuille du classeur ?

Merci pour votre aide.
@+Laurent

3 réponses

1 2
Avatar
MichD
Le 06/09/22 Í  07:34, MichD a écrit :
Le 05/09/22 Í  07:51, LaurentC a écrit :
Peut être bien que c'est lÍ  qu'est l'os !
A la fin, il faudra que ça fonctionne avec la zone suivante
ÞCALER(TblPositions[Titre];NBVAL(TblListeComptes[NomCompte]);;NBVAL(TblPositions[Titre])-NBVAL(TblListeComptes[NomCompte]))
Elle appelle 2 tableaux : TblPositions Í  l'onglet Positions et
TblListeComptes Í  l'onglet ListeCompte.
Pour le moment si j'essaye de faire simple, avec la zone nommé
suivante ça ne passe pas
=TblPositions[Titre]
Encore un autre truc
Worksheets("UnTitre").UnTitreCbxTitre.ListFillRange >> Range("TblOpérations[Titre]").Address
qui ne va pas !!! Grrrr
Pire
Worksheets("UnTitre").UnTitreCbxTitre.ListFillRange >> Worksheets("Opérations").Range("TblOpérations[Titre]").Address
renvoie les valeurs de la page UnTitre et qui ont l'adresse recherchée
dans la page Opérations !!!
Je ne comprends définitivement plus rien :-(((
Merci
@+Laurent

Bonjour,
J'ai créé 3 plages nommées.
tata :    =TblPositions[Titre]
Attention : Moi j'ai utilisé "Compte" comme étiquette de colonne et non
"MonCompte" dans mon exemple
toti :    =NBVAL(TblListeComptes[Compte])+2  'Mon étiquette de colonne
MyRange:  ÞCALER(Tata;Toti;;;)
En VBA, pour remplir ton combbox
'------------------------------------------
Sub Worksheet_Activatess()
With Range("MyRange")
    X = .Parent.Name & "!" & .Address
End With
'Si ton combobox émane de la barre d'outils "Activex"
ActiveSheet.OLEObjects("UnTitreCbxTitre").ListFillRange = X
'Si ton combobox émane de la barre d'outil "Formulaire"
Worksheets("Feuil2").Shapes("toto").ControlFormat.ListFillRange > "Feuil1!A1:A10" ' Range("UnTitreMesTitres").Address ' "A1:A3"
End Sub
'------------------------------------------
MichD

Une petite correction Í  ce que je proposais et qui correspond Í  la
formule "Decaler(...) de la question.
J'ai créé 4 plages nommées.
tata : =TblPositions[Titre]
''Attention : Moi j'ai utilisé "Compte" comme étiquette de colonne et non
"MonCompte" dans mon exemple
toti : =NBVAL(TblListeComptes[Compte])
Tobi : =NBVAL(TblPositions[Titre])-NBVAL(TblListeComptes[Compte])
MyRange: ÞCALER(Tata;Toti;;;Tobi)
En VBA, pour remplir ton combbox
'------------------------------------------
Sub Worksheet_Activatess()
With Range("MyRange")
X = .Parent.Name & "!" & .Address
End With
'Si ton combobox émane de la barre d'outils "Activex"
ActiveSheet.OLEObjects("UnTitreCbxTitre").ListFillRange = X
'Si ton combobox émane de la barre d'outil "Formulaire"
ActiveSheet.Shapes("toto").ControlFormat.ListFillRange = x'
End Sub
'------------------------------------------
MichD
Avatar
MichD
Le 06/09/22 Í  10:38, MichD a écrit :
Le 06/09/22 Í  07:34, MichD a écrit :
Le 05/09/22 Í  07:51, LaurentC a écrit :
Peut être bien que c'est lÍ  qu'est l'os !
A la fin, il faudra que ça fonctionne avec la zone suivante
ÞCALER(TblPositions[Titre];NBVAL(TblListeComptes[NomCompte]);;NBVAL(TblPositions[Titre])-NBVAL(TblListeComptes[NomCompte]))
Elle appelle 2 tableaux : TblPositions Í  l'onglet Positions et
TblListeComptes Í  l'onglet ListeCompte.
Pour le moment si j'essaye de faire simple, avec la zone nommé
suivante ça ne passe pas
=TblPositions[Titre]
Encore un autre truc
Worksheets("UnTitre").UnTitreCbxTitre.ListFillRange >>> Range("TblOpérations[Titre]").Address
qui ne va pas !!! Grrrr
Pire
Worksheets("UnTitre").UnTitreCbxTitre.ListFillRange >>> Worksheets("Opérations").Range("TblOpérations[Titre]").Address
renvoie les valeurs de la page UnTitre et qui ont l'adresse
recherchée dans la page Opérations !!!
Je ne comprends définitivement plus rien :-(((
Merci
@+Laurent

Bonjour,
J'ai créé 3 plages nommées.
tata :    =TblPositions[Titre]
Attention : Moi j'ai utilisé "Compte" comme étiquette de colonne et non
"MonCompte" dans mon exemple
toti :    =NBVAL(TblListeComptes[Compte])+2  'Mon étiquette de colonne
MyRange:  ÞCALER(Tata;Toti;;;)
En VBA, pour remplir ton combbox
'------------------------------------------
Sub Worksheet_Activatess()
With Range("MyRange")
     X = .Parent.Name & "!" & .Address
End With
'Si ton combobox émane de la barre d'outils "Activex"
ActiveSheet.OLEObjects("UnTitreCbxTitre").ListFillRange = X
'Si ton combobox émane de la barre d'outil "Formulaire"
Worksheets("Feuil2").Shapes("toto").ControlFormat.ListFillRange >> "Feuil1!A1:A10" ' Range("UnTitreMesTitres").Address ' "A1:A3"
End Sub
'------------------------------------------
MichD

Une petite correction Í  ce que je proposais et qui correspond Í  la
formule "Decaler(...) de la question.
J'ai créé 4 plages nommées.
tata :    =TblPositions[Titre]
''Attention : Moi j'ai utilisé "Compte" comme étiquette de colonne et non
"MonCompte" dans mon exemple
toti :    =NBVAL(TblListeComptes[Compte])
Tobi :    =NBVAL(TblPositions[Titre])-NBVAL(TblListeComptes[Compte])
MyRange:  ÞCALER(Tata;Toti;;;Tobi)
En VBA, pour remplir ton combbox
'------------------------------------------
Sub Worksheet_Activatess()
With Range("MyRange")
    X = .Parent.Name & "!" & .Address
End With
'Si ton combobox émane de la barre d'outils "Activex"
ActiveSheet.OLEObjects("UnTitreCbxTitre").ListFillRange = X
'Si ton combobox émane de la barre d'outil "Formulaire"
ActiveSheet.Shapes("toto").ControlFormat.ListFillRange = x'
End Sub
'------------------------------------------
MichD

Et pour finir, on peut définir seulement une plage nommée "MichD",
C'est plus court et simple en utilisant la procédure du message
précédent. Modifier "Compte" pour "MonCompte" tel que défini dans la
formule initiale.
MyRange :
ÞCALER(TblPositions[Titre];NBVAL(TblListeComptes[Compte]);;NBVAL(TblPositions[Titre])-NBVAL(TblListeComptes[Compte]))
MichD
Avatar
LaurentC
Bonjour MichD
Ca y est, ça maaaaAAAARRRRCHHHhheeee !
C'est bien un controle ActiveX.
En fait c'est passé en précisant la Worksheets
With Worksheets("Positions").Range("PositionsSansCash")
X = .Parent.Name & "!" & .Address
End With
ActiveSheet.OLEObjects("UnTitreCbxTitre").ListFillRange = X
Mille merci
@+Laurent
1 2