XL 2016 VBA masquer les colonnes vides

MousLy

XLDnaute Nouveau
Bonjour je veux integrer un code qui me permet de cacher les colonnes qui ne seront pas remplis. les colonnes a remplir c'est a partir du colonnes H a L et de P à S c'est deux plages qui me permet de faire des comparaison. je joins le code ci dessous.
VB:
Sub Masquer_Colonne()
  Dim colRef As Integer
    colRef = 8
    
      For Each item In part
 If colRef >= 8 And colRef <= 12 Then
            ThisWorkbook.Sheets("Sheets1").Cells(2, colRef).Value = item
            ThisWorkbook.Sheets("Sheets1").Cells(3, colRef).Value = val
            colRef = colRef + 1   
        End If
End Sub
 
Solution
Re bonsoir Mously, Bonsoir Soan,
En PJ un exemple pour masquer et démasquer les colonnes A:G et M:O avec :
VB:
Sub MasqueCol()
    [A:G].EntireColumn.Hidden = True
    [M:O].EntireColumn.Hidden = True
End Sub
Sub DeMasqueCol()
    [A:G].EntireColumn.Hidden = False
    [M:O].EntireColumn.Hidden = False
End Sub

soan

XLDnaute Barbatruc
Inactif
Bonsoir MousLy,

On ne sait pas ce qu'est part ; pour pouvoir t'aider, tu devrais joindre
ton fichier (s'il y a des données confidentielles, remplace-les par des
données fictives)
; avec ton fichier, on verra mieux quelles sont les
données des colonnes H:L et P:S.

Si j'ai bien compris, tu veux masquer les colonnes de H:L et P:S
qui ne contiennent aucune donnée (il n'y a que les en-têtes de
colonnes)
.

soan
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re bonsoir Mously, Bonsoir Soan,
En PJ un exemple pour masquer et démasquer les colonnes A:G et M:O avec :
VB:
Sub MasqueCol()
    [A:G].EntireColumn.Hidden = True
    [M:O].EntireColumn.Hidden = True
End Sub
Sub DeMasqueCol()
    [A:G].EntireColumn.Hidden = False
    [M:O].EntireColumn.Hidden = False
End Sub
 

Pièces jointes

  • MasqueColonne.xlsm
    13 KB · Affichages: 14

MousLy

XLDnaute Nouveau
Bonsoir MousLy,

On ne sait pas ce qu'est part ; pour pouvoir t'aider, tu devrais joindre
ton fichier (s'il y a des données confidentielles, remplace-les par des
données fictives)
; avec ton fichier, on verra mieux quelles sont les
données des colonnes H:L et P:S.

Si j'ai bien compris, tu veux masquer les colonnes de H:L et P:S
qui ne contiennent aucune donnée (il n'y a que les en-têtes de
colonnes)
.

soan
Effectivement Soan les colonnes de H:L sont réservées pour des données que l'utilisateur doit renseignés qui seront des données de référence. Et les colonnes de P:S aussi doivent être renseignées par des données qu'ont doit comparer avec les données de références. Mais si l'utilisateur choisit une donnée, deux ou plus que ça soit les données de réferénces ou les données à comparer je veux que les autres colonnes qui restent soient cachées.
 

Pièces jointes

  • Comparaison.PNG
    Comparaison.PNG
    39.5 KB · Affichages: 3

soan

XLDnaute Barbatruc
Inactif
Bonsoir MousLy, le fil,

Je suis content que tu aies trouvé une solution ! :)

Je poste quand même la mienne :
VB:
Option Explicit

Dim nlm&

Private Sub Job(col1 As Byte, col2 As Byte)
  Dim dlg&, k As Byte
  For k = col1 To col2
    dlg = Cells(nlm, k).End(3).Row
    If dlg = 1 Then Columns(k).Hidden = -1
  Next k
End Sub

Sub Masquer_Colonnes()
  Application.ScreenUpdating = 0: nlm = Rows.Count
  Job 8, 12: Job 16, 19
End Sub
Pour le fichier joint, fais Ctrl e ➯ les bonnes colonnes sont masquées

---------------------------------------------------------------------------------

Je m'étais absenté, d'où mon retard ; puis ça m'a pris beaucoup
de temps pour recopier des informations de ton image .png !

La prochaine fois, joins un fichier Excel, pas une image !


soan
 

Pièces jointes

  • Exo MousLy.xlsm
    15.6 KB · Affichages: 1
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Ajout : je ne sais pas trop si la ligne 2 est une ligne
d'en-têtes de colonnes, ou si c'est des données.

Si la ligne 2 est une ligne de données, alors dans le code VBA,
tu dois remplacer « If dlg = 1 » par « If dlg < 3 » :
VB:
Private Sub Job(col1 As Byte, col2 As Byte)
  Dim dlg&, k As Byte
  For k = col1 To col2
    dlg = Cells(nlm, k).End(3).Row
    If dlg < 3 Then Columns(k).Hidden = -1
  Next k
End Sub
Et dans ce cas, la colonne R aussi sera masquée.

soan
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
262

Statistiques des forums

Discussions
312 303
Messages
2 087 047
Membres
103 441
dernier inscrit
MarioC