Effectuer ma macro pour chaque sélection dans la liste déroulant

Résolu/Fermé
GKI - 11 juil. 2013 à 15:05
galoute67 Messages postés 3 Date d'inscription jeudi 3 octobre 2013 Statut Membre Dernière intervention 16 mars 2016 - 16 mars 2016 à 09:40
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

A voir également:

6 réponses

Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
26 juil. 2013 à 11:59
On va récapéter alors :)

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é.
1
Niquel :)
Merci clément !!!
ça marche dans mon 1er fichier, je l'intégre à mon 2ème fichier là, je croise les doigts !
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
11 juil. 2013 à 23:58
Il est probable qu'un Do ... Loop ou un While .. Wend fasse l'affaire.
0
Merci pour votre réponse !
Mais je débute avec les macro, je ne sais donc pas ce qu'est un Do lopp ou un while wend, pouvez vous m'expliquer comment je l'intègre dans ma macro et ce que ça fait !

Merci beaucoup
0
J'ai regardé un peu sur internet, d'après ce que j'ai compris, il me faudrait plutot un FOR EACH mais je ne suis pas sûr, le problème étant qu'il faudrait faire dérouler la liste des dates (filtre automatique) une par une

je ne sais pas si je suis très claire

merci beaucoup
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 18/07/2013 à 16:18
Si tu as la liste des dates possibles dans un range, tu peux effectivement utiliser un For Each :

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)
0
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
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
19 juil. 2013 à 13:45
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é
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
19 juil. 2013 à 13:47
PS : il faudrait que tu mettes la macro que tu as enregistré pour qu'on voie ce qui ne va pas
0
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.
0
Est-ce que vous pensez que c'est possible?
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
22 juil. 2013 à 09:25
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...
0
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
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
23 juil. 2013 à 14:21
Bonjour,

Sans le fichier, ça reste difficile à comprendre !!!
Essaies de le rendre anonyme avec des information "bidons" mais réalistes.
0

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

Posez votre question
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
23 juil. 2013 à 16:04
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 ?
0
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
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
23 juil. 2013 à 16:29
Quand tu dis sur date et équipe , c'est à dire la colonne A et la colonne C ?
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 23/07/2013 à 16:37
Et toute cette discussion pour automatiser l'étape :
faire filtre automatique sur date et équipe

J'ai tout compris ! Je m'y atèle :-)
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
23 juil. 2013 à 16:57
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.
0
oui, c'est ça
j'ai fait la manip sur chaque ligne pensant qu'une macro ne saurait pas faire la distinction.
Mon but est d'avoir le tableau feuil4 au final avec une ligne par date (colonne A) et par équipe (colonne C).

merci

c'est vraiment super gentil de m'aider :)
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
24 juil. 2013 à 10:21
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 ?
0
Tu as modifié quelque chose dans la macro? Je ne comprend pas ce que tu veux dire

oui je supprime à la main ce qu'il y a dans la feuil4 ce n'est pas ce qui prend le plus de temps
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
24 juil. 2013 à 14:25
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
0
la ligne
ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Clear dans la macro mise en forme ne fonctionne pas
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
24 juil. 2013 à 16:08
Hmm
Tu as bien pris toute la macro du fichier txt, sans réutiliser les anciennes macros ?
Chez moi ça fonctionne...
0
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?
0