XL 2016 Remplir automatiquement un onglet

luno123

XLDnaute Occasionnel
Bonjour,



Je souhaiterais automatiser l’onglet « Groupe » :

A partir des données extraites de mon logiciel de gestion et copier sur les 9 onglets « en jaune »,

Remplir automatiquement l’onglet « groupe » qui est la somme (synthèse) des 9 onglets en jaune

Si une ligne est rajoutée, sur un des 9 onglets, qu’on la retrouve automatiquement dans l’onglet « Groupe »

Les onglets « placements » et « explications » sont indépendantes du reste des onglets.



Je ne sais pas, si j’ai été assez clair…



Merci d’avance
 

job75

XLDnaute Barbatruc
Bonjour luno123,

Attention le mode de calcul est en Manuel, mettez-le en Automatique.

Dans votre exemple les 9 onglets sources sont constitués des mêmes colonnes et lignes.

El ces onglets sont jointifs.

Si c'est bien toujours le cas c'est facile, entrez en GROUPE!C6 la formule :
Code:
=SOMME(CHA:TBC!C2)
et copiez-collez cette formule sur la plage C6:L32.

A+
 

luno123

XLDnaute Occasionnel
Bonjour Job75

Merci beaucoup pour votre retour. Effectivement les colonnes ne changeront pas et seront toujours les mêmes. Par contre, il peut y avoir des lignes supplémentaires dans un des 9 onglets voire dans les 9.
Raison pour laquelle, j’aimerais que l’onglet « groupe » puisse s’adapter aux changements (rajout de lignes) dans les 9 onglets.
 

job75

XLDnaute Barbatruc
Bonsoir luno123,

Je reviens quand même sur ce fil pour apporter une solution VBA.

Pour qu'une modification d'un des 10 onglets soit répercutée sur les 9 autres il faut que :

- les 10 feuilles soient de même structure, j'ai donc ajouté 4 lignes aux feuilles CHA à TBC pour que les tableaux commencent en ligne 5

- les 10 feuilles soient groupées par une sélection multiple.

Voyez donc le fichier joint et ces macros dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
Workbook_SheetActivate ActiveSheet 'lance la macro
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim exclu, w As Worksheet
exclu = Array("Explications", "Placements") 'liste modifiable
Sh.Select 'une seule feuille sélectionnée
If IsNumeric(Application.Match(Sh.Name, exclu, 0)) Then Exit Sub
Application.ScreenUpdating = False
For Each w In Worksheets
    If IsError(Application.Match(w.Name, exclu, 0)) Then w.Tab.ColorIndex = xlNone: w.Select False 'sélection multiple
Next
Sh.Tab.ColorIndex = 3 'colore l'onglet actif en rouge
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> ActiveSheet.Name Or Target.Column < 3 Then Exit Sub
Dim memo
memo = Target.Formula
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next
Application.Undo 'annule la modification des feuilles
Sh.Select 'une seule feuille sélectionnée
Target.Formula = memo 'modification de la feuille active
Application.EnableEvents = True 'réactive les évènements
Workbook_SheetActivate Sh 'lance la macro
End Sub
Testez en ajoutant ou supprimant des lignes dans les tableaux.

Ce n'est pas facile à comprendre c'est pourquoi j'ai proposé au post #4 de procéder manuellement.

A+
 

Pièces jointes

  • GD TRESO.xlsm
    57.5 KB · Affichages: 11
Dernière édition:

luno123

XLDnaute Occasionnel
Bonsoir luno123,

Je reviens quand même sur ce fil pour apporter une solution VBA.

Pour qu'une modification d'un des 10 onglets soit répercutée sur les 9 autres il faut que :

- les 10 feuilles soient de même structure, j'ai donc ajouté 4 lignes aux feuilles CHA à TBC pour que les tableaux commencent en ligne 5

- les 10 feuilles soient groupées par une sélection multiple.

