définir la propriété rowsource et concaténation

alfazoulou

XLDnaute Occasionnel
bonjour le forum.
j'ai un userform qui contient un listbox (listbox1) qui doit afficher les dates figurant dans des plages nommées "janvier2006", fevrier2006" etc... dans chacune de ces plages, les jours du mois "1/1/2006" 2/1/2006 etc...(pour janvier).
Le listbox permet donc de choisir la date à insérer au document.
Si le document correspond au mois "janvier 2006" je voudrais donc que les dates affichées dans le listbox soient celle de janvier 2006.
j'ai une cellule nommé "date_archive_mois" qui renvoie le mois.
j'ai une cellule nommé "date_archive_an" qui renvoie l'année.
Je voudrais donc que la propriété rowsource du listbox face référence à ces deux cellules.
le code ci dessous ne fonctionne pas.

Private Sub UserForm_Activate()

ListBox1.RowSource = Range("date_archive_mois" & "date_archive_an").Value

End Sub

et celle ci non plus.


Private Sub UserForm_Activate()
Dim datemois As String
datemois = Range("date_archive_mois").Value
Dim datean As String
datean = Range("date_archive_an").Value


ListBox1.RowSource = datemois & datean
End Sub
 

alfazoulou

XLDnaute Occasionnel
Re : définir la propriété rowsource et concaténation

Si "date_archive_mois" affiche janvier et que
"date_archive_an" affiche 2006, le listbox devra afficher les données contenues dans la plage nommée "janvier2006" etc...

je crois que c'est mieux comme ça.:)
 

Pierrot93

XLDnaute Barbatruc

alfazoulou

XLDnaute Occasionnel
Re : définir la propriété rowsource et concaténation

Bonjour,

pas sûr d'avoir bien compris, mas il me semble que l'utilisation de la propriété "rowsource" ne soit pas la meilleure dans ce cas. Préférer plutôt la méthode "additem" ou "list", ci-dessous un lien dans la FAQ pour utilisation de ces méthodes...

https://www.excel-downloads.com/threads/vba-alimentation-dune-combobox-ou-dune-listbox.81037/

bonne fin d'près midi
@+

Merci pour ta réponse qui va certainement beaucoup m'aider mais je n'arrive pas à la mettre en pratique.

ListBox1.List = .Range("date_archive_mois" & "date_archive_an").Value

Le code ci dessus ne fonctionne pas et je pense que c'est à cause d'une erreur concernat la concaténation des deux cellules "date_archive_mois" et "date_archive_an" qui devraient normalement renvoyer vers la plage correspondant à (dans ce cas de figure "janvier2006") parce que "date_archive_mois" contient "janvier" et "date_archive_an" contient "2006".

de la même si j'essaye juste de sélectionner cette plage par le code ci dessous et sans parler de listbox, ça ne fonctionne pas.
Range("date_archive_mois" & "date_archive_an").Select
 

alfazoulou

XLDnaute Occasionnel
Re : définir la propriété rowsource et concaténation

Je reformule ma question.

J'ai 2 cellules nommées "date_archive_mois" (cellule X) et "date_archive_an"( cellule Y), elle affichent des valeurs variables en fonction de la date du document par exemple "janvier" et "2006".
J'ai plusieurs plages de cellules (Plages Z) nommées "janvier2006", fevrier2006", etc
Comment sélectionner la bonne plage Z en fonction des valeurs dans les cellules variables contenues dans les cellules X et Y ????

J'ai essayé
Range("date_archive_mois" & "date_archive_an").Select
en vain.

Merci pour vos réponses
 

alfazoulou

XLDnaute Occasionnel
Re : définir la propriété rowsource et concaténation

je crois avoir compris.
Une fois de plus j'ai un probleme lié à un espace en trop.
la cellule "date_archive_an" contient la formule suivante:
=DROITE(date_archive;4)
la cellule "date _archive" contient la date choisie par l'utilisateur ex janvier 2006
La cellule"date_archive_mois" contient la formule:
=SUBSTITUE(date_archive;date_archive_an;"")
Donc la concaténation des deux donne le texte "janvier 2006"
alors que je pensais avoir "janvier2006" qui correspond à la plage que je veux trouver.
Or Je ne peux pas renommer cette plage avec l'espace.
 

alfazoulou

XLDnaute Occasionnel
Re : définir la propriété rowsource et concaténation

un fichier exemple pour mieux comprendre le problème.
ou comment supprimer l'espace dans le résultat de la concaténation
=CONCATENER(date_archive_mois;date_archive_an)
qui donne "janvier 2006" alors que la plage à trouver se nomme "janvier2006"
 

Pièces jointes

  • Classeur1.xls
    19.5 KB · Affichages: 110
  • Classeur1.xls
    19.5 KB · Affichages: 111
  • Classeur1.xls
    19.5 KB · Affichages: 104

alfazoulou

XLDnaute Occasionnel
Re : définir la propriété rowsource et concaténation

j'ai résolu une partie du problème en utilisant la fonction SUBSTITUE qui remplace l'espace par "rien" mais comment faire écrire le code qui sélectionne la plage nommé comme le texte contenu dans une autre cellule nommée?
 

alfazoulou

XLDnaute Occasionnel
Re : définir la propriété rowsource et concaténation

j'ai contourné le problème par le code suivant pour ceux que ça intéresse.

Sub Titi()
Dim tutu As String
tutu = Range("date").Value

Application.Goto Reference:=tutu
End Sub

"date" étant la cellule contenant la fonction SUBSTITUE
 

alfazoulou

XLDnaute Occasionnel
Re : définir la propriété rowsource et concaténation

par contre je bloque toujours lamentablement sur mon probleme du départ à savoir remplir mon listbox avec les données contenues dans la plage "janvier2006"
j'ai essayé la solution préconisée par Pierrot93 avec la methode List

Sub Titi()
Dim tutu As String
tutu = Range("date").Value

Application.Goto Reference:=tutu

ListBox1.List = tutu
End Sub

le fichier joint permettra peut être à une âme charitable de me venir en aide.
 

Pièces jointes

  • Classeur2.xls
    30.5 KB · Affichages: 92
  • Classeur2.xls
    30.5 KB · Affichages: 96
  • Classeur2.xls
    30.5 KB · Affichages: 99

hamcec

XLDnaute Nouveau
Re : définir la propriété rowsource et concaténation

Bonsoir le forum,

Plusieurs solutions à ton problème :
ListBox1.RowSource = Range("janvier2006").Address
Ou
ListBox1.RowSource = Range(Range("date")).Address
Ou
ListBox1.RowSource = Range(Trim(Range("date_archive_mois")) & Trim(Range("date_archive_an"))).Address

Hamcec
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 274
Membres
103 503
dernier inscrit
maison