Excel: macro boucle menu deroulant et enregis
Résolu/Fermé
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
-
Modifié par tchernosplif le 24/11/2010 à 18:45
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 - 26 nov. 2010 à 01:50
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 - 26 nov. 2010 à 01:50
A voir également:
- Excel: macro boucle menu deroulant et enregis
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
8 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
25 nov. 2010 à 00:22
25 nov. 2010 à 00:22
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
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
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
245
Modifié par tchernosplif le 25/11/2010 à 01:34
Modifié par tchernosplif le 25/11/2010 à 01:34
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)
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)
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
245
25 nov. 2010 à 01:34
25 nov. 2010 à 01:34
---
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
25 nov. 2010 à 06:59
25 nov. 2010 à 06:59
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
245
Modifié par tchernosplif le 25/11/2010 à 10:26
Modifié par tchernosplif le 25/11/2010 à 10:26
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 .
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 .
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
245
Modifié par tchernosplif le 25/11/2010 à 22:07
Modifié par tchernosplif le 25/11/2010 à 22:07
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
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
25 nov. 2010 à 22:39
25 nov. 2010 à 22:39
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
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
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
245
26 nov. 2010 à 01:50
26 nov. 2010 à 01:50
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
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