XL 2010 Concatenation des onglets via une macro

karotte

XLDnaute Nouveau
Bonjour la communauté,

Je vous écris car je suis bloquée depuis plusieurs semaines sur une problématique.

Je souhaite faire une concaténation de plusieurs onglets (comportant des tableaux identiques) dans un seul et unique onglet. Cela me permettrait de bien exploiter l'ensemble de la base de donné. Je souhaite pouvoir filtrer, trier mes données à ma guise; et surtout j'aimerais avoir une Maj automatique des données. Je souhaiterais faire cela via une macro mais je ne sais pas du temps comment m'y prendre car je ne connais pas le langage VBA...

Quelqu'un pourrait bien m'aider sur ce sujet svp?

Merci d'avance et bonne soirée à vous la communauté Excel
 

karotte

XLDnaute Nouveau
Bonsoir le fil, karaotte

Sujet traité moult fois sur le forum
Ouvrir le capot et allumer le moteur... de recherche
Comme ceci par exemple


Merci pour ta réponse JM,

je suis sur tombée ça :
Sub consolide_ongletsNomOngletCouleur()
Sheets("base").[A1].CurrentRegion.Offset(1, 0).Clear
For s = 2 To Sheets.Count
nlig = Sheets(s).[A65000].End(xlUp).Row - 1
ncol = Sheets(s).[A1].CurrentRegion.Columns.Count
[A65000].End(xlUp).Offset(1, ncol).Resize(nlig, 1).Value = Sheets(s).Name
[A65000].End(xlUp).Offset(1, 0).Resize(nlig, ncol + 1).Interior.ColorIndex = _
Sheets(s).[A2].Interior.ColorIndex
[A65000].End(xlUp).Offset(1, 0).Resize(nlig, ncol).Value = _
Sheets(s).[A2].Resize(nlig, ncol).Value
Next s
On Error Resume Next
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub


Mais impossible pour moi de comprendre ce langage (je n'ai vraiment pas de connaissance du langage VBA). Peux tu me dire ce que je dois modifier pour pouvoir l'adapter à mon fichier stp? Par exemple, le nom des onglets, la plage de données etc.

Je te remercie d'avance,

Bonne journée à tous
 

Staple1600

XLDnaute Barbatruc
Re

Alors, zou, je te propose de mettre les mains dans le cambouis ;)
Dans un classeur vierge, inséres 4 feuilles
(renomme la 1ère: Consolidation)
Puis lance la macro nommée CréerExemple
VB:
Sub CréerExemple()
'macro qui ne sert que pour créer un exemple
Dim ws As Worksheet, X$
For Each ws In Worksheets
If Not ws.Name = "Consolidation" Then
X = Right(ws.Name, 1)
ws.Range("A1:C10").Formula = Array(ws.Name, "=Row()*" & X, "=ROW()*NOW()*RAND()")
End If
Next
End Sub
Sub Consolidation()
Dim ws As Worksheet
For Each ws In Worksheets
If Not ws.Name = "Consolidation" Then
'ici on "recopie" les valeurs seules
' en redimensionnant à chaque fois la plage de cellules de 10 lignes et 3 colonnes
'taille des tableaux des 3 feuilles à consolider
Sheets("Consolidation").Cells(Rows.Count, 1).End(xlUp)(2).Resize(10, 3).Value = ws.Range("A1:C10").Value
End If
Next
End Sub
Ensuite va voir ce qu'il y a sur les 3 dernières feuilles
(Tu vois voir tableau de 10 lignes et 3 colonnes sur chaque feuille)
Lances alors la macro Consolidation.
Va voir le résultat sur lafeuille Consolidation.
Étudies le code VBA
Puis affûtes tes questions et pose-les ici ;)
 

karotte

XLDnaute Nouveau
Re

Alors, zou, je te propose de mettre les mains dans le cambouis ;)
Dans un classeur vierge, inséres 4 feuilles
(renomme la 1ère: Consolidation)
Puis lance la macro nommée CréerExemple
VB:
Sub CréerExemple()
'macro qui ne sert que pour créer un exemple
Dim ws As Worksheet, X$
For Each ws In Worksheets
If Not ws.Name = "Consolidation" Then
X = Right(ws.Name, 1)
ws.Range("A1:C10").Formula = Array(ws.Name, "=Row()*" & X, "=ROW()*NOW()*RAND()")
End If
Next
End Sub
Sub Consolidation()
Dim ws As Worksheet
For Each ws In Worksheets
If Not ws.Name = "Consolidation" Then
'ici on "recopie" les valeurs seules
' en redimensionnant à chaque fois la plage de cellules de 10 lignes et 3 colonnes
'taille des tableaux des 3 feuilles à consolider
Sheets("Consolidation").Cells(Rows.Count, 1).End(xlUp)(2).Resize(10, 3).Value = ws.Range("A1:C10").Value
End If
Next
End Sub
Ensuite va voir ce qu'il y a sur les 3 dernières feuilles
(Tu vois voir tableau de 10 lignes et 3 colonnes sur chaque feuille)
Lances alors la macro Consolidation.
Va voir le résultat sur lafeuille Consolidation.
Étudies le code VBA
Puis affûtes tes questions et pose-les ici ;)

