Compiler onglets d'1 classeur sauf 2

maryrossignon

XLDnaute Junior
Bonjour à Tous, je reviens vers vous pour obtenir un peu d'aide...
Je souhaiterai compiler dans une nouvelle feuille du même classeur toutes les feuilles qui s'y trouvent sauf les 2 premières mais dont j'ai absolument besoin de garder pour ne pas fausser les formules utilisées dans les feuilles à compiler.
Merci de corriger mon code VBA qui ne fonctionne correctement que si je supprime les 2 premiers onglets...
Trouvez ci-joint mon fichier test, normalent j'ai besoin de compiler les 12 mois de l'année.
 

skoobi

XLDnaute Barbatruc
Re : Compiler onglets d'1 classeur sauf 2

Bonjour,

si j'ai bien compris, voici ce la macro "compilation" modifiée (en rouge à enlever, en bleue à ajouter, en vert à modifier):

Sub Compilation()
'source:Merge cells from all or some worksheets into one Master sheet
Dim sh As Worksheet
Dim Feuille_Destination As Worksheet
Dim Last As Long

With Application
.ScreenUpdating = False
.EnableEvents = False
End With

Application.DisplayAlerts = False
On Error Resume Next
ThisWorkbook.Worksheets("Compilation").Delete
On Error GoTo 0
Application.DisplayAlerts = True

Set Feuille_Destination = ThisWorkbook.Worksheets.Add(after:=Worksheets(Worksheets.Count))
Feuille_Destination.Name = "Compilation"

For Each sh In ThisWorkbook.Worksheets
If sh.Name <> Feuille_Destination.Name Then
For n = 3 To Worksheets.Count - 1
Last = Derniere_Ligne(Feuille_Destination)
Set tbl = Sheets(n).Range("A2").CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Copy Feuille_Destination.Cells(Last + 1, "A")
'Feuille_Destination.Cells(Last + 1, "F").Value = "NOM DE LA FEUILLE: " & sh.Name
End If
Next
Application.GoTo Feuille_Destination.Cells(1)
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Call Fin
End Sub
 

maryrossignon

XLDnaute Junior
Re : Compiler onglets d'1 classeur sauf 2

Super Skoobi ! Je viens d'adapter la correction du code sur mon fichier original contenant les 12 mois de l'année et plus de 7000 factures et tout est fonctionnel, c'est génial !

Si je peux abuser..., où dois-je corriger la macro pour que :
1. la feuille 'Compilation' reprenne les mêmes largueurs de colonnes que les feuilles à compiler ?
2. la feuille 'Compilation' reprenne la formule qui se trouve dans la cellule E1 dans la ligne d'entête, voir dans les feuilles à compiler.
Je te remercie pour ton aide…
 

maryrossignon

XLDnaute Junior
Re : Compiler onglets d'1 classeur sauf 2

Super Skoobi ! Je viens d'adapter la correction du code sur mon fichier original contenant les 12 mois de l'année et plus de 7000 factures et tout est fonctionnel, c'est génial !

Si je peux abuser..., où dois-je corriger la macro pour que :
1. la feuille 'Compilation' reprenne les mêmes largueurs de colonnes que les feuilles à compiler ?
2. la feuille 'Compilation' reprenne la formule qui se trouve dans la cellule E1 dans la ligne d'entête, voir dans les feuilles à compiler.
Je te remercie pour ton aide…
 

skoobi

XLDnaute Barbatruc
Re : Compiler onglets d'1 classeur sauf 2

Re,

ajoute ceci à la fin de la macro "compilation":

Pour la largeur des colonnes:

Code:
dercol = Sheets(Worksheets.Count - 1).Range("A1").End(xlToRight).Column
For c = 1 To dercol
    Feuille_Destination.Columns(c).ColumnWidth = Sheets(Worksheets.Count - 1).Columns(c).ColumnWidth
Next
pour la cellule E1.

Code:
Feuille_Destination.Range("E1").FormulaArray = "=SUM((FREQUENCY(IF(SUBTOTAL(3,OFFSET(R1C[-4],ROW(R1C[-4]:R20C[-4]),)),R2C[-2]:R20C[-2]),R2C[-2]:R20C[-2]*1)>0)*1)"

Le résultat est une erreur N/A, ne me demande pas pourquoi, je comprends pas..., je suis pas très fort en fonction excel.
 

maryrossignon

XLDnaute Junior
Re : Compiler onglets d'1 classeur sauf 2

Skoobi, merci pour ton aide…
Le re-dimensionnement des cellules fonctionne bien.
Mais la formule à utiliser dans l’entête en « E1 » se place en « E2 » lors de la compilation.
Pour ne plus obtenir «N/A», il faut valider la formule en tapant CTRL+MAJ+ENTER dans la barre de fonction et celle-ci s’affiche comme ce qui suit :
{=SOMME((FREQUENCE(SI(SOUS.TOTAL(3;DECALER(A$1;LIGNE(A$1:A$799);));C$2:C$800);C$2:C$800*1)>0)*1)}, voir dans les onglets du fichier déjà joint, si tu veux.
 

maryrossignon

XLDnaute Junior
Re : Compiler onglets d'1 classeur sauf 2

Bonjour à tous...

Sans réponse de votre part, je souhaiterai réitérer ma question suivante :
où et comment dois-je corriger la macro, voir correction de « Skoobi » ci-dessus pour que la feuille 'Compilation' que je génère via cette macro reprenne aussi la fonction somme qui se trouve dans la cellule E1 dans la ligne d’entête de toutes les autres feuilles du classeur ?
 

Discussions similaires

Statistiques des forums

Discussions
312 613
Messages
2 090 233
Membres
104 460
dernier inscrit
Özlem