Macro masquer ligne/MAJ tcd

Al09

XLDnaute Nouveau
Bonjour à tous,

J'aurais plusieurs questions :)

Q°1: Est-ce que vous connaîtriez une commande (en macro) pour masquer automatiquement des lignes vides (à partir de la ligne 5 car avant je laisse la place pour qu'on pousse écrire ce qu'on veut) ?

Q°2 : Tjs en vb, quelle est la commande pour mettre à jour un tcd ?

En fait, j'ai créé plusieurs tcd que j'ai placé les uns en dessous des autres. Tous se réfèrent à la même base de données. Pour pouvoir mettre à jour ces tableaux, j'ai laissé beaucoup de lignes entre chaque tableau (sinon ça m'affiche un message d'erreur quand j'ai trop de données). Ce que j'aurais aimé, c'est qu'il y ait un bouton et que dès qu'on clique dessus, tous les tcd se mettent à jour et qu'il masque les lignes que j'ai laissé en plus.
Je sais pas si je suis très claire...:p

Merci d'avance!
 

Pierrot93

XLDnaute Barbatruc
Re : Macro masquer ligne/MAJ tcd

Re

pour ton 2ème problème, regarde le code ci-dessous, modifies le A et le 1 en rouge et gras, par la colonne sur laquelle tu pourra t'appuyer pour tester la cellule vide :

Code:
Sub test()
Dim i As Integer
For i = Range("[COLOR="Red"][B]A[/B][/COLOR]65536").End(xlUp).Row To 5 Step -1
    If IsEmpty(Cells(i, [COLOR="red"][B]1[/B][/COLOR])) Then Rows(i).Hidden = True
Next i
End Sub

@+
 

Al09

XLDnaute Nouveau
Re : Macro masquer ligne/MAJ tcd

ça marche plutôt bien!! :) Super!

Seul hic : (j'ai laissé le A et le 1 qui était en rouge) Comme je disais j'ai fait plusieurs tableaux et ça ne supprime les espaces que entre le premier et le 2ème tableau mais pas entre le 2ème et le 3ème tableau, saurais-tu pourquoi ?

Ensuite, désolée, j'ai oublié de préciser juste une chose, j'aurais aimé que toutes les lignes vides soient supprimées sauf une (afin de laisser de l'espace entre les tableaux)

Merci encore.
 

Pierrot93

XLDnaute Barbatruc
Re : Macro masquer ligne/MAJ tcd

Re

pour les commentaires du code, voir ci dessous :

Code:
Option Explicit
Sub test()
'déclaration de la variable
Dim i As Integer
'boucle à partir de la dernière ligne de la colonne A dont la cellule
'est non vide, jusqu'à la ligne 5, step -1 signifie que l'on remonte
For i = Range("A65536").End(xlUp).Row To 5 Step -1
    'si la cellule de la ligne X (représentée par la variable i), colonne 1
    'est vide la ligne est masquée
    If IsEmpty(Cells(i, 1)) Then Rows(i).Hidden = True
Next i
End Sub

Quand à ton problème sur les ligne entre ton 2ème et ton 3ème tableau, cela dépend peut être du choix de la colonne à tester... sans un petit fichier, cela va être difficile de t'en dire plus...

@+
 

Al09

XLDnaute Nouveau
Re : Macro masquer ligne/MAJ tcd

C'est bon, j'ai compris ton code et j'ai donc pu l'adapter à mon cas.
Désolée de ne pas avoir mis de fichier joint mais il s'agit d'un fichier confidentiel...
En tout cas encore merci.

Une dernière chose, si je peux me permettre. Peut-on laisse une ligne disponible entre deux tableaux (pour laisser de la place)?

Merci.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Macro masquer ligne/MAJ tcd

Bonjour Alo

j'ai modifié le code comme ci-dessous. J'espère que cela s'adaptera à ton cas, sans voir les TCD difficile...

Par contre, il faut que lesTCD soient créés dans l'ordre d'affichage, le 1er créé en haut de ta feuille et les autres à la suite...et qu'ils n'utilisent pas des plages communes.

Enfin, tu devrais pouvoir adapté... en espérant avoir été clair...

Code:
Option Explicit
Sub test()
'déclaration de la variable
Dim i As Integer
'boucle à partir de la dernière ligne de la colonne A dont la cellule
'est non vide, jusqu'à la ligne 5, step -1 signifie que l'on remonte
For i = Range("A65536").End(xlUp).Row To 5 Step -1
    'si la cellule de la ligne X (représentée par la variable i), colonne 1
    'est vide la ligne est masquée
    If IsEmpty(Cells(i, 1)) Then Rows(i).Hidden = True
Next i
'boucle sur tous les TCD sauf le 1er
For i = Feuil1.PivotTables.Count To 2 Step -1
'crée un bloc d'instruction, pour execution sur la plage du TCD
    With Feuil1.PivotTables(i).TableRange2
    'split décompose la chaine de caractères permettant de déterminer
    'la 1ère ligne du TCD. -1 pour afficher celle du dessus.
        If Rows(Split(Split(.Address, ":")(0), "$")(2) - 1).Hidden Then _
            Rows(Split(Split(.Address, ":")(0), "$")(2) - 1).Hidden = False
    End With
Next i
End Sub

bonne journée
@+
 

Al09

XLDnaute Nouveau
Re : Macro masquer ligne/MAJ tcd

Bonjour Pierrot,

Merci pour ton code, je vais y jeter un oeil mais tous mes tableaux utilisent la même plage de données...

Hier soir, j'ai modifié le code pour l'adapté à mon cas car j'avais des lignes qui étaient masquées alors que ça ne devait pas l'être.
Pour cela j'ai introduit une boucle sur les colonnes. J'ai joint mon code en pièce jointe.

Autrement, pour l'histoire de la ligne qui sépare chaque tableau, j'ai écrit quelque chose sur la ligne et je lui ai donné la couleur blanche... j'ai fait ce que j'ai pu :)

Très bonne journée et bon week-end en avance.
 

Al09

XLDnaute Nouveau
Re : Macro masquer ligne/MAJ tcd

Le fichier est trop gros, voici le code :

Sub Macro1()
'
' Macro1 Macro
'
Select Case MsgBox("Voulez-vous mettre à jour le fichier", vbYesNo)
Case vbYes
ThisWorkbook.RefreshAll

Dim i As Integer
Dim j As Integer
Dim n As Integer

For i = Range("j65536").End(xlUp).Row To 5 Step -1
n = 0
For j = 1 To 100

If IsEmpty(Cells(i, j)) Then n = n + 1
Next j
If n = 100 Then Rows(i).Hidden = True
Next i


Case vbNo
Exit Sub
End Select
'
End Sub
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Macro masquer ligne/MAJ tcd

Re

as tu essayé le dernier code que je t'ais donné pour insertion ligne entre 2 TCD ? Quand je parlais de chevauchement de plage, ce n'était pas des données source des plages utilisées par l'affichage des TCD....

bonne fin d'après midi
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 287
Messages
2 086 827
Membres
103 397
dernier inscrit
Kilement