Fusionner plusieurs feuilles sur une seule

Bonjour je cherche le code vba afin de fusionner les feuilles 1 à 5 vers synthèse. En sachant que ma sélection doit commencer de la cellule b11 jusqu'à la première ligne vide.

Merci beaucoup pour votre aide

Salut

Essayez ce code

Sub iCopy()

    Dim sh As Worksheet, i As Integer

    For Each sh In ThisWorkbook.Sheets
    For i = 11 To sh.Range("B" & Rows.Count).End(xlUp).Row

        If Not sh.Name = "Synthese" Then
        sh.Cells(i, 2).Resize(1, 8).Copy _
Sheets("Synthese").Range("B" & Range("B" & Rows.Count).End(xlUp).Row + 1)

End If
Next
Next

End Sub

Bonjour,

Ton fichier en retour.

Cdlt.

Public Sub ConsolidateData()
Dim ws As Worksheet, ws2 As Worksheet
Dim lastRow As Long, lRow As Long
Dim rng As Range
    Set ws2 = ActiveWorkbook.Worksheets("Synthèse")
    ws2.Cells(1).CurrentRegion.Offset(1).ClearContents
    lRow = 2
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> ws2.Name Then
            With ws
                lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
                Set rng = .Cells(11, 1).Resize(lastRow - 10, 9)
                rng.Copy Destination:=ws2.Cells(lRow, 1)
                lRow = ws2.Cells(Rows.Count, 1).End(xlUp).Row + 1
            End With
        End If
    Next ws
    ws2.Range("A:I").EntireColumn.AutoFit
End Sub

Merci beaucoup pour votre aide. Dans la réalité je récupéré 14 feuilles et toutes à partir de b47, et mon colonage final va de A à U.

Que dois je modifier dans le code en effet cela ne fonctionne pas.

Je vous remercie beaucoup

Re,

Essaie :

Set rng = .Cells(47, 1).Resize(lastRow - 46, 21)

Au lieu de :

Set rng = .Cells(11, 1).Resize(lastRow - 10, 9)

Voici mon erreur Jean-Eric

capture

Re,

Envoie un petit fichier comme le précédent.

Cdlt.

Voici le fichier à partir de b47 sur les feuilles de 1 à 5.

Merci beaucoup Jean-Eric

Re,

ligne 11, puis 47 et enfin 36!...

Et colonne I, qui devient U qui pour terminer en V!...

Ton fichier en retour.

ALT F8, puis exécuter la procédure que tu souhaites.

Profite de ce long weekend pour te reposer.

Cdlt.

Bonjour Jean-Eric,

Merci de ton retour, mais toujours la même problématique sur la ligne suivante

Set rng = .Cells(47, 2).Resize(lastRow - 46, 22)

Je suis bloqué à cette endroit.

capture

Merci encore une fois de ton aide

Bonjour antho19,

Je te retourne le dernier fichier de Jean-Eric modifié :

À l'ouverture du fichier, tu es sur la feuille "Synthèse"

Ctrl c ➯ Consolidation

Ctrl r ➯ Reset

(pour faire un copier / coller, utilise Ctrl Inser (touche Insertion)

Alt F11 pour voir la macro, puis revenir sur Excel


@Jean-Eric : la ligne qui posait problème était celle-ci :

lRow = ws2.Cells(Rows.Count, 1).End(xlUp).Row + 1

je crois bien qu'il manquait un petit quelque chose :

lRow = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row + 1

(et j'ai fait quelques autres modifs)


j'espère que vous avez tous bien profité de ce long weekend pour vous reposer !

dhany

Bonjour Dhany

Je suis désolé mais je suis toujours bloqué à la même ligne

Set rng = .Cells(47, 1).Resize(lastRow - 46, 22)

Merci par avance

Re,

A quelle ligne doit commencer le traitement ?

Si en ligne 47 il n'y as pas de données, ça va pas le faire.

Cdlt.

En ligne B47

Re,

Et dans ton dernier fichier, où commence les données ?

En colonne 1, ligne 35 ! ; Pas en B47

Il faut être sérieux.

Est-ce que le numéro de ligne de départ est variable ?

Ne devrait on pas créer une plage à partir de la colonne B et rechercher la cellule comportant N°?

Réfléchis avant de répondre.

Cdlt.

Non Jean Eric cela commencera toujours à la ligne B47 pour toutes les feuilles

antho19 a écrit :

cela commencera toujours à la ligne B47 pour toutes les feuilles

Pour la 1ère ligne, j'ai l'impression que tu confonds la ligne des entêtes (qui contient les textes "N°", "Civilité", "Nom", "Prénom", "Age" ...) avec la 1ère ligne de données (ta ligne juste en-dessous, de Madame D)

Vérifie bien que la 1ère ligne de données est la même pour toutes les feuilles qui sont avant la feuille "Synthèse"


Ce 1er fichier est si ta ligne des entêtes est en ligne 46, et donc ta 1ère ligne de données est la ligne 47 :


Ce 2ème fichier est si ta ligne des entêtes est en ligne 47, et donc ta 1ère ligne de données est la ligne 48 :


Pour les 2 fichiers, même utilisation que précédemment :

Ctrl cConsolidation ; Ctrl rReset

À te lire pour avoir ton avis.

Si tout est ok, merci de cliquer sur la coche V (près du bouton EDIT) pour passer le sujet en résolu

(toi seul peut le faire, car c'est toi qui a créé le sujet de cette discussion).

dhany

Je suis vraiment désolé Dhany mais j'ai toujours le même bug sur la même ligne.

Je te renvoie le fichier qui ressemble exactement au miens.

Merci beaucoup pour votre aide

Bonjour antho19,

Comme tu as écrit « cela commencera toujours à la ligne B47 pour toutes les feuilles », j'avais pensé que ton B est juste une erreur de frappe, donc dans les 2 fichiers de mon message précédent, les tableaux des 5 premières feuilles commencent en colonne A.

Maint'nant, si c'était pas une erreur de frappe et que tes tableaux commencent vraiment en colonne B, voici les versions correspondantes de mes 2 fichiers précédents :

Attention : pour ton tableau de la feuille "Synthèse", je l'ai laissé comme avant : il commence donc en colonne A ; mais peut-être que lui aussi, tu le veux à partir de la colonne B ? (si oui, je te laisse faire l'adaptation ! mais si vraiment t'y arrives pas, je t'aiderai... )

dhany

On s'est croisés ! je te retourne ton fichier modifié :

Ctrl cConsolidation ; Ctrl rReset

dhany

Rechercher des sujets similaires à "fusionner feuilles seule"