• Initiateur de la discussion Initiateur de la discussion Blues
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Blues

Guest
Bonjour Forum,

J'essaye de créer une macro qui une fois lancée, irait chercher les infos d'une colonne d'un autre classeur excel, à travers une selection de colonne, et les afficheraient dans un menu déroulant de mon UserForm de mon classeur actif (cf. image jpg en annexe).

Cependant, j'ai un premier problème, c'est que ma macro ne veut pas s'afficher dans le lanceur de macro. Donc, déjà là, je ne peux pas l'essayer. Aurais-je manquer une ligne, fais une faute de syntaxe, etc... Et comme je suis débutant, j'ai souvent du mal à cerner les problèmes quand je n'ai pas l'aide du deboggeur.

Ensuite, je ne sais pas comment stipuler le fait qu'il doive aller chercher les informations dans l'autre classeur, pour selectionner le nom des colonnes, et les afficher dans une liste ? Et ensuite, les lui faire ecrire, dans mon classeur en cours. J'ai tenté une approche, mais elle me parait incomplète. Si qqlu arrive à trouver déjà mon prob concernant le lanceur de macro... Puis si le temps, juste regarder la macro dans le fichier joint...

Merci d'avance
 

Pièces jointes

Salut
le code del'userform n'apparait pas dans les macros
pour lance l'userform tu as une macro a faire
sub affiche()
userform1.show
end sub
la reference à l'objet va le charger en memoire (explicatio de Laurent Longres)
pour les information dans le combobox
dans la section initialize de l'userform
Combobox1.ColumnCount=1
Combobox1.rowsource="feuil1!A2:A12"
ceci donnant les cellule A2 à A12 de la feuille 1 du classeur Actif
à partir là je suis dans le peut etre :
en rajoutant le chemin du fichier devant le localisation il est possible qu'excel aille prendre ses données à la source mentionnée
Cordialement
G.David
 
Bonjour G.David,

Merci pour l'info concernant le lanceur. Maintenant je peux la lancer. Par contre, le code ne fonctionne pas, mais j'avance au moins au pas. En fait, je pense qu'il me manque le lien entre le classeur indices et le classeur actif. Vu qu'il doit switcher entre les deux --> aller chercher les infos dans le classeur indices, mais les afficher dans le classeur actif, il doit merder lors de l'affichage...

J'essaie donc d'avancer au pas, mais cest de la vrai me..e ! Aller
courage, ne baissons pas les bras. D'ici la fin de la journée,
j'arriverais au moins à la faire tourner sans plantage (même si elle
fait pas ce que je désire tant pis). 2 pas un avant, 5 en arrière,
mais ne pas perdre espoir, la lumière est au bout du tunnel... Ou
serait-ce les flammes de l'enfer, et de l'eternité... Glups

Merci encore...
 
Bon, voilà impossible à la faire fonctionner en tant soit peu. Si vous arrivez à jeter un coup d'oeil, et à me dire ce qui ne joue pas... Normalement c'est censé ouvrir un autre classeur, récupérer sous forme de liste les noms des colonnes à partir de "D2" --> D2 ; E2 ; F2 ; etc...

Et en même temps récupérer dans le classeur ouvert à l'origine (donc celui qui a lancé la macro), sous forme de liste les dates présentes dans la colonne A (à partir de "A3" --> A3 ; A4 ; A5 ; etc...).

Mais je n'arrive pas à le faire. Je me perds entre - j'imagine - le switchage entre les 2 pages. Siouplait, aidez moi , voilà la partie du code qui pose soucis :

------------------------------------------------------------------------------------------------------------------------------------------------------

Private Sub UserForm_Activate()

Dim ActWB As Workbook
Set ActWB = ActiveWorkbook 'permet après de selectionner rapidement le classeur d'origine

Workbooks.Open Filename:="U:\test\indices.xls" 'ouvre le classeur d'où les données doivent être récupérer.

Dim i As Integer
Dim p As String

i = 0

Range("D2").Select

LISTEportefeuilles.Clear
For i = 0 To 30

p = ActiveCell.Offset(0, i * 3).Text

if p = "" Then Exit For

p = Right(p, Len(p) - 7)


LISTEportefeuilles.AddItem p
Next i
LISTEportefeuilles.ListIndex = 0

ActWB.Activate

Range("A3").Select
LISTEdates.Clear
For i = 0 To 250
p = ActiveCell.Offset(i, 0).Text

If p = "" Then Exit For

LISTEdates.AddItem p
Next i
LISTEdates.ListIndex = 0

End Sub
 
Re,

J'ai déjà trouvé un semblant de réponse... En fait, une partie du prob (mais seulement une partie) vient de là : p = Right(p, Len(p) - 7)

Une fois ôté mon - 7 qui me permettait avant d'effacer une partie des caractères d'une de mes anciennes macro cela fonctionne tout de suite mieux. Parce que avant, avant le nom de la celulle, il y avait un autre nom de 7 lettre qui devait disparaitre. Dans cette macro, se retrouvant des fois avec des celulles contenant des noms à 4 lettres, on tombait sur un chiffre négatif, ce qui fesait plantés la machine... :sic:

Maintenant mes listes fonctionnent parfaitement, mais je ne sais pas comment faire une petite chose. En fait, j'utilise une formule VLOOKUP, et j'ai besoin d'un numéro de colonne. Cependant mon numéro de colonne dépends du nom que je choisis dans la liste. Donc en fait, il faudrait qu'il se cale par rapport à cela. :

"=IF('U:\test\[indices.xls]Performances mensuelles'!R[3]C2<>"""",VLOOKUP(RC1,'U:\test\[indices.xls]Performances mensuelles'!C2:C52," + TXTcolreturn.Text + ",False),"""")"

J'ai bien une solution, mais je ne sais pas comment l'appliquer. Savez-vous par hasard comment ranger de manière provisoire la valeur de la colonne du nom selectionné (par exemple dans le terme Xcol), et comme cela de pouvoir l'introduire dans ma formule VLOOKUP, afin qu'il puisse écrire la formule ?

Merci encore pour le mal que vous vous donnez.
 
Wlookup ?!? j'ai déjà vu ça sur veriti et veriland avait tradiuit ce terme mais ma memoire avec l'anglais... par contre si tu as ta cellule ou ton nom se situe ne peut tu pas recupéré le numero de colonne de la même façon que l'on récupère un n0 de ligne lg=activecells.row n'y a t il pas d'instruction activecells.column il faudra peut etre activé la cellule reperee avant
Cordialement
G.David
 
Re G.David,

VLOOKUP, est en français la fonction RechercheV. Elle récupère des valeurs dans d'autres feuilles ou classeurs par rapport à un critère (chez moi une date). Mais afin qu'elle puisse récupérer les bonnes valeurs, il faut stipuler la colonne en question.

Sinon, pour ta solution, j'y avait pensé, mais en fait je ne savais pas comment le faire. De plus, après il faut encore que jessaye de l'adapter au reste de mon code. Mais j'essaye ça ce soir ou demain, et je te tiens au courant.

Merci encore.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
392
  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
329
Réponses
3
Affichages
231
Réponses
7
Affichages
459
  • Question Question
Microsoft 365 Bug sur une macro
Réponses
6
Affichages
382
Retour