Combiner plusieurs onglets Excel en une seule page

Bonjour,

J'ai cherché sur plusieurs sites et dans le forum mais je n'ai pas trouvé ce que je cherchais...

Je dispose d'un fichier excel dans lequel plusieurs onglets sont présents en bas (le nombre d'onglets peut varier et être assez important (environ 50 ou 100 par exemple). Ces onglets sont composés de deux colonnes avec valeurs en A et en B ainsi que leurs titres.

L'idéal pour moi serait de disposer d'une macro qui me copierait les 2 colonnes de chaque onglet à la suite dans un seul fichier de compilation. De pus, il serait intéressant pour moi de récupérer l'heure de la colonne D2 en tête de chaque colonne B copiée. Enfin si possible, vu que toutes mes colonnes A sont identiques, il faudrait avoir la possiblité de copier uniquement la colonne A du premier onglet, mais toutes les colonnes B de tous les onglets à la suite avec en titre les colonnes D2 pour chaque colonne B.

J'ai mis un fichier en exemple en PJ.

Merci de votre aide,

feuille excel

Bonjour et bienvenue,

Merci de joindre un fichier exemple (avec 2 ou 3 feuilles) et le résultat escompté.

Cdlt.

Bonsoir, ci-joint le fichier qui sera en effet plus parlant...

15test.xlsx (13.41 Ko)

Bonsoir

A tester

Bonsoir Plutonium239, le forum

basique

Sub test()
Dim i As Long, n As Long
    n = 2
    Sheets(1).Range("a1").CurrentRegion.Columns(1).Copy Sheets("Compilation").Cells(1)
    For i = 1 To 3
        With Sheets(i).Range("a1").CurrentRegion
            .Cells(8).Copy Sheets("Compilation").Cells(1, n)
            .Columns(2).Offset(1).Resize(.Rows.Count - 1).Copy Sheets("Compilation").Cells(2, n)
            n = n + 1
        End With
    Next
    With Sheets("Compilation").Cells(1).CurrentRegion
        .Rows(1).BorderAround Weight:=xlThin
        .Borders(xlInsideVertical).Weight = xlThin
        .BorderAround Weight:=xlThin
        .Columns.AutoFit
    End With
End Sub

klin89

Bonjour, j'ai essayé avec celle de klin, voilà ce que ça dit:

erreur d'execution 9

le code:

Sub Compilation_Spectres_UV()

Dim i As Long, n As Long

n = 2

Sheets(1).Range("a1").CurrentRegion.Columns(1).Copy Sheets("Compilation").Cells(1)

For i = 1 To 3

With Sheets(i).Range("a1").CurrentRegion

.Cells(8).Copy Sheets("Compilation").Cells(1, n)

.Columns(2).Offset(1).Resize(.Rows.Count - 1).Copy Sheets("Compilation").Cells(2, n)

n = n + 1

End With

Next

With Sheets("Compilation").Cells(1).CurrentRegion

.Rows(1).BorderAround Weight:=xlThin

.Borders(xlInsideVertical).Weight = xlThin

.BorderAround Weight:=xlThin

.Columns.AutoFit

End With

End Sub


Et si j'essaye de copier coller l'autre code ça me dit "impossible en mode arrêt" et ça me surligne la ligne set F1:

Est-ce que ça vient du fait que j'ai voulu changer le titre ?

ps: je ne connais pas grand chose aux macros ni au codage...

Merci à tous les deux

le code:

Sub Compilation_Spectres_UV()

Dim Col As Integer, NbLg As Long

Dim F1 As Worksheet, Ws As Worksheet

Application.ScreenUpdating = False

Set F1 = Sheets("Compilation")

F1.Cells.Clear

For Each Ws In Sheets

If Left(Ws.Name, 11) <> "Compilation" Then

If NbLg = 0 Then

NbLg = Ws.Range("A" & Rows.Count).End(xlUp).Row

Ws.Range("A1:B" & NbLg).Copy F1.Range("A1")

Ws.Range("D2").Copy F1.Range("B1")

Col = 3

Else

Ws.Range("B1:B" & NbLg).Copy F1.Cells(1, Col)

Ws.Range("D2").Copy F1.Cells(1, Col)

Col = Col + 1

End If

End If

Next Ws

F1.Columns("A").Resize(, Col).AutoFit

End Sub

Bonjour,

le code de Banzai fonctionne très bien mais tu dois voir si ton fichier réel a la même structure que l'exemple envoyé; si un code s'arrête sur une ligne, tu ne sais pas en lancer un autre...

Fais une copie écran au moment où ça s'arrête ou donne ici une copie de la ligne qui sera en jaune

ps: ne pas renommer la feuille "compilation" !

P.

Merci à tous, j'ai réussi tant bien que mal, en copiant collant les onglets de banzai !!

Merci beaucoup

Rechercher des sujets similaires à "combiner onglets seule page"