Voyez donc le fichier joint et ces macros dans ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Workbook_SheetSelectionChange Sh, ActiveCell 'lance la macro
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim exclu, w As Worksheet
exclu = Array("Explications", "Placements") 'liste modifiable
Sh.Select 'une seule feuille sélectionnée
If IsNumeric(Application.Match(Sh.Name, exclu, 0)) Then Exit Sub
Application.ScreenUpdating = False
For Each w In Worksheets
    If IsError(Application.Match(w.Name, exclu, 0)) Then w.Tab.ColorIndex = xlNone: w.Select False 'sélection multiple
Next
Sh.Tab.ColorIndex = 3 'colore l'onglet actif en rouge
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> ActiveSheet.Name Or Target.Column < 3 Then Exit Sub
Dim memo
memo = Target.Formula
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
Application.Undo 'annule la modification des feuilles
Sh.Select 'une seule feuille sélectionnée
Target.Formula = memo 'modification de la feuille active
Application.EnableEvents = True 'réactive les évènements
Workbook_SheetSelectionChange Sh, ActiveCell 'lance la macro
End Sub
Testez en ajoutant ou supprimant des lignes dans les tableaux.

Ce n'est pas facile à comprendre c'est pourquoi j'ai proposé au post #4 de procéder manuellement.

A+
 

luno123

XLDnaute Occasionnel
Bonjour luno123,

Je viens de modifier mon post #5 en supprimant la macro Workbook_SheetSelectionChange.

A+
Bonsoir Job75,

Joli travail et un grand merci. j'ai testé et effectivement, en insérant des lignes dans n'importe quel onglet, cela se répercute sur le reste. C'est TOP.
Je voudrais savoir si c'est possible:
- en modifiant la cellule C5, que les cellules D5 à L5 suivent la chronologie?
- d'avoir les montants en KE automatiquement quand je copie mes extractions dans les onglets CHA à TBC.
 

luno123

XLDnaute Occasionnel
Bonjour,

J'ai voulu insérer des graphes mais il me semblerait que la macro m'empêche de sélectionner une seule cellule.
En somme, je souhaiterais afficher dans le graphe:
- en abscisse les semaines
- en ordonnées les Ke
- les graphes représentent les 10 onglets (Groupe à TBC) avec l'évolution de la tréso par semaine

En pj le fichier sur lequel j'ai commencé à travailler

Merci d'avance
 

Pièces jointes

  • G DTRESO 10 semaines.xlsm
    63.9 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour luno123, le forum,

Vous parlez de graphes mais il n'y en a aucun dans le fichier.

Si vous voulez les mettre dans la feuille 'Feuil1" il faut l'exclure ainsi :
VB:
exclu = Array("Explications", "Placements", "Feuil1") 'liste modifiable
Modifiez aussi la 2ème macro :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim exclu, memo
exclu = Array("Explications", "Placements", "Feuil1") 'liste modifiable
If IsNumeric(Application.Match(Sh.Name, exclu, 0)) Then Exit Sub
If Sh.Name <> ActiveSheet.Name Or Target.Column < 3 Then Exit Sub
memo = Target.Formula
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next
Application.Undo 'annule la modification des feuilles
Sh.Select 'une seule feuille sélectionnée
Target.Formula = memo 'modification de la feuille active
Application.EnableEvents = True 'réactive les évènements
Workbook_SheetActivate Sh 'lance la macro
End Sub
A+
 

Pièces jointes

  • G DTRESO 10 semaines.xlsm
    65.4 KB · Affichages: 3

luno123

XLDnaute Occasionnel
(re) bonjour Job, bonjour le forum,

Je n'ai pas réussi à créer mon graphe comme je voudrais sur la feuille 1. Les données sont trop dispersées. Donc j'aimerais bien insérer une nouvelle feuille comportant les données du fichier ci-joint qui ne sont rien d'autres que des recherches V des 10 onglets pour aller chercher les soldes finaux.
Ainsi je crée mon graphe comme dans la pj.
Est ce possible?

Merci d'avance
 

Pièces jointes

  • Soldes finaux.xlsx
    16.7 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin