Compile de plusieurs feuille en synthèse Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
t
tikeur78
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 14 mai 2018
Version d'Excel : 2013

Message par tikeur78 » 24 mai 2019, 14:23

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 :)
G
Gli73
Membre fidèle
Membre fidèle
Messages : 294
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 24 mai 2019, 19:16

Bonjour
tikeur78 a écrit :
24 mai 2019, 14:23
voilà, j'ai un fichier excel avec entre 90 & 100 onglets environ avec des données de L1:Q61.
::o :roll: ::( 8[]
à 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 ! :lol:
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'969
Appréciations reçues : 465
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 24 mai 2019, 23:17

Bonjour,
Pour le principe.
A adapter. :wink:
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
Modifié en dernier par Jean-Eric le 25 mai 2019, 12:35, modifié 1 fois.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'226
Appréciations reçues : 344
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 25 mai 2019, 09:56

Bonjour à tous,

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

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 ...
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
78chris
Passionné d'Excel
Passionné d'Excel
Messages : 3'573
Appréciations reçues : 243
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019

Message par 78chris » 25 mai 2019, 14:03

Bonjour à tous
Gli73 a écrit :
24 mai 2019, 19:16
...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...
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
t
tikeur78
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 14 mai 2018
Version d'Excel : 2013

Message par tikeur78 » 27 mai 2019, 09:28

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 !
t
tikeur78
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 14 mai 2018
Version d'Excel : 2013

Message par tikeur78 » 27 mai 2019, 10:49

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 :(

Jean-Eric a écrit :
24 mai 2019, 23:17
Bonjour,
Pour le principe.
A adapter. :wink:
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
t
tikeur78
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 14 mai 2018
Version d'Excel : 2013

Message par tikeur78 » 27 mai 2019, 10:56

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


un grand merci !!!!!!
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'969
Appréciations reçues : 465
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 27 mai 2019, 11:00

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.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
t
tikeur78
Jeune membre
Jeune membre
Messages : 21
Inscrit le : 14 mai 2018
Version d'Excel : 2013

Message par tikeur78 » 27 mai 2019, 11:02

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

merci encore, très bonne journée
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message