VBA - Compilation de plusieurs plages de différentes feuilles dans une seule

Skyna

XLDnaute Occasionnel
Bonjour à tous,

J'ai besoin d'aide concernant une macro que je ne parviens pas à réaliser.

Le but est de compiler dans le 1er onglet "Compilation" (dans cet exemple ils font partie du même classeur mais en réalité il y aura plusieurs classeurs dans un même dossier) :
- Les éléments des onglets suivants (qui peuvent aller de For i = 2 To Sheets.Count (car pas de limite de feuilles)
- Les éléments doivent être collés dans la feuille "Compilation" "en valeur" les uns en dessous des autres (première ligne vide)
- Les éléments à coller sont les plages allant de la cellule B7 à la dernière cellule de la colonne "Q" non vide (plages qui varient d'une feuille à l'autre)

Pouvez-vous me venir en aide svp?

Merci.
 

Pièces jointes

  • Compilation_Feuilles.xlsm
    31.4 KB · Affichages: 48

Skyna

XLDnaute Occasionnel
Bonjour,

J'avoue ne pas m'y retrouver dedans..

Je ne parviens pas à faire une boucle pour sélectionner les feuilles les unes après les autres en repassant par la feuille "Compilation" et pour ce qui est de la sélection de la plages des feuilles 2 à i j'ai fait ça :

Sub SelectPlage()

Dim maPlage As Range
Dim DernLigne As Long, DernColonne As Integer
'dernière ligne colonne Q
DernLigne = Range("Q" & Rows.Count).End(xlUp).Row
'dernière colonne ligne 1
DernColonne = Cells(5, Cells.Columns.Count).End(xlToLeft).Column
Set maPlage = Range(Cells(7, 1), Cells(DernLigne, DernColonne))
maPlage.Select

End Sub

Merci
 

Skyna

XLDnaute Occasionnel
Bonsoir Staple1600 et merci de me répondre,

- Pour le chemin ce sera un chemin basic sur le bureau appelé par exemple "DOSSIER EXCEL"
- Pour les extensions j'aime bien travailler avec les .xlsb qui prennent moins de place que les autres et qui acceptent les vba
- les valeurs à copier dans le classeur joint sont des lettres, en réalité ce sera des lettres et des chiffres. je pense qu'avec un copier - collage spécial valeur cela devrait aller
 

Staple1600

XLDnaute Barbatruc
Re

Voici une macro testée sur ton fichier joint (*nettoyée au préalable) qui fonctionne
(cette macro est un exemple pour compiler les feuilles d'un même classeur)
VB:
Sub a()
Dim ws As Worksheet, x&
For Each ws In Worksheets
If ws.Name <> "Compilation" Then
x = ws.Cells(Rows.Count, "H").End(3).Row
ws.Range(ws.Cells(7, "B"), ws.Cells(x, "Q")).Copy
Sheets("Compilation").Cells(Rows.Count, "B").End(3)(2).PasteSpecial xlValues
Application.CutCopyMode = False
End If
Next
End Sub

*: ce qui veut dire sans trous
 

Skyna

XLDnaute Occasionnel
Merci , beaucoup cela fonctionne bien en effet.
Par contre, si je souhaite effectuer cette macro depuis un autre classeur, qui serait nommé "Synthèse" par exemple qui va récupérer tous les onglets différents de l'onglet nommé "Compilation" présents dans les x classeurs sous le dossier "DOSSIER EXCEL" situé sur le bureau, comment puis-je intégrer cela (si cela est possible)?
 

Discussions similaires

Réponses
3
Affichages
457

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou