Macro pour compiler des données les unes a côté des autres

lila2005

XLDnaute Nouveau
Bonjour,

La macro suivante me permet de compiler des données les unes en dessous des autres :
Sub jj()
Dim sh As Worksheet
Application.DisplayAlerts = False
On Error Resume Next
Sheets("Compilation").Delete
Application.DisplayAlerts = True
On Error GoTo 0
Sheets.Add
ActiveSheet.Name = "Compilation"
[a1] = "Compilation"
For Each sh In ActiveWorkbook.Sheets
If sh.Name <> "Compilation" Then
Set plage = sh.Range("v7147:ac7191" & sh.Cells(Rows.Count, "a").End(3).Row)
plage.Copy
Sheets("Compilation").Range("a" & Sheets("Compilation").Cells(Rows.Count, "a").End(3).Row + 1).PasteSpecial Paste:=xlPasteAll
End If
Next
End Sub

J'aimerais compiler des données les unes à côté des autres. Je me suis dit qu'en remplacant "rows" par "columns" ca marcherait mais quand je fais ca l'application ne fonctionne plus. Quelqu'un aurait-il une piste?

Et merci pour le site, il est génial!!!:D
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro pour compiler des données les unes a côté des autres

Bonjour lila,

ce serait quand même plus facile pour te répondre si tu pouvais joindre un fichier avec explications précises de ce que tu attends

Pas très bien compris le fait que tu supprime la feuille "Compilation" et que tu en recrée une directement et qui portera le même nom ?????????????????????
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : Macro pour compiler des données les unes a côté des autres

bonjour lila2005, phlaurent55

essaye en remplaçant
Code:
Sheets("Compilation").Range("a" & Sheets("Compilation").Cells(Rows.Count, "a").End(3).Row + 1).PasteSpecial Paste:=xlPasteAll
par
Code:
Sheets("Compilation").Cells(1, Columns.Count).End(XlToLeft).Offset(0, 1).PasteSpecial Paste:=xlPasteAll

a+
 

lila2005

XLDnaute Nouveau
Re : Macro pour compiler des données les unes a côté des autres

Regarde la pièce jointe Exemple.xls
Salut,
La suppression de la feuille "compilation" me sert s'il y a mise à jour des données et que je dois regénérer la compilation (supprime l'ancienne, me donne une nouvelle).
En pièce jointe tu trouveras un aperçu de ce que je cherche à faire (je l'ai fait manuellement, je voudrais l'automatiser vu le nombre d'onglets dont il s'agit).
En réalité, j'ai un fichier contenant environ 70 onglets. Dans chacun des onglets, sur la même plage se trouve un tableau.
Je dois réunir tous ces tableaux dans un même onglet et les placer les uns à côté des autres. Grâce à la macro ci-dessus, je peux les réunir sur le même onglet mais ils se trouvent les un en dessous des autres.

Voila, j'espère que j'ai été plus claire.

Merci de t'êtr penchée sur mon problème
 

Pièces jointes

  • Exemple.xls
    22 KB · Affichages: 92
  • Exemple.xls
    22 KB · Affichages: 91

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro pour compiler des données les unes a côté des autres

Re, lila,
utilise le code donné par mromain
et remplace ceci
Code:
Set plage = sh.Range("v7147:ac7191" & sh.Cells(Rows.Count, "a").End(3).Row)
plage.Copy
par ( s'il n'y a que la colonne A à copier comme dans ton exemple joint)
Code:
Columns("A:A").Select
    Selection.Copy
sinon, tu adaptes la zone de cellules à copier
 

lila2005

XLDnaute Nouveau
Re : Macro pour compiler des données les unes a côté des autres

Bonjour,

Désolée si j'ai pas été assez précise.J'ai également tenté avec ta méthode, mais ca ne marche toujours pas. Finalement j'ai essayé de contourner le problème en utilisant une autre macro, que je détaille ci dessous. C'est certainement pas le moyen le plus simple (nécéssité de faire la macro pour chaque cellule de mon tableau), mais vu que mon tableau ne comporte que 5-6 lignes et une colonne, c'était plus facile que de chercher une solution au pb. (je suis débutante en vba!)
Merci à tous les deux en tout cas de vous être penchés sur le sujet.

Bonne soirée

Sub recap()
For Each sh In Sheets
Dim i As Integer
i = i + 1
Cells(1, i) = sh.Cells(a,b) : (a,b)représentant une cellule de mon tableau.
Next
End Sub
 

