Bonjour,
pourriez vous m'aider svp,
j'ai un fichier de suivi budgétaire ou le classeurs comporte une douzaine des feuille,
chaque feuille a un tableau ou sont décris les mêmes informations que les autres (code, objectifs, montant, fournisseur....)
j'ai crée une autre feuille dans le même classeur que je vais faire le recap globale des tableau de chaque feuille.
est ce qu'il y'a un moyen de mettre à jour automatiquement la feuille du recap global des que je saisie les données dans les autres feuilles pour eviter de faire deux saisies ou des copie coller?
est il possible de le faire sans utiliser les macros (je suis nul)?
et si ca nécessite obligatoirement l'utilisation des macros est ce que je peut partager le fichier sur drive et que les macros prennent?
MERCI DE M'AIDER SVP
Ci joint un exple du fichier,
bonsoir Soumaiya, et bienvenu(e) sur XLD,
Un essai en PJ avec :
VB:
Sub Worksheet_Activate()
Application.ScreenUpdating = False
With Range("Tableau5").ListObject
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.Delete
End If
End With
For Each F In Worksheets
If F.Name <> "GLOBAL" Then
Tableau = Sheets(F.Name).ListObjects(1).Name
Sheets(F.Name).Range(Tableau).Item(1, 1).Copy
NbL = [Tableau5].ListObject.ListRows.Count
Sheets(F.Name).ListObjects(Tableau).DataBodyRange.Copy [Tableau5].Item(NbL + 1, 1)
End If
Next F
Columns.AutoFit
End Sub
La macro est automatique quand on sélectionne la page Global.
Merci beaucoup Sylvanu, c'est magique, ça fonctionne très bien.
une autre question svp, est ce que c'est possible de partager ce fichier sur drive ?
Pourriez vous svp m'expliquer un peu plus la macro au cas ou prochainement je vais refaire
bonsoir Soumaiya, et bienvenu(e) sur XLD,
Un essai en PJ avec :
VB:
Sub Worksheet_Activate()
Application.ScreenUpdating = False
With Range("Tableau5").ListObject
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.Delete
End If
End With
For Each F In Worksheets
If F.Name <> "GLOBAL" Then
Tableau = Sheets(F.Name).ListObjects(1).Name
Sheets(F.Name).Range(Tableau).Item(1, 1).Copy
NbL = [Tableau5].ListObject.ListRows.Count
Sheets(F.Name).ListObjects(Tableau).DataBodyRange.Copy [Tableau5].Item(NbL + 1, 1)
End If
Next F
Columns.AutoFit
End Sub
La macro est automatique quand on sélectionne la page Global.
Merci beaucoup Sylvanu, c'est magique, ça fonctionne très bien.
une autre question svp, est ce que c'est possible de partager ce fichier sur drive ?
Pourriez vous svp m'expliquer un peu plus la macro au cas ou prochainement je vais refaire
Sub Worksheet_Activate()
Application.ScreenUpdating = False ' on fige l'écran
With Range("Tableau5").ListObject ' avec le tableau de la page Global
If Not .DataBodyRange Is Nothing Then ' s'il est non vide
.DataBodyRange.Delete ' on l'efface
End If
End With
For Each F In Worksheets ' pour toutes les feuilles
If F.Name <> "GLOBAL" Then ' sauf evidemment Global
Tableau = Sheets(F.Name).ListObjects(1).Name ' on récupère le nom du tableau présent
NbL = [Tableau5].ListObject.ListRows.Count ' nombre de ligne du tableau global
' on copie le tableau de la feuille concernée à la fin du tableau global
Sheets(F.Name).ListObjects(Tableau).DataBodyRange.Copy [Tableau5].Item(NbL + 1, 1)
End If
Next F
Columns.AutoFit
End Sub