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
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.
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
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
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?
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
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
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
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!