Fo_rum

XLDnaute Accro
Re : Macro pour compiler des données les unes a côté des autres

Salut,

avec une transformation minime à ta première macro
 

Pièces jointes

  • Copie En 1 Onglet.zip
    10.5 KB · Affichages: 51
  • Copie En 1 Onglet.zip
    10.5 KB · Affichages: 49
  • Copie En 1 Onglet.zip
    10.5 KB · Affichages: 52

idiomea

XLDnaute Junior
Re : Macro pour compiler des données les unes a côté des autres

Bonjour à tous,


Le code donné içi est génial est fait ce que je cherche à faire, cepandant, est-ce que quelqu'un peut m'aider à le modifier pour qu'il copie la colone A de chaque 1er onglet de tous les fichiers présent dans le Dossier actif (la où je mettrais le fichier excell contenant la macro)


je remet le code que Fo_rum à modifié pour lila2005 et qui est presque ce que je veuoudrai reussir à obtenir

Code:
Sub jj()
  Dim sh As Worksheet
  Application.DisplayAlerts = False
  On Error Resume Next
  Sheets("Compilation").Delete
  Application.DisplayAlerts = True
  On Error GoTo 0
  Sheets.Add
  ActiveSheet.Name = "Compilation"
  [a1] = "Compilation"
  For Each sh In [COLOR="Red"]ActiveWorkbook[/COLOR].Sheets
    If sh.Name <> "Compilation" Then
      [COLOR="Lime"]Dercol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
      sh.Range("A1:A" & sh.Cells(Rows.Count, "A").End(3).Row).Copy Sheets("Compilation").Cells(1, Dercol + 1)[/COLOR]
    End If
  Next
End Sub

ce que j'ai mis en rouge, peut-on le didouiller pour indiquer : "active directory" ? et ensuite indiquer "first sheet of each file"?
inutile de dire que je suis moins que débutant en VBA

cordialement
Guillaume
 

idiomea

XLDnaute Junior
Re : Macro pour compiler des données les unes a côté des autres

dsl de faire re-remonter ce sujet, j'aurais besoin de pouvoir faire fonctionner cette macro dans le cadre de mon activité professionnelle.


Il faudrait copier la premiere colone de de chaque premier onglet de tous les classeurs d'un dossier contenant jusqu'a 3 sous niveaux de dossiers.

Pour info, il est possible que dans un meme dossier, des classeurs differents aient quand même le même nom de premier onglet (vierge), je ne sais pas si cela pose un problème ou pour le codage


Cordialement
Guillaume
 

idiomea

XLDnaute Junior
Re : Macro pour compiler des données les unes a côté des autres

alors, y a t'il un XLDnaute Barbatruc pour m'aider dans la salle ????


je reposte la modification pour laquelle j'aimerais de l'aide, je joins un fichier qui explique ce que je cherche à faire
je sais que j'ai déjà posté au moins 4 messages à ce sujet mais j'ai besoin de trouver une solution à cet obstacle

le texte :
je souhaite copier toutes les colones L de chaque 1er onglet de tous les fichier présent dans un dossier contenant 3 sous niveaux.
cette colone est le résultat d'une somme, donc il faut oubien créer un lien ou alors un collage spécial.


le code (pas de moi) :
Code:
Sub jj()
  Dim sh As Worksheet
  Application.DisplayAlerts = False
  On Error Resume Next
  Sheets("Compilation").Delete
  Application.DisplayAlerts = True
  On Error GoTo 0
  Sheets.Add
  ActiveSheet.Name = "Compilation"
  [a1] = "Compilation"
  For Each sh In ActiveWorkbook.Sheets
    If sh.Name <> "Compilation" Then
      Dercol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
      sh.Range("L1:L" & sh.Cells(Rows.Count, "L").End(3).Row).Copy Sheets("Compilation").Cells(1, Dercol + 1)
    End If
  Next
End Sub

la piece jointe est comentée pour plus de clareté :

Cordialement
Guillaume
 

Pièces jointes

  • Copie En 1 Onglet.zip
    34.3 KB · Affichages: 50
  • Copie En 1 Onglet.zip
    34.3 KB · Affichages: 45
  • Copie En 1 Onglet.zip
    34.3 KB · Affichages: 44

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 335
Membres
103 521
dernier inscrit
Excellover 21