Sélectionner une plage de cellule selon le mois

Résolu/Fermé
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 - 19 déc. 2014 à 16:28
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 - 6 janv. 2015 à 14:58
Bonjour,


Encore bien trop débutant sur VBA, je sollicite votre aide.

En faite la question est déjà donnée dans le titre. :)

Comment sélectionner des colonnes selon un critère mois pour ensuite copier/coller les valeurs sur une autre plage?




Plus précisément, voici un fichier exemple:

https://www.cjoint.com/c/DLtqIHF2KCE


Vu que je souhaite apprendre en même temps et que ça passe par de la compröhension, est-ce que vous pouvez mettre des commentaires pour que je sache quelle ligne de code correspond ä quelle manipulation?

Je vous remercie d'avance pour votre aide.



Cordialement,

3 réponses

Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
6 janv. 2015 à 09:07
Hello Via55, Hello Gyrus,

Merci pour vos réponses et bonne année à vous.

J'avoue être tenté par la première solution vu qu'elle semble plus simple et que je vais devoir l'adapter à mon cas en réalité plus complexe.

La macro prend bien compte le fait qu'il y ait 2 fois le même mois et c'est ce qu'il faut.

Dans la solution de Gyrus, je ne comprend pas où se situe le copier/coller.

Sub Macro1()

Dim Mois_C As String
Dim Mois As String

Mois_C = Range("D3")
Mois = Range("J10:AG10")

'Copier Coller Mois_C

Cells.Find(Mois_C).Activate

Row((Mois_C), 3 To 10)




End Sub


J'aimerais développer ce code pour faire un copier/coller en fonction du mois d'une plage différente à chaque fois vers des fichiers tous similaires.

Par exemple, je choisi novembre alors sur la plage 1 il fait le copier/coller de janvier à novembre vers le fichier 1. Puis il va vers la plage 2 pour refaire la même chose. Et ainsi de suite pour une vingtaine de fichier et de plages.

Ma question est: où est-ce que je dois insérerer le code pour ouvrir le fichier et préciser où se fait le copier/coller dans ton code ci-dessus?


Cordialement,
1
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
6 janv. 2015 à 09:19
Du coup j'ai intégré le code pour ouvrir le fichier vers lequel le copier coller doit être fait.

Je l'ai écrit en-dessous de la ligne " 'Copier Coller Mois_C".

Mais là j'ai un message d'erreur qui s'affiche:

"Erreur de compilation
Instruction incorrecte à l'extérieur de type"

Je ne comprend pas, mais alors pas du tout!
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2 > Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016
6 janv. 2015 à 11:33
Changement de code. Je suis parti sur la version de Via55. J'ai alors pu intégrer des modifications telles que la plage de copier/coller. Ainsi la macro prend une plage et la colle dans un autre fichier où je veux.

Le problème est que sur l'exemple très simple, j'avais mis qu'une seule plage à copier/coller.

En fait il y en a plusieurs qui sont rangées à la ligne.

Première plage de J à AG ensuite de AH à BE et ainsi de suite.

J'ai donc démultiplié le code pour qu'il s'occupe dans un premier temps de la preimière plage puis ensuite de la deuxième plage, etc etc

Mais je bloque dès la seconde plage. En effet, je n'arrive pas à sélectionner la bonne plage pour le copier coller.

Je vous joins mon fichier exemple avec la macro.

https://www.cjoint.com/?0AglOUwORRD

Les fichiers destinataires sont des classeurs vides (pour l'exemple).


Cordialement
0
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703 > Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016
6 janv. 2015 à 14:12
Bonjour

1° pour que les 2 parties de la macros s'enchainent il faut supprimer le 1er End if et le 2eme If not intersect ..., puis changer les plages qui sont effacées (ActiveSheet.Range("F8:AC17").ClearContents) sinon tu vas effacer ce qui a été copié par la 1ere partie de la macro et changer également l'endroit à partir duquel coller la plage (ActiveSheet.Range("F8").Select) sinon même problème !

2° dans la seconde partie de la macro la fonction MATCH renvoie dans la variable col le rang de la valeur trouvée dans la plage, comme la 2eme plage est décalée de 34 par rapport au départ il faut aussi décaler de 34 dans la ligne de copie
ActiveSheet.Range(Cells(13, 34), Cells(22, col+34)).Select

Cdlmnt
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
6 janv. 2015 à 14:58
Formidable! Tout fonctionne sur mon fichier exemple. Reste plus qu'à refaire ça pour le cas réel.


Merci beaucoup à vous deux!


Cordialement,
0