Bonjour,

Merci beaucoup pour ta réponse!

Bon j'ai bien avancé, j'ai réussis à adapter ta macro à mon classeur Excel.

Maintenant, je me demande comment puis je faire pour prendre que certains onglets et non l'ensemble des onglets ou encore des onglets masqués. Est ce avec la meme macro mais avec modif ou est ce avec une macro complétement différente?

Merci encore Staple1600, tu me sauves la vie ;)
 

karotte

XLDnaute Nouveau
Re

Alors, zou, je te propose de mettre les mains dans le cambouis ;)
Dans un classeur vierge, inséres 4 feuilles
(renomme la 1ère: Consolidation)
Puis lance la macro nommée CréerExemple
VB:
Sub CréerExemple()
'macro qui ne sert que pour créer un exemple
Dim ws As Worksheet, X$
For Each ws In Worksheets
If Not ws.Name = "Consolidation" Then
X = Right(ws.Name, 1)
ws.Range("A1:C10").Formula = Array(ws.Name, "=Row()*" & X, "=ROW()*NOW()*RAND()")
End If
Next
End Sub
Sub Consolidation()
Dim ws As Worksheet
For Each ws In Worksheets
If Not ws.Name = "Consolidation" Then
'ici on "recopie" les valeurs seules
' en redimensionnant à chaque fois la plage de cellules de 10 lignes et 3 colonnes
'taille des tableaux des 3 feuilles à consolider
Sheets("Consolidation").Cells(Rows.Count, 1).End(xlUp)(2).Resize(10, 3).Value = ws.Range("A1:C10").Value
End If
Next
End Sub
Ensuite va voir ce qu'il y a sur les 3 dernières feuilles
(Tu vois voir tableau de 10 lignes et 3 colonnes sur chaque feuille)
Lances alors la macro Consolidation.
Va voir le résultat sur lafeuille Consolidation.
Étudies le code VBA
Puis affûtes tes questions et pose-les ici ;)


Typiquement dans cette macro on peut choisir les onglets concernés par la macro. Seulement je ne comprend pas toutes les étapes... peux tu stp m'expliquer à partir du début ? J'ai essayé de l'adapter à mon fichier mais ca ne me donne pas grand chose même si je suis concaincue que j'y suis presque parvenu.

Encore Merci!

Sub consolide_onglets()
Sheets("base").[A1].CurrentRegion.Offset(1, 0).Clear
For s = 2 To Sheets.Count
Range(Sheets(s).[A2], Sheets(s).[A65000].End(xlUp).End(xlToRight)).Copy _
[A65000].End(xlUp).Offset(1, 0)
Next s
On Error Resume Next
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

karotte
Je n'ai pas pondu cet œuf.
(je parle du code de la macro Sub consolide_onglets())
Donc je ne la commenterai pas
A moins que tu parles de ma macro Consolidation
Dans ce cas, ton message n'est pas des plus clair.

En attendant des éclaircissements
Jette un œil dans ce fil où j'ai recyclé et modifié la macro du message#4
 

karotte

XLDnaute Nouveau
Bonsoir le fil

karotte
Je n'ai pas pondu cet œuf.
(je parle du code de la macro Sub consolide_onglets())
Donc je ne la commenterai pas
A moins que tu parles de ma macro Consolidation
Dans ce cas, ton message n'est pas des plus clair.

En attendant des éclaircissements
Jette un œil dans ce fil où j'ai recyclé et modifié la macro du message#4

Hello Staple1600, Hello la communauté!

ta macro me sert à consolider l'ensemble des feuilles d'un classeur Excel (même les onglets masqués et les onglets pas voulu). Je veux consolider que certaines feuilles et sauf erreur de ma part, je pense que ta macro n'arrive pas à faire ça. Peux tu stp m'aider?

Merci d'avance ;)

J’espère que j'ai été clair.. dans l'attente de te lire!
 

Discussions similaires

Réponses
12
Affichages
242
Réponses
2
Affichages
279

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16