Masquer colonne si cellule vide
Résolu
rodger85830
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
rodger85830 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
rodger85830 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Masquer cellule vide excel
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Word et excel gratuit - Guide
6 réponses
Le code n'était valable que pour une seule cellule non vide
Ceci devrait aller un peu plus vite dans ton cas
Cdlmnt
Ceci devrait aller un peu plus vite dans ton cas
Const codate = 1
Const cofin = 10
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim co As Long, li As Long
If Target.Value = "" Then Target.Offset(1, 0).Select: Exit Sub
If Not Intersect(Target, Columns(codate)) Is Nothing Then
Columns.Hidden = False
Application.ScreenUpdating = False
li = Target.Row
For co = codate + 1 To cofin
If Cells(li, co).Value = "" Then
Columns(co).Hidden = True
End If
Next co
End If
Application.ScreenUpdating = True
Target.Offset(1, 0).Select
End Sub
Cdlmnt
Bonjour
1. est ce que tu as d'autres colonnes après la colonne E ?
2. est ce que tu as d'autres lignes après la ligne 4 ?
Cdlmnt
1. est ce que tu as d'autres colonnes après la colonne E ?
2. est ce que tu as d'autres lignes après la ligne 4 ?
Cdlmnt
Bonjour,
Avec ton exemple, tu n'as aucune colonne vide mais par contre tu n'as qu'une information par date donc tu ne peux pas avoir un traitement global qui puisse masquer puisque tes dates paraissent réparties sur un colonne mois spécifique.
Avec ton exemple, tu n'as aucune colonne vide mais par contre tu n'as qu'une information par date donc tu ne peux pas avoir un traitement global qui puisse masquer puisque tes dates paraissent réparties sur un colonne mois spécifique.
Un début, à mettre dans le module de la feuille à traiter.
Un double-clic en colonne A pour masquer les colonnes correspondantes
Cdlmnt
Un double-clic en colonne A pour masquer les colonnes correspondantes
Option Explicit
Const codate = 1
Const cofin = 5
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim co As Long, li As Long
If Target.Value = "" Then Exit Sub
If Not Intersect(Target, Columns(codate)) Is Nothing Then
li = Target.Row
For co = codate + 1 To cofin
If Cells(li, co).Value = "" Then
Columns(co).Hidden = True
Else
Columns(co).Hidden = False
End If
Next co
End If
End Sub
Cdlmnt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour et merci pour cette réponse rapide et satisfaisante
réponse a ccm81
oui les colonnes vont jusqu’à HR mais peuvent aller encore plus loin
et les lignes jusqu’à 100 c'est a dire 100 dates
c'est super ça marche bien ,je vais surement l'adopter
je l'ai arrangé a ma manière , mais n'est pas aussi rapide que la macro que j'avait ,le temps de latence n'est pas monstrueux environ 2.5 secondes
et l'autre macro était 1 seconde
j'ai du descendre ces 2 lignes car macro pas accepté
Const codate = 2
Const cofin = 230
voici mon code peut-être est il a améliorer
petite question supplémentaire
comment le faire commencer a la ligne 5 et finir a la ligne 100
je gagnerai peut être du temps
réponse a ccm81
oui les colonnes vont jusqu’à HR mais peuvent aller encore plus loin
et les lignes jusqu’à 100 c'est a dire 100 dates
c'est super ça marche bien ,je vais surement l'adopter
je l'ai arrangé a ma manière , mais n'est pas aussi rapide que la macro que j'avait ,le temps de latence n'est pas monstrueux environ 2.5 secondes
et l'autre macro était 1 seconde
j'ai du descendre ces 2 lignes car macro pas accepté
Const codate = 2
Const cofin = 230
voici mon code peut-être est il a améliorer
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
Const codate = 2
Const cofin = 230
Dim co As Long, li As Long
If Target.Value = "" Then Exit Sub
If Not Intersect(Target, Columns(codate)) Is Nothing Then
li = Target.Row
For co = codate + 1 To cofin
If Cells(li, co).Value = "" Then
Columns(co).Hidden = True
Else
Columns(co).Hidden = False
End If
Next co
End If
With Worksheets("Analyses")
.Select
.Outline.ShowLevels ColumnLevels:=1
End With
Application.ScreenUpdating = True
End Sub
petite question supplémentaire
comment le faire commencer a la ligne 5 et finir a la ligne 100
je gagnerai peut être du temps
1. Si tu n'as qu'une seul valeur par ligne de date, ceci devrait aller plus vite
2. le nombre de lignes n'a pas d'importance pour la rapidité de l'exécution
Cdlmnt
Const codate = "A"
Const cofinPlusUne = "F" ' dernière colonne occupée plus une
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim co As Long, li As Long, adr As String, co1 As String, co2 As String, co0 As String
If Target.Value = "" Then Target.Offset(1, 0).Select: Exit Sub
If Not Intersect(Target, Columns(codate)) Is Nothing Then
Application.ScreenUpdating = False
Columns(codate & ":" & cofinPlusUne).Hidden = False
li = Target.Row
co = Cells(li, Columns.Count).End(xlToLeft).Column
adr = Cells(li, co).Address
co0 = Split(adr, "$")(1)
If co0 = codate Then Exit Sub
adr = Cells(li, co).Offset(0, -1).Address
co1 = Split(adr, "$")(1)
adr = Cells(li, co).Offset(0, 1).Address
co2 = Split(adr, "$")(1)
If co1 <> codate Then Columns("B:" & co1).Hidden = True
If co2 <> cofinPlusUne Then Columns(co2 & ":" & cofinPlusUne).Hidden = True
End If
Application.ScreenUpdating = True
Target.Offset(1, 0).Select
End Sub
2. le nombre de lignes n'a pas d'importance pour la rapidité de l'exécution
Cdlmnt
a+ pour autre chose