Compile de plusieurs feuille en synthèse

Bonjour à tous,

voilà, j'ai un fichier excel avec entre 90 & 100 onglets environ avec des données de L1:Q61.

J'aimerai:

selectionner les données de tous les onglets sans les lignes avec le mot FAUX dedans en colonne M (1er et dernier onglet concerné)

copier & coller les données les unes en dessous des autres dans l'onglet "Synthèse" en A2

a aujourd'hui, j'ai pu faire une petite partie du code (trouvé sur différents forums) mais cela ne colle les données que de l'onglet actif

Sub CONSO()

'

' CONSO Macro

'

Dim i&

For i = 1 To Sheets.Count

If Sheets(i).Name <> "Synthèse" Then Sheets(i).Select False

Next i

Set sh1 = ActiveSheet

lastrw1 = Application.Match("NON", sh1.Range("M:M"), 0) - 1

Set plg = sh1.Range("L2:Q" & lastrw1)

Set sh2 = Sheets("Synthèse")

If sh2.Cells(Rows.Count, 1).End(xlUp).Row + 1 = 2 Then

lastrw2 = 1

Else

lastrw2 = sh2.Cells(Rows.Count, 1).End(xlUp).Row + 1

End If

adr1 = Range(Cells(lastrw2, 1).Address, Cells(lastrw2 + plg.Rows.Count - 1, 2)).Address

sh2.Range(adr1).Value = plg.Value

'

End Sub

je vous remercie tous, bonne après midi à vous

Bonjour

voilà, j'ai un fichier excel avec entre 90 & 100 onglets environ avec des données de L1:Q61.

à mon avis sans avoir aucune idée de ce qu'il contient "il y a au moins 80 à 90 onglets de trop et je pense même que je suis très large !"

Peux-tu nous montrer "un petit aperçu" de ce joli monstre (disons seulement 10 onglets) ? pour que nous tentions de t'apporter un peu d'aide !


Au passage il est vrai que sur Excel il y a de la marge... Dixit (ou presque) le support Microsoft Excel "le nombre d'onglets avec Excel n'est limité qu'à la taille de la mémoire de l'ordinateur utilisé" autrement quasiment infini ! Je sais pas si il est vraiment nécessaire de chercher à les utiliser tous !

Bonjour,

Pour le principe.

A adapter.

Public Sub Consolidate_data()
Dim ws As Worksheet, ws2 As Worksheet
Dim lRow As Long, lastRow As Variant, tbl As Variant
    Set ws2 = Worksheets("Synthèse")
    ws2.Cells.Clear
    lRow = 1
    For Each ws In Worksheets
        If Not ws.Name = "Synthèse" Then
            lastRow = Application.Match("NON", ws.Columns(13), 0) - 1
            If Not IsError(lastRow) Then
                tbl = ws.Cells(2, 12).Resize(Clng(lastRow) - 1, 6).Value
                With ws2
                    .Cells(lRow, 1).Resize(UBound(tbl), UBound(tbl, 2)).Value = tbl
                    lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                End With
            End If
        End If
    Next ws
End Sub

Bonjour à tous,

Le principe proposé par Jean-Eric est parfait ...

Cela dit ... j'espère que cela va t'apparaitre comme une évidence :

contrairement à beaucoup d'autres demandeurs, tu as pris la précaution d' avoir une seule et même structure pour l'ensemble de tes onglets à synthétiser ...

Bonjour à tous

...Au passage il est vrai que sur Excel il y a de la marge... Dixit (ou presque) le support Microsoft Excel "le nombre d'onglets avec Excel n'est limité qu'à la taille de la mémoire de l'ordinateur utilisé" autrement quasiment infini ! ...

On est très loin de l’infini car la quasi totalité des utilisateurs ont un Excel 32 bits où seuls les 4 premiers Go de mémoire sont reconnus ou plutôt ce qu'il en reste une fois chargés Windows , l'antivirus et toute une flopée de résidents plus ou moins utiles qui peuvent être nombreux en entreprise...

Bonjour à vous 2 et merci beaucoup pour vos réponses, je vais tester cela ce matin et reviens vers vous très vite.

en fait, mon fichier Excel est un PDF converti en excel et dedans j'ai tous mes stocks de matières premières d'où les 100 onglets notre logiciel ne nous permet pas d'exporter directement sur excel :'( (oui il est très très vieux)

et la seul logique que j'ai trouvé, est le nombre de ligne car le nombre de colonnes diffère mais j'ai pu retravaillé avec de "simples" formules d'où le fait que ce soit en colonne L à Q

je ne peux malheureusement pas me passer d'un seul onglet

merci beaucoup pour vos réponses en tout cas !

Jean-Eric, j'ai l'impression que ca me prend les données de la colonne A à F des différents onglets au lieu de me prendre les données de L à Q et du coup, ca me met un code ERREUR sur la ligne :

tbl = ws.Cells(2, 12).Resize(CLng(lastRow) - 1, 6).Value

PS: je ne suis pas très douée sur VBA

Bonjour,

Pour le principe.

A adapter.

Public Sub Consolidate_data()
Dim ws As Worksheet, ws2 As Worksheet
Dim lRow As Long, lastRow As Variant, tbl As Variant
    Set ws2 = Worksheets("Synthèse")
    ws2.Cells.Clear
    lRow = 1
    For Each ws In Worksheets
        If Not ws.Name = "Synthèse" Then
            lastRow = Application.Match("NON", ws.Columns(13), 0) - 1
            If Not IsError(lastRow) Then
                tbl = ws.Cells(2, 12).Resize(Clng(lastRow) - 1, 6).Value
                With ws2
                    .Cells(lRow, 1).Resize(UBound(tbl), UBound(tbl, 2)).Value = tbl
                    lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                End With
            End If
        End If
    Next ws
End Sub

c'est bon, j'ai trouvé !! la feuille 97 commençait par "NON" et il a pas aimé

un grand merci !!!!!!

Bonjour,

Merci de ton retour.

En terme de temps, rapide ou lent sur l'ensemble de tes feuilles ?

Pense aussi à clore le sujet si tu es satisfait du résultat.

Cdlt.

le temps de réponse est super rapide (5 secondes max) donc c'est parfait pour moi

merci encore, très bonne journée

Rechercher des sujets similaires à "compile feuille synthese"