EXCEL MACRO LISTE DEROULANTE

Fermé
tekitizi Messages postés 5 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 18 avril 2009 - 15 avril 2009 à 18:18
 tekitizi - 16 avril 2009 à 16:02
Bonjour,


Cela fait plusieurs mois que je bosse sur un projet de finance que j'ai presque finalisé.

Je dispose d'un classeur excel, présentant la rentabilité d'un produit.

Toutes les informations contenues dans ce classeur sont reliées au code produit contenu dans cette liste déroulante (obtenue via la validation de données).


Je souhaiterai maintenant y ajouter une macro, qui me permette de:

- faire défiler ma liste de produit un par un (il y en a environ 600),
- laisser une vingtaine de secondes la machine tourner afin qu'elle aille chercher les données dans les classeurs sources,
- une fois que les données sont affichées pour un produit il faut que la macro copie l'ensemble de la feuille,
- et la colle en format et valeur dans un nouveau classeur qui portera le nom du produit présent dans ma liste déroulante, afin d'enregistrer le classeur dans un emplacement prédéfini
-imprimer la feuille du produit
- et passer au produit suivant

si quelqu'un pouvait etre assez gentil pour m'aider... cela fait des mois que je suis sur ce projet.

Merci par avance

Ben
A voir également:

6 réponses

hich24 Messages postés 1619 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 11 avril 2023 752
16 avril 2009 à 10:55
au lieu de mettre votre liste par validation
1- insére une liste : menu Affichage > Barre d'outil > boite a outils controle

2- vous aller voire une boite a outil , il faut choiisir une liste ( deroulante si vous vouler )

3- insere la liste sur la feuille

4- la je ne sais pas comment sont posissioner vos donné ( combien de colonne ? , une feuille ou ? , combien de classeur ? ..)
1
hich24 Messages postés 1619 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 11 avril 2023 752
15 avril 2009 à 18:26
1- combien de classeur ?
2- comment sont enregistré les données dans ces classeur ?
3- quelle sont les crétere de recherche ?


*- tu peut aussi ( si c'est pas confidentielle ) mettre le fichier sur cette adress : http://www.cijoint.fr/
sinon on vas essayer de faire ca en pas a pas
0
tekitizi Messages postés 5 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 18 avril 2009
15 avril 2009 à 20:08
Bonjour, et merci de répondre aussi rapidement.

Alors voila, je bosse comme analyste financier, donc jpeux pas trop de communiquer les données...

Ce qui se passe dans mon fichier excel, ce que j'ai une liste de 600 produits avec des codes, tous numérotés de 100 à 1000.
Certains possèdent la lettre L, tel que 775L ou 815 ..

Ces codes me sont essentiels pour l'architecture de mon fichier, car le changement de produit se fait actuellemnt par une liste déroulante (via la validation de donées) qui adapte ce code au milieu d'une séquence ="France"&"CODEPRODUIT"&"Marque"...

Cette clé sert ensuite de code pour aller rechercher d'autres informations codées de la même facon, qui sont réparties sur d'autres fichiers excel sur le réseau.
A cette fin, j'ai jugé utile d'employer le INDEX;MATCH;MATCH, mais cela prend du temps pour charger les données de chaque produit, et effectuer toute une série de calculs, pour finalement me presenter un graphique de rentabilité par produit.

Le fichiermarche parfaitement en soit, la liste déroulante fonctionne très bien, et les codes sont retrouvés, mais si je change de produit, il me faut environ 20 secondes pr le chargement. Une simple macro ne détecte pas le changement de produit via la liste déroulante :-(

Je n'y connais absolument rien en macro, ni en script, mais je pense qu'une macro me permettant d'afficher simplement le code produit en cellule B6 resoudrait la premiere partie du pb. L'ensemble des codes produits sont présents dans une liste en colonne CP, mais comment les afficher un à un ?

il reste encore à enregistrer un classeur par produit, en lui attribuant son code, tel que "marque"100.xls ou "marque"630L.xls, et ce dans un emplacement precis.

Dans l'idéal cette macro devrait lancer une impression du document au moment du saving..

Si vous savez faire tout ca, wouaaaahhh, et merci bcp !
0
qmike Messages postés 1506 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 18 juin 2012 594
16 avril 2009 à 11:02
bonjour
tu trouveras des exemples de listes déroulantes ici et surtout comment récupérer les données issues de ces listes déroulantes
http://bvrve.club.fr/Astuces_Michel/excelliste.html
bonne journée
0
Bonjour,

Merci pour ces eclaircissement.
En fait, la nuit portant conseil, j'ai zapé la partie liste déroulante, et j'ai mis en place une macro qui vient faire une recherchev sur le code produit.

Je me retrouve avec ce script au final

Sub testcopy()
'
' testcopy Macro
' Macro recorded 16/04/2009 by Temp
'

'
Dim i As Integer
For i = 1 To 4
Range("D3").Select
Selection.Copy
Range("C3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False


ActiveWorkbook.Save

monfichier = "C:\RESULTATS RESEXP\" & "EAB_" & Sheets("Rentaprod").Range("b6").Value

If Dir(monfichier & ".xls") <> "" Then
MsgBox ("Un fichier de ce nom existe déjà, veuillez le supprimer/déplacer avant nouvelle copie")
Else
monfichier = monfichier & ".xls"


ActiveWorkbook.SaveAs Filename:= _
monfichier, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False


End If

Next i
Workbooks.Open Filename:= _
"N:\RESEXP\Renta\Rentaprod.xls"

MsgBox ("Fichiers créés dans C:\RESULTATS RESEXP\")

End Sub


Tout va bien, je desire seuelement ajouter troisoptions en plus qui sont: -

- bloquer l'assistant office qui me demande d'aller rechercher les lien ds les fichiers externes (ces fichiers n'ont pas bougé depuis la creation de ma macro, je ne comprend pas pkoi il veut les rechercher... ms comment le bloquer?
-fermer le fichier créer (parque ce quepour l'instant j'ai un test avec i= 1 à 4, mais en vrai j'aurai i= 1 à 600...
- ajouter une impression du doc pour chacune des feuilles créés
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hich24 Messages postés 1619 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 11 avril 2023 752
16 avril 2009 à 12:10
pour l'mpression :

Sheets("Feuil2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

change le nom de feuille 2 pour selui qui vous convient
0
TROUVÉ !

Sub SavePrint()
'
' SavePrint Macro
' Macro recorded 16/04/2009 by Gold
'

'
Dim i As Integer
For i = 1 To 4
Range("D3").Select
Selection.Copy
Range("C3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False


ActiveWorkbook.SaveAs "C:\RESULTATS RESEXP\" & "EAB_" & Sheets("Rentaprod").Range("b6").Value


Range("A88:V170").Select
Selection.PrintOut

Next i
Workbooks.Open Filename:= _
"N:\RESEXP\Renta\Rentaprod.xls"

MsgBox ("Fichiers créés dans C:\RESULTATS RESEXP\")

End Sub
0