XL 2013 Masquer tableaux structurés si vide de données ?

Leguyl

XLDnaute Occasionnel
Bonjour à tou(te)s,

Dans ma feuille "Commande", j'ai 6 tableaux structurés dans lesquels j'importe une partie des données des 6 gammes de produits provenant d'autres tableaux. Je n'ai pas le choix, qu'ils se trouvent tous sur la même feuille est une exigence de la boîte.

Or, toutes les gammes de produits ne sont pas toujours commandées, et je me retrouve donc parfois avec des tableaux vides. Même si ce n'est que deux lignes (en-tête de colonne comprise) par tableau vide, ça prend de la place pour rien et ce n'est pas top à l'impression.

Est-il possible de faire "disparaître" les tableaux vides sur cette feuille tout en les gardant disponibles pour une prochaine importation de données ?

Bonne journée,
Leguyl
 
Solution
Voici une autre version qui suppose qu'il n'y a que des lignes vides entre les tableaux quelque soit leur nombre variable. Si ce n'est pas le cas il faut utiliser la version du message précédent.
Le traitement est plus complexe mais c'est plus souple d'utilisation.

Dudu2

XLDnaute Barbatruc
Bonjour,
Ça dépend de la disposition des tableaux.
S'ils sont l'un en-dessous de l'autre, tu peux masquer les lignes avant impression.
Sinon il faut les Couper / Coller sur une feuille vierge de sauvegarde temporaire, faire l'impression, puis les Couper / Coller dans l'autre sens.
 

Leguyl

XLDnaute Occasionnel
Bonjour Dudu2,

Les tableaux sont bien l'un en-dessous de l'autre, et je les masque déjà manuellement mais c'est une belle perte de temps de faire ainsi pour chaque feuille contenant plusieurs tableaux. De plus, il ne faut pas oublier de les réafficher avant le prochain import de données.
 

Leguyl

XLDnaute Occasionnel
Alors faire la manip avec une macro ?
Re,

J'ai pensé le faire mais l'enregistreur de macro va me sortir un code du genre

VB:
Sub Macro1()
    Rows("35:36").EntireRow.Hidden = True
End Sub

... et ce n'est vraiment pas satisfaisant. Les lignes à masquer ne sont pas toujours les mêmes et parfois plusieurs tableaux peuvent être vides de données.

Ce que j'aimerais, c'est un code VBA qui puisse repérer les tableaux structurés ne contenant qu'une seule ligne (vide bien sûr) et masquer l'entièreté de ces tableaux, c'est à dire non seulement la fameuse ligne vide mais aussi celle affichant les entêtes de colonnes.

Bref, dans l'état actuel de mes connaissances VBA, ce n'est pas gagné.

Bonne soirée, ou journée si vous lisez ma réponse demain,
Leguyl
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Je peux te faire un code.
Soit j'utilise les noms des tableaux structurés qu'il faudrait alors que tu me donnes, soit je considère que tous les tableaux structurés de la page sont candidats au traitement auquel cas je peux les identifier par leurs numéros.
Se pose aussi la question des lignes de séparation des tableaux qu'il faudrait masquer avec les tableaux pour garder des espacements constants entre les tableaux à imprimer.
Combien de lignes au-dessus ou en-dessous à masquer avec un tableau ?

Je préfèrerais avoir la feuille en question mais je peux faire sans.

Que veux-tu que je fasse ?
- Une macro pour masquer
- Une macro pour démasquer
ou
- Un macro pour masquer / imprimer / démasquer ?
 

fanch55

XLDnaute Barbatruc
Bonsoir,
Le principe des tables structurées, c'est de cohabiter avec les autres cellules .
Si tu n'as que des tables structurées sur une seule page, pas de problèmes, on peut masquer les lignes adéquates et les ré afficher à la mise à jour.
Par contre, s'il y a des cellules informatives à droite ou à gauche, impossible de les masquer seules .

Un petit rappel à tous: les tables structurées si elles doivent se superposer, doivent être disposées de telle façon que la table "supérieure" en nombre de colonnes englobe toujours les suivantes, sinon message d'erreur lors de la mise à jour , du genre "peux pas faire parce que des cellules doivent être déplacées"
 
Dernière édition:

Leguyl

XLDnaute Occasionnel
Merci Dudu2 de me venir en aide. Tous les tableaux structurés d'une feuille donnée (par ex. la feuille Bon atelier) sont candidats au traitement. . Pour le nombre de lignes entre chaque tableau, une suffirait.

Robert, Eric et fanch55 m'avaient aimablement aider dans ce thread pour ce faire :

... mais je suppose qu'il faudra apporter des modifications au code si certains tableaux sont masqués.

Un code qui me permettrait de masquer les tableaux vides après l'import de données et un autre qui me permettent de les démasquer tous lorsque je les réinitialise. Je pourrais alors faire appel à l'un ou l'autre via un Call selon le besoin.

Je sais que ce serait beaucoup plus facile avec le fichier mais je ne suis pas autorisé à le mettre en ligne.
 

Dudu2

XLDnaute Barbatruc
J'ai bien vu le sujet précédent pour l'insertion de lignes.
Si les tableaux finissent par se tamponner ou absorber les lignes vides les séparant c'est que le code qui charge ces tableaux ne fait peut-être pas ce qu'il faut.
Lorsqu'on insert une ligne dans un tableau structuré, tout se décale vers le bas et il n'y a pas de ligne blanche de séparation qui soit utilisée pour le tableau.

Insérer une ligne à la fin du tableau:
VB:
ActiveSheet.ListObjects(1).ListRows.Add AlwaysInsert:=True
Insérer une ligne en 1ère position dans le tableau:
Code:
ActiveSheet.ListObjects(1).ListRows.Add (1)
Insérer une ligne en 2ème position dans le tableau:
Code:
ActiveSheet.ListObjects(1).ListRows.Add (2)
Et ça ne "mange" pas les lignes suivantes, mais les décale.

A ta place, je modifierais le code de valorisation des tableaux plutôt que de passer par une macro additionnelle qui ré-insert des lignes.
 

Dudu2

XLDnaute Barbatruc
Sinon pour masquer ou afficher les lignes des tableaux vides, après ajustement des constantes, notamment le nombre de lignes d'espacement entre les tableaux qui sont masquées en même temps que les tableaux vides.
A noter que NbLignesEspacementAvant avant le 1er tableau et NbLignesEspacementAprès après le dernier tableau ne sont pas pris en compte.
 

Pièces jointes

  • AfficherMasquerTableauxVides 1.xlsm
    25.2 KB · Affichages: 14
Dernière édition:

Dudu2

XLDnaute Barbatruc
Voici une autre version qui suppose qu'il n'y a que des lignes vides entre les tableaux quelque soit leur nombre variable. Si ce n'est pas le cas il faut utiliser la version du message précédent.
Le traitement est plus complexe mais c'est plus souple d'utilisation.
 

Pièces jointes

  • AfficherMasquerTableauxVides 2.xlsm
    26.2 KB · Affichages: 10
Dernière édition:

Leguyl

XLDnaute Occasionnel
Re,

Un grand merci à toi Dudu2. J'ai pu adapter ton code dans mon fichier de travail où j'y fais appel après y avoir modifié le nom de feuille et ça marche parfaitement.

Juste encore une petite question : comment puis-je appliquer ce même code à plusieurs feuilles sans devoir modifier dans le code le nom de feuille avant chaque import dans l'une ou l'autre ?
 
Dernière édition:

Discussions similaires