Masquer colonne si cellule vide
Résolu/Fermé
rodger85830
Messages postés
20
Date d'inscription
mercredi 23 novembre 2016
Statut
Membre
Dernière intervention
23 janvier 2017
-
14 janv. 2017 à 19:19
rodger85830 Messages postés 20 Date d'inscription mercredi 23 novembre 2016 Statut Membre Dernière intervention 23 janvier 2017 - 15 janv. 2017 à 19:05
rodger85830 Messages postés 20 Date d'inscription mercredi 23 novembre 2016 Statut Membre Dernière intervention 23 janvier 2017 - 15 janv. 2017 à 19:05
A voir également:
- Masquer cellule vide excel
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Liste déroulante excel - Guide
- Verrouiller cellule excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
6 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
15 janv. 2017 à 18:18
15 janv. 2017 à 18:18
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
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
14 janv. 2017 à 21:21
14 janv. 2017 à 21:21
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
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 711
14 janv. 2017 à 21:25
14 janv. 2017 à 21:25
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.
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 14/01/2017 à 21:34
Modifié par ccm81 le 14/01/2017 à 21:34
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
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 711
14 janv. 2017 à 21:45
14 janv. 2017 à 21:45
Bonjour ccm81 et bonne année 2017 à toi et tes proches,
Bien vu comme méthode mais si l'on savait si la colonne est liée à la date ce serait bien plus compréhensible.
Bien vu comme méthode mais si l'on savait si la colonne est liée à la date ce serait bien plus compréhensible.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
rodger85830
Messages postés
20
Date d'inscription
mercredi 23 novembre 2016
Statut
Membre
Dernière intervention
23 janvier 2017
Modifié par rodger85830 le 15/01/2017 à 00:59
Modifié par rodger85830 le 15/01/2017 à 00:59
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
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
15 janv. 2017 à 16:37
15 janv. 2017 à 16:37
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
rodger85830
Messages postés
20
Date d'inscription
mercredi 23 novembre 2016
Statut
Membre
Dernière intervention
23 janvier 2017
15 janv. 2017 à 17:12
15 janv. 2017 à 17:12
Bonjour ccm81
les valeurs par ligne de date peut aller de 1 a 40 au max
j'ai essayé ce code mais ne m'affiche même pas une colonne
si pas mieux j'utiliserais le premier code ,mais effectivement il me semble que cela va plus vite mais bon il ne trouve rien non plus
merci
les valeurs par ligne de date peut aller de 1 a 40 au max
j'ai essayé ce code mais ne m'affiche même pas une colonne
si pas mieux j'utiliserais le premier code ,mais effectivement il me semble que cela va plus vite mais bon il ne trouve rien non plus
merci
15 janv. 2017 à 19:05
a+ pour autre chose