Retranscription de plusieurs feuilles en une

Bonjour à tous,

Je suis nouveau sur le forum et mon niveau d'excel est, on va dire, basique.

Voici mon problème :

Dans mon classeur Excel, j'ai 6 feuilles : 1 feuille "Total" et 5 feuilles où 5 personnes différentes rentreront des données (AA, BB, CC, DD et EE).

1) Je souhaite que lorsque des données soient rentrées dans l'une des 5 feuilles, elles apparaissent dans la feuille "Total", l'une en dessous de l'autre, l'ordre n'a pas d'importance, juste de ne pas écraser les données précédentes.

2) En bonus si c'est possible et non contradictoire avec ma demande en 1), cela serait également de pouvoir modifier dans la feuille "Total" et que ça se mette à jour dans la feuille en question suivant la ligne de modification.

Je vous joins un fichier pour que cela puisse vous aider dans la compréhension de mon problème.

Merci d'avance

8test-v1.xlsx (18.16 Ko)

Bonjour,

ton fichier n'ayant pas de données, j'en ai pris un autre

Option Explicit

Sub compiler()
Dim ligne As Long, ws As Worksheet
    Range("A1").CurrentRegion.Offset(1, 0).ClearContents
    ligne = 2
    For Each ws In Worksheets
        If Not ws.Name = ActiveSheet.Name Then
            ws.Cells(Rows.Count, 1).End(xlUp).CurrentRegion.Offset(1, 0).Resize(ws.Cells(Rows.Count, 1).End(xlUp).CurrentRegion.Rows.Count - 1).Copy Destination:=ActiveSheet.Cells(ligne, 1)
            ligne = Cells(Rows.Count, 1).End(xlUp).Row + 1
        End If
    Next
End Sub

Merci Steelson pour ton aide.

ça a presque fonctionné.

Je m'explique :

- Ne connaissant pas comment recréer le bouton bleu "Compiler" et lui affecter la macro associée, j'ai importé mes feuilles dans ton fichier.

- J'ai ensuite mis des données pour tester, il m'a retranscrit une fois mes valeurs mais m'a ensuite mis débogage et la compilation ne fonctionnait plus.

- Autre précision, à la suite de mes 5 pages, j'ai une page "Parameters" qui sera masquée et donc je souhaite qu'elle ne soit pas retranscrite.

Je te mets une image du problème rencontrée

capture pb debogage

Merci d'avance

C'est donc lié à l'existence de cette page.

Il faut donc ajouter

if not (ws.name = activesheet.name or ws.name = "Parameters") then

Je l'ai ajouté, mais surement pas au bon endroit car le problème est toujours existant :

capture pb debogage 2

Non, tu ne l'as pas ajouté du tout, je ne vois pas or ws.name = "Parameters"

écrase le code avec ceci

Option Explicit

Sub compiler()
Dim ligne As Long, ws As Worksheet
    Range("A1").CurrentRegion.Offset(1, 0).ClearContents
    ligne = 2
    For Each ws In Worksheets
        if not (ws.name = activesheet.name or ws.name = "Parameters") then
            ws.Cells(Rows.Count, 1).End(xlUp).CurrentRegion.Offset(1, 0).Resize(ws.Cells(Rows.Count, 1).End(xlUp).CurrentRegion.Rows.Count - 1).Copy Destination:=ActiveSheet.Cells(ligne, 1)
            ligne = Cells(Rows.Count, 1).End(xlUp).Row + 1
        End If
    Next
End Sub

Effectivement cela fonctionne désormais merci beaucoup !

En revanche, j'ai découvert une nouvelle erreur avec le même message et la même ligne surlignée en jaune dans la macro : c'est lorsqu'une des (cinq) pages est vide, sans aucune donnée, cela me met une erreur.

Or dans mon fichier, il se pourra qu'une ou plusieurs soit vide, est-ce tu aurais une solution sur ce problème là ?

Merci d'avance pour ton aide.

ok, mais redonne moi un exemple simplifié de fichier excel, ce sera plus rapide, avec quelques données bidon cette fois-ci

Et voilà le fichier.

Toutes les feuilles ont des données ... bon j'invente lors !

Option Explicit

Sub compiler()
Dim ligne As Long, ws As Worksheet
    Range("A1").CurrentRegion.Offset(1, 0).ClearContents
    ligne = 2
    For Each ws In Worksheets
        If Not (ws.Name = ActiveSheet.Name Or ws.Name = "Parameters") Then
            If ws.Cells(Rows.Count, 1).End(xlUp).Row > 1 Then
                ws.Cells(Rows.Count, 1).End(xlUp).CurrentRegion.Offset(1, 0).Resize(ws.Cells(Rows.Count, 1).End(xlUp).CurrentRegion.Rows.Count - 1).Copy Destination:=ActiveSheet.Cells(ligne, 1)
                ligne = Cells(Rows.Count, 1).End(xlUp).Row + 1
            End If
        End If
    Next
End Sub

Un grand, grand merci à toi, cela fonctionne, c'est tip top !

Bonjour…

toujours fidèle à l’utilisation de tables (Tableau, maintenant, de la classe ListObjects) je les utilise à profusion car leurs multiples propriétés permettent de simplifier la gestion des plages (cellules et colonnes continues).

Voici un exemple avec la compilation effectuée en activant l’onglet qui lui est dédié.

@Ordonc, ton code est intéressant ...

@BipBip, reste à faire ta s onde demande, mais je vois que tu as déjà soldé le topic

Rechercher des sujets similaires à "retranscription feuilles"