Effectuer ma macro pour chaque sélection dans la liste déroulant
Résolu
GKI
-
galoute67 Messages postés 3 Statut Membre -
galoute67 Messages postés 3 Statut Membre -
Bonjour,
je suis entrain d'essayer d'automatiser une transformation de données
j'ai ma macro qui fait ce qui va bien pour l'ensemble des lignes qui sorte que je sélectionne une date dans ma liste déroulante
ce que je voudrais faire c'est rajouter dans ma macro le fait qu'elle me fasse cela pour chaque date de ma liste déroulante sans que j'ai besoin de passer à la date suivante manuellement (j'ai plus de 365 jours de date donc ça serait beaucoup trop long).
Merci pour votre aide
je suis entrain d'essayer d'automatiser une transformation de données
j'ai ma macro qui fait ce qui va bien pour l'ensemble des lignes qui sorte que je sélectionne une date dans ma liste déroulante
ce que je voudrais faire c'est rajouter dans ma macro le fait qu'elle me fasse cela pour chaque date de ma liste déroulante sans que j'ai besoin de passer à la date suivante manuellement (j'ai plus de 365 jours de date donc ça serait beaucoup trop long).
Merci pour votre aide
A voir également:
- Effectuer ma macro pour chaque sélection dans la liste déroulant
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Vous devez disposer d'une autorisation pour effectuer cette action - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste code ascii - Guide
6 réponses
On va récapéter alors :)
Ici on compte dans la Feuil1 les lignes qui comportent la même date et la même équipe qui se suivent. Ensuite on sélectionne, on copie colle, et terminé.
Et ici on fait la même chose, on compte les lignes de la Feuil1 qui ont même date et même équipe, on sélectionne, on supprime, et terminé.
Sub copie_données_filtrées() Dim ligne As Integer ligne = 1 Do ligne = ligne + 1 Loop Until Cells(ligne, 1) <> Cells(ligne + 1, 1) Or Cells(ligne, 3) <> Cells(ligne + 1, 3) Range("A1:M" & ligne).Select Application.CutCopyMode = False Selection.Copy Sheets("Feuil3").Select Range("A1").Select ActiveSheet.Paste End Sub
Ici on compte dans la Feuil1 les lignes qui comportent la même date et la même équipe qui se suivent. Ensuite on sélectionne, on copie colle, et terminé.
Sub suppression_dans_la_feuille_1() Dim ligne As Integer ligne = 1 Sheets("Feuil1").Select Do ligne = ligne + 1 Loop Until Cells(ligne, 1) <> Cells(ligne + 1, 1) Or Cells(ligne, 3) <> Cells(ligne + 1, 3) Range("A2:AA" & ligne).Select Selection.Delete End Sub
Et ici on fait la même chose, on compte les lignes de la Feuil1 qui ont même date et même équipe, on sélectionne, on supprime, et terminé.
Il est probable qu'un Do ... Loop ou un While .. Wend fasse l'affaire.
Si tu as la liste des dates possibles dans un range, tu peux effectivement utiliser un For Each :
A la place du msgbox, mettre la procédure qui traite chaque date (la date est dans la variable cell)
Sub test() For Each cell In Range("A1:A10") MsgBox cell 'chaque cell contient le contenu (oui oui...) des cellules de 'A1 à A10 à chaque itération Next End Sub
A la place du msgbox, mettre la procédure qui traite chaque date (la date est dans la variable cell)
J'ai essayé mais cela me refait la formule sur la 1ere ligne en boucle.
Enfait, je voudrais que la macro sélectionne dans le menu déroulant (du filtre automatique) une à une chaque date.
cela donnerait :
sélection date 1 dans menu déroulant (du filtre auto)
fait manip automatique que j'ai enregistré
puis dans le menu déroulant sélectionne date 2
fait manip
ainsi de suite jusqu'à ce que toutes les dates du menu déroulant soient faites
merci
Enfait, je voudrais que la macro sélectionne dans le menu déroulant (du filtre automatique) une à une chaque date.
cela donnerait :
sélection date 1 dans menu déroulant (du filtre auto)
fait manip automatique que j'ai enregistré
puis dans le menu déroulant sélectionne date 2
fait manip
ainsi de suite jusqu'à ce que toutes les dates du menu déroulant soient faites
merci
Quel est l'intérêt de sélectionner automatiquement chaque date une par alors qu'il faut faire toutes les dates ???
Autant toutes les faire directement (sans les sélectionner une à une).
Dans ce cas le code de Morgothal est tout à fait adapté
Autant toutes les faire directement (sans les sélectionner une à une).
Dans ce cas le code de Morgothal est tout à fait adapté
Si je mets toute la macro, ça va faire beaucoup, elle est longue et c'est un peu du bricolage parce que je n'y connais rien et je suis entrain de bidouiller.
enfait l'intérêt de sélectionner les dates une à une, c'est que j'ai plusieurs ligne pour chaque date et que ma macro me permet de regrouper ces différentes lignes en une seule.
enfait l'intérêt de sélectionner les dates une à une, c'est que j'ai plusieurs ligne pour chaque date et que ma macro me permet de regrouper ces différentes lignes en une seule.
Oui c'est possible
Ta macro doit traiter une date que tu choisis à la main.
Le bout de code que j'ai écrit plus haut permet de passer sur chaque date dans la liste.
Il faut donc juste mettre ta macro dans la boucle écrite plus haut, et modifier ta variable date par la variable utilisée dans la boucle...
Ta macro doit traiter une date que tu choisis à la main.
Le bout de code que j'ai écrit plus haut permet de passer sur chaque date dans la liste.
Il faut donc juste mettre ta macro dans la boucle écrite plus haut, et modifier ta variable date par la variable utilisée dans la boucle...
Sub test()
For Each cell In Range("A1:A10")
MsgBox cell 'chaque cell contient le contenu (oui oui...) des cellules de 'A1 à A10 à chaque itération
Next
End Sub
tu parles de celui-ci?
mais je ne voudrais pas choisir la date à la main, je voudrais que ça se fasse tout seul (je demande peut être un peu beaucoup je ne sais pas)
qu'entends tu par modifier la variable date par la variable de la boucle?
Merci
For Each cell In Range("A1:A10")
MsgBox cell 'chaque cell contient le contenu (oui oui...) des cellules de 'A1 à A10 à chaque itération
Next
End Sub
tu parles de celui-ci?
mais je ne voudrais pas choisir la date à la main, je voudrais que ça se fasse tout seul (je demande peut être un peu beaucoup je ne sais pas)
qu'entends tu par modifier la variable date par la variable de la boucle?
Merci
Bonjour,
Sans le fichier, ça reste difficile à comprendre !!!
Essaies de le rendre anonyme avec des information "bidons" mais réalistes.
Sans le fichier, ça reste difficile à comprendre !!!
Essaies de le rendre anonyme avec des information "bidons" mais réalistes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Aah un fichier :-)
Oui le lien cjoint fonctionne bien
Donc avec tout ce qu'on a dit plus haut, je récapète :
Tu souhaites prendre toutes les lignes de chaque date de la colonne A, les copier (ou couper ?)/coller sur une autre feuille, et agréger les lignes selon certains critères pour n'avoir qu'une ligne par date, me trompe-je ?
Quels sont ces critères ?
Oui le lien cjoint fonctionne bien
Donc avec tout ce qu'on a dit plus haut, je récapète :
Tu souhaites prendre toutes les lignes de chaque date de la colonne A, les copier (ou couper ?)/coller sur une autre feuille, et agréger les lignes selon certains critères pour n'avoir qu'une ligne par date, me trompe-je ?
Quels sont ces critères ?
http://cjoint.com/?3GxqfGlLjEm
j'ai changé le fichier les données n'étaient pas représentative
oui c'est ça !
enfait chaque ligne correspond à un voyage jusqu'à une usine
je veux avoir une ligne par jour et par équipe regroupant les données des voyages effectué ce jour la
c'est à dire
date équipe véhicule heure arrivée usine voyage 1 puis heure sortie pour chaque voyage horaire des employées et poids de chaque trajet et au final le nombre de voyage
j'ai mis le déroulé de mes macro dans l'en tete du fichier joint
je le remet ici :
-mise_en_forme
faire filtre automatique sur date et équipe
-copie_données_filtrées
-compilation
-copie_remise_zéro
(les 3 dans recoupement_complet)
-nb_voyage_jour
j'ai changé le fichier les données n'étaient pas représentative
oui c'est ça !
enfait chaque ligne correspond à un voyage jusqu'à une usine
je veux avoir une ligne par jour et par équipe regroupant les données des voyages effectué ce jour la
c'est à dire
date équipe véhicule heure arrivée usine voyage 1 puis heure sortie pour chaque voyage horaire des employées et poids de chaque trajet et au final le nombre de voyage
j'ai mis le déroulé de mes macro dans l'en tete du fichier joint
je le remet ici :
-mise_en_forme
faire filtre automatique sur date et équipe
-copie_données_filtrées
-compilation
-copie_remise_zéro
(les 3 dans recoupement_complet)
-nb_voyage_jour
Il y a quand même des simplifications à apporter :
Il n'y a pas besoin de filtrer par date et par équipe dans le cas où il n'y a qu'une ligne par date et équipe.
Il arrive que des fois il y ait deux fois la même équipe pour une même date, ce sont ces cas là qui sont problématiques...
En dehors de ces cas problématiques, il suffit de prendre ligne à ligne pour que ce soit correct.
Je continue de voir comment intégrer ça à tes macros.
Il n'y a pas besoin de filtrer par date et par équipe dans le cas où il n'y a qu'une ligne par date et équipe.
Il arrive que des fois il y ait deux fois la même équipe pour une même date, ce sont ces cas là qui sont problématiques...
En dehors de ces cas problématiques, il suffit de prendre ligne à ligne pour que ce soit correct.
Je continue de voir comment intégrer ça à tes macros.
Hello
C'est OK, la macro sélectionne maintenant la première ligne s'il n'y a pas d'autres lignes même date/même équipe.
Cependant je ne vois rien dans la macro qui supprime la ligne qui se trouve maintenant dans la feuille4...
Faut-il le rajouter, est-ce une manip que tu fais à la main ?
C'est OK, la macro sélectionne maintenant la première ligne s'il n'y a pas d'autres lignes même date/même équipe.
Cependant je ne vois rien dans la macro qui supprime la ligne qui se trouve maintenant dans la feuille4...
Faut-il le rajouter, est-ce une manip que tu fais à la main ?
J'ai ajouté la suppression dans la Feuil1 de ce qui est ajouté à la feuille 4.
Je t'ai mis toutes les macros dans ce fichier txt, il faut tout mettre dans un module, et supprimer les autres modules (les macros portent le même nom) et lancer ta macro "recoupement_complet".
Voili voilou
Je t'ai mis toutes les macros dans ce fichier txt, il faut tout mettre dans un module, et supprimer les autres modules (les macros portent le même nom) et lancer ta macro "recoupement_complet".
Voili voilou
Oui j'ai repris tout après avoir effacé mes macros de base
mais il me dit :
erreur d'exécution "91:
variable objet ou variable de bloc non définie
et si je clique sur débogage il me met : ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Clear en jaune
cette ligne permet d'ouvrir le filtre auto? Puis les lignes suivante de sélectionner la 1ere ligne du champs 1?
mais il me dit :
erreur d'exécution "91:
variable objet ou variable de bloc non définie
et si je clique sur débogage il me met : ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Clear en jaune
cette ligne permet d'ouvrir le filtre auto? Puis les lignes suivante de sélectionner la 1ere ligne du champs 1?
Merci clément !!!
ça marche dans mon 1er fichier, je l'intégre à mon 2ème fichier là, je croise les doigts !