Excel: macro boucle menu deroulant et enregis

Résolu/Fermé
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
-
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
-
Bonjour,

Je sollicite une dernière fois votre aide.

Voici mon fichier de travail fortement optimisé depuis la dernière fois.
En effet, comme le fichier devenait énorme, j'ai opté pour remplacer tous les onglets par un seul qui est dynamique (via un menu deroulant)

http://www.cijoint.fr/cjlink.php?file=cj201011/cijN131mdl.zip
http://www.cijoint.fr/cj201011/cijN131mdl.zip

Ma question est:
Comment faire une macro qui sélectionne le premier choix de la liste déroulante (voir onglet "generateur") et qui ensuite enregistre avec le raccourci clavier Ctrl+M ?
etc jusqu'au dernier choix de la liste.

(je suis aussi preneur d'une sollution alternative !)

Merci d'avance pour vos réponses éclairées.

8 réponses

Messages postés
24292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 janvier 2022
7 039
Bonsoir,

Perso, je n'ai pas tout compris, si tu pouvais détailler un peu plus...
Comment faire une macro qui sélectionne le premier choix de la liste déroulante (voir onglet "generateur")
Comprendre depuis l'item sélectionné ?
et qui ensuite enregistre avec le raccourci clavier Ctrl+M ?
Quoi et où ?
etc jusqu'au dernier choix de la liste.

eric
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
244
Bonsoir eriiic,

voila ce que ça donnerait pas à pas. dans l'onglet "generateur"

j'exécute la macro avec un raccourci clavier.

le premier choix du menu déroulant est sélectionné
les données sont filtrées en ordre décroissant sur la colonne A puis non-vides sur la colonne B.
les colonnes B et C (jusqu'à la ligne 10050) sont sélectionnées puis copiées dans un fichier texte.
Le fichier texte (.html) est "killé" s'il existe déjà puis enregistré avec le nom en cellule A1.

et ça recommence avec le deuxième choix du menu déroulant , etc, jusqu'au dernier.


Pour info:
j'ai pensé, (peu être à tort) , que je pouvais utiliser un menu déroulant pour passer d'une page à l'autre (elle se régénère automatiquement) et qu'il serait possible de l'utiliser en boucle , en exécutant en alternance ma "vielle" macro (dans le module 2) . (ou plutot une variante de la macro du module3, avec le kill fichier, que je n'utilise plus avec cette nouvelle version light de mon fichier, 15Mo au lieu de 200Mo)
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
244
---
Messages postés
24292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 janvier 2022
7 039
Bonjour,

Lorsque l'on choisi dans la liste déroulante aucun filtre n'est effectué. Normal ?
Il n'y a aucune macro récupérable à lancer ?
Pareil pour la sauvegarde ?

Et filtrer sur quoi ? Il n'y a pas de champ correspondant à la liste...

eric
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
244
Bonjour eriiic,

la liste déroulante sert juste à modifier les cellules A6 et A3 (nom de la catégorie et numéro de page)
ensuite toute le reste de la page se met à jour automatiquement.


La macro du module 2 (Ctrl+M) sert au filtrage/enregistrement des colonnes B et C, mais il n'y a pas de kill fichier. et il n'y a pas de boucle.
la macro du module 3 (Ctrl+E) servait à l'époque où il y avait un onglet par page à générer, il y a un kill fichier dans cette macro.
la macro du module 1 (Ctrl+J) sert juste à tout défiltrer pour avoir une page propre.
la mocro de la Feuil "générateur" sert à générer la liste des pages.

Le filtrage ne correspond pas aux champs de la liste mais bien à :
les données sont filtrées en ordre décroissant sur la colonne A puis non-vides sur la colonne B.

En effet, les cellules non-vides de la colonne B ne seront pas les mêmes en fonction du contenu des cellules A6 et A3 .
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
244
Bonsoir,

Un grand merci eriiic pour ton aide précieuse . j'aurais peut être du déployer mon énergie à apprendre le PHP et les bases SQL , mais ce n'est que partie remise ^^

j'ai finalement résolu le problème. Mon super fichier "Base de donnée&générateur de site" fait maintenant 13Mo au lieu de 216Mo. Ca mouline mieux ! et du coup je conserve ta macro avec le kill fichier (qui peut le plus, peut le moins^^)


Private Sub CommandButton1_Click()

menu0 'sélectionne la première valeur de la liste
Macro1 'enregistre la page

Dim x As Integer

'Boucle nombre de pages -1 (cellule I5)
For x = 1 To Cells(5, 9).Value

menu1 'sélectionne la valeur suivante
Macro1 'enregistre la page

Next x

End Sub

Sub menu0()
' Touche de raccourci du clavier: Ctrl+m sélectionne la première valeur de la liste
ComboBox1.ListIndex = 0
End Sub

Sub menu1()
' Touche de raccourci du clavier: Ctrl+z sélectionne la valeur suivante de la liste
ComboBox1.ListIndex = ComboBox1.ListIndex + 1
End Sub
Messages postés
24292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 janvier 2022
7 039
Bonsoir,

J'étais justement en train de regarder ton fichier et je pense que tu aurais dû demander plus tôt car tu aurais pu prendre une autre direction ( dans la mesure ou ce fichier à pour seul but de fabriquer les fichiers html)

Par exemple avoir une feuille avec les infos essentielles sur les films, et une autre de paramètres pour construire les fichiers html avec en-tete et pied du document, et par ligne les parties constantes à compléter avec les données de l'autre feuille.
La macro aurait écrit directement les lignes fabriquées dans le fichier html
Je pense que ça aurait été plus léger et plus simple que de fabriquer des pages intermédiaires dans excel pour enregistrer les fichiers ensuite.

eric
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
244
Re-bonsoir,

Effectivement les temps de traitement sont assez longs. (10 minutes pour 47 pages). J'aurais au moins appris à faire une boucle et appeler d'autres macros; tout n'est pas perdu ^^

http://www.cijoint.fr/cj201011/cijeF8vR1l.zip