XL 2013 Insérer ligne dans un tableau sur plusieurs feuilles excel

thrxnd

XLDnaute Nouveau
Bonjour,

Je me permets de vous écrire car j'ai fais mes recherches au préalable et les solutions n'étaient adaptées qu'à des feuilles de classeur sans tableaux.

J'ai créée un fichier excel permettant de visualiser l'ensemble des congés pris par les salariés d'une entreprise. Chaque feuille represente un mois, elles sont intitulées "Janvier", "Février",..."Decembre". Sur une feuille il y a plusieurs petits tableaux représentant chaque section "commerciaux", "ressources humaines" etc, avec dedans le nom des salariés, les jours du mois, et le total pour afficher les congés pris.
J'ai fais des tableaux croisés dynamiques avec l'assistant afin de pouvoir avoir sur une dernière feuille l'ensemble des congés pris par chaque section.

Cependant, en voulant insérer une ligne par exemple pour ajouter un nouveau commercial, je dois tout faire manuellement pour chaque feuille du mois de l'année.

Existe-t-il une façon permettant d'insérer une ligne sur Janvier dans un des tableaux de section, et que la ligne soit insérée sur toutes les feuilles des mois de l'année ?
J'ai tenté de sélectionner toutes les feuilles en même temps et d'insérer une ligne, mais vu qu'il s'agit d'un tableau l'option "Insérer" est grisée.

Je ne sais pas si la description de mon problème est claire.

En vous remerciant par avance de toute aide apportée.

Cordialement,
Amandine
 

thrxnd

XLDnaute Nouveau
Re : Insérer ligne dans un tableau sur plusieurs feuilles excel

Super chris, cela a fonctionné !

Merci à vous tous en tout cas pour votre aide et le temps consacré

Cordialement

EDIT : En revanche, même si je sélectionne par exemple une ligne d'un autre tableau, la ligne ajoutée figure toujours dans le 1er tableau; est-ce normal ?

EDIT 2 : Concernant le code de Job75; je viens de m'appercevoir que lorsque je cliquais pour executer la macro, elle ne s'éxécutait pas. Rien ne se passe car la macro n'agit pas. Pourtant je suis bien en format excel prenant en charge les macros.
 
Dernière modification par un modérateur:

chris

XLDnaute Barbatruc
Re : Insérer ligne dans un tableau sur plusieurs feuilles excel

RE

Dans mon code on se base sur le nom des tableaux et non sur une sélection : il marche sur les tableaux Commerciaux quel que soit l'endroit où on est placé.

Comme je le disais dans ma première réponse, on peut optimiser en donnant le nom et un bouton par type de tableaux.

On peut aussi mélanger les solutions de JOB75 et la mienne pour extrapoler le type de tableau concerné en fonction de la cellule active...
 

job75

XLDnaute Barbatruc
Re : Insérer ligne dans un tableau sur plusieurs feuilles excel

Bonjour thrxnd, CISCO, chris, le forum,

Avec cette solution vous ne devriez avoir aucun problème.

Placez dans ThisWorkbook :

Code:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim ad As String, choix As String, w As Worksheet
If Not IsDate("1/" & Sh.Name) Then Exit Sub
On Error Resume Next
With Target.ListObject
  ad = Intersect(Target.EntireRow, Union(.Range.Rows(1), .DataBodyRange)).Address
End With
If ad = "" Then Exit Sub
Cancel = True
choix = LCase(InputBox("Entrez 'a' pour ajouter, 's' pour supprimer :", "Ajouter/Supprimer une ligne"))
If choix <> "a" And choix <> "s" Then Exit Sub
For Each w In Worksheets
  If IsDate("1/" & w.Name) Then
    If choix = "a" Then
      w.Range(ad).Offset(1).Insert xlDown
    Else
      w.Range(ad).Delete xlUp
    End If
  End If
Next
End Sub
Double-clic dans une cellule quelconque d'un tableau.

L'insertion se fait sous la ligne cliquée.

Bien sûr la ligne des en-têtes de colonnes ne peut pas être supprimée...

Fichier joint.

Bonne journée.
 

Pièces jointes

  • test(1).xlsm
    86.3 KB · Affichages: 50
  • test(1).xlsm
    86.3 KB · Affichages: 56

job75

XLDnaute Barbatruc
Re : Insérer ligne dans un tableau sur plusieurs feuilles excel

Re,

S'il n'y a pas de ligne de total il faut forcer le redimensionnement du tableau pour le cas où l'on ajoute une ligne en fin de tableau.

Ceci fonctionne avec ou sans ligne de total :

