Impossible de déclarer une combobox.liste avec des cellules
bonsoir à tous,
je dois initialiser mon userform ou se trouve du texte et combobox, le problème est ceci:
liste_pour_tri.List = Worksheets("Pour prog").Range(Cells(52, memo_langue), Cells(81, memo_langue)).Valuesi je l'écris comme suite,
liste_pour_tri.List = Worksheets("Pour prog").Range("A52:A81").Valuesa fonctionne mais cette liste est dynamique et soit elle est en colonne A ou B ou C etc, donc j'ai fait un module que me met dans ma variable "memo_langue" des chiffre 1, 2 , 3 etc etc en fonction de mon choix de colonne puis dans ma déclaration de mon userform j'utilise cette variable pour prendre la bonne colonne en utilisant les Cells
mais si je les utilise pour déclarer ma liste, celle ci ne passe pas et se met en erreur, comment faire pour que sa fonctionne en gardant si possible le Range avec les Cells?
tous les texte et les .Caption eux fonctionne très bien.
voici le code complet:
Private Sub UserForm_Initialize()
memorisation_langue
croissant_decroissant.List = Worksheets("Pour prog").Range("C22:C23").Value
liste_pour_tri.List = Worksheets("Pour prog").Range(Cells(52, memo_langue), Cells(81, memo_langue)).Value
texte_pour_tri = Worksheets("Pour prog").Cells(116, memo_langue)
choix_sens_tri = Worksheets("Pour prog").Cells(117, memo_langue)
Valider.Caption = Worksheets("Pour prog").Cells(118, memo_langue)
Annuler.Caption = Worksheets("Pour prog").Cells(108, memo_langue)
End Submerci de votre aide
Cordialement
Bonjour,
Chez moi aucun soucis, cf fichier joint, si on place 1 en K1 le USF récupère les valeurs de la colonne A, si 2 en K1 alors l'USF récupère les valeurs de la colonne B.
Avez vous déclaré votre variable memo_langue comme publique afin d'assurer sa compatibilité dans le USF ? Pourquoi ne pas l'intégrer dans votre USF ? Quelle est la méthodologie de récupération de cette dernière ?
Option Explicit
Public memo_langue%
Sub memorisation_langue()
memo_langue = [K1]
End SubLa prochaine fois merci de joindre un fichier représentatif afin que nous n'ayons à en reconstituer un de toute pièce.
Cdlt,
Bonjour Ergotamine, merci de votre réponse.
alors oui j'ai bien déclaré ma variable memo_langue en public car je l'utilise dans plusieurs USF et Module.
la récupération de cette variable memo_langue fonctionne dans un module appart ou je lui donne une valeur entre 1 et 6 en fonction de mon choix de colonne 1=A 2=B etc etc et je l'ai déclaré en Long.
mais mon problème vient de cette partie: Range(Cells(52, memo_langue), Cells(81, memo_langue)).value
le programme se met en erreur quand on vient lire cette liste pour y prendre les données.
si je l'écrit de cette façon: Range("A52:A81").value
sa fonctionne très bien mais de la façon précédente qui au final donne le même résultat si ma variable memo_langue =1, on pourrait l'écrire comme suite:
Range(Cells(52, 1), Cells(81, 1)).value
d'où mon questionnement du pourquoi est-ce que cette façon ou j'utilise les Cells ne fonctionne pas. est ce que pour faire une liste je ne dois pas avoir de variable Cells mais uniquement Range?
Bonjour,
Est-ce que la feuille active est bien l'onglet "Pour prog"?
si cela n'est pas le cas, c'est normal..
essaie en y faisant référence (aussi bien au niveau .Range, que .Cells)
With Worksheets("Pour prog")
liste_pour_tri.List = .Range(.Cells(52, memo_langue), .Cells(81, memo_langue)).Value
End WithPeut-être?
merci de votre message cousinhb29,
non ma page active lors du déroulement du USF n'est pas "Pour prog". donc j'ai testé comme vous me l'avez dis et en effet sa fonctionne!
je ne pensais pas qu'il fallait aussi préciser l'onglet ou se trouve les cells étant donner qu'au début de la déclaration je marque bien worksheets("Pour prog").
je l'ai écrit comme ceci pour tester:
liste_pour_tri.List = Worksheets("Pour prog").Range(Worksheets("Pour prog").Cells(52, memo_langue), Worksheets("Pour prog").Cells(81, memo_langue)).Value
en rajoutant le worksheets("Pour prog") avant les cells et sa fonctionne très bien!
encore merci de votre aide!
Bonjour,
Pour tout ce qui est Cells ou Range il vaut mieux le qualifier avec l'objet parent à chaque fois, donc le worksheets.
S'il n'est pas qualifié alors l'objet sera toujours celui actif. Donc ici vous travaillez à partir de Worksheets("Pour prog") pour définir une range, mais avec les valeurs de cells de la feuille active.
C'est pour ça qu'on encadre souvent avec un With Worksheets("Pour prog") et on met un point devant toutes les cells et range.
Cdlt,
merci de ses précision qui me seront utiles. cette erreur n'arrivera plus ou alors si sa arrive je saurai pourquoi.
je voulais quand même vous faire part de ma stratégie pour parer a se problème avant que j'ai votre solution.
j'avais créer une variable de type range ou j'y ai mis mon tableau complet, puis dans ma déclaration de liste j'ai mis le nom de cette variable suivi de columns() et entre parenthèse le numéro de ma colonne que je voulais, dans mon cas la variable memo_langue. ce qui donne:
Set memo_range_1 = Worksheets("Pour prog").Range("A52:F81")
liste_pour_tri.List = memo_range_1.Columns(memo_langue).Valueet comme ceci je vais prendre la colonne 1, 2 ou 3 etc en fonction de ma valeur dans memo_langue. sa fonctionne aussi. voilà si sa peut aussi aider quelqu'un je partage.
bonne continuation et encore merci
Cordialement