Compiler onglets d'1 classeur sauf 2

  • Initiateur de la discussion Initiateur de la discussion maryrossignon
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

maryrossignon

Guest
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.
 
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
 
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…
 
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…
 
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.
 
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.
 
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 ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

E
Réponses
8
Affichages
2 K
ebenezerkonan
E
A
Réponses
17
Affichages
3 K
B
Réponses
12
Affichages
4 K
Barazouti
B
G
Réponses
13
Affichages
1 K
gaetan2812
G
Retour