Code:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim ad As String, choix As String, w As Worksheet
If Not IsDate("1/" & Sh.Name) Then Exit Sub
On Error Resume Next
With Target.ListObject
  ad = Intersect(Target.EntireRow, Union(.Range.Rows(1), .DataBodyRange)).Address
End With
If ad = "" Then Exit Sub
Cancel = True
choix = LCase(InputBox("Entrez 'a' pour ajouter, 's' pour supprimer :", "Ajouter/Supprimer une ligne"))
If choix <> "a" And choix <> "s" Then Exit Sub
For Each w In Worksheets
  If IsDate("1/" & w.Name) Then
    If choix = "a" Then
      w.Range(ad).Offset(1).Insert xlDown
      w.Range(ad).Cells(2, 1) = "" 'force le redimensionnement du tableau
    Else
      w.Range(ad).Delete xlUp
    End If
  End If
Next
End Sub
Ci-joint fichier (2) et fichier sans total pour tester.

A+
 

Pièces jointes

  • test(2).xlsm
    86.6 KB · Affichages: 43
  • test sans total(1).xlsm
    83.9 KB · Affichages: 60
  • test(2).xlsm
    86.6 KB · Affichages: 56

CISCO

XLDnaute Barbatruc
Re : Insérer ligne dans un tableau sur plusieurs feuilles excel

Bonjour à tous, bonjour Job75 et Chris

Job75,
Bonjour thrxnd, CISCO, Chris, le forum,
...
Bien sûr la ligne des en-têtes de colonnes ne peut pas être supprimée...
Bonne journée.

je ne vois pas dans ton code ce qui fait qu'on ne peut pas supprimer les lignes d'en-tête (lignes 5 et 6) ? Pourrais-tu m'expliquer ce "détail" ? D'avance, merci.

@ plus
 

job75

XLDnaute Barbatruc
Re : Insérer ligne dans un tableau sur plusieurs feuilles excel

Re,

Il n'y a pas de code pour ça car dans un tableau on ne peut pas supprimer la ligne d'en-têtes [Edit] ligne 7.

Enfin chez moi sur Excel 2013, sinon effectivement il faudrait un test pour ne pas la supprimer.

Pour terminer je signale à thrxnd que sa formule en B6 (et cellules semblables) est erronée.

Entrez en B6 cette formule :

Code:
=DATE($AG5;MOIS("1/"&$A5);B7)
et mettez B6 au format personnalisé jjj

Tirez B6 vers la droite et copiez la ligne sur les autres tableaux.

Enfin complétez par une MFC pour masquer les jours qui n'existent pas à droite du tableau.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Insérer ligne dans un tableau sur plusieurs feuilles excel

Re,

Plutôt qu'une MFC il est plus simple de masquer les colonnes soit manuellement soit par cette macro :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim c As Range
If IsDate("1/" & Sh.Name) Then
  For Each c In Sh.[AD6:AF6]
    c.EntireColumn.Hidden = Month(c) <> Month(Sh.[AC6])
  Next
End If
End Sub
Fichier (3), voyez la feuille "Février" avec les colonnes AE:AF masquées.

A+
 

Pièces jointes

  • test(3).xlsm
    87.5 KB · Affichages: 22
  • test(3).xlsm
    87.5 KB · Affichages: 24

thrxnd

XLDnaute Nouveau
Re : Insérer ligne dans un tableau sur plusieurs feuilles excel

Merci beaucoup Job75, la méthode de la macro du poste 19 fonctionne à la perfection et je peux meme supprimer des lignes! Je vais enfin pouvoir utiliser mon fichier excel de la facon la plus optimale possible.

Merci à vous tous pour votre contribution et vos multiples astuces qui présentaient tous des avantages certains.

Bien cordialement,
Thrxnd
 

nipodjb

XLDnaute Nouveau
Bonjour tous le monde,

Parfait ce code job75 c'est exactement ce que je cherche!!

J'ai seulement un problème quand je l'ajoute à mon classeur, la ligne s'ajoute seulement dans le tableau sélectionné et non dans les autres..

Pouvez-vous m'aider svp ? :) voici mon fichier ci-joint
 

Pièces jointes

  • test.xlsm
    778 KB · Affichages: 2

job75

XLDnaute Barbatruc
Comme il y a une formule en colonne A il faut l'entrer quand on ajoute une ligne, fichier (2) :
VB:
w.Range(ad).Cells(2, 1) = "=Synthese[@Opération]" 'formule en colonne A
 

Pièces jointes

  • test(2).xlsm
    770.6 KB · Affichages: 3

Discussions similaires

Réponses
10
Affichages
159

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG