masquer toutes les colonnes sauf celle de la cellule active

michel.dupont

XLDnaute Occasionnel
bonjour
dans une feuille comprenant 733 colonnes (colonne A + 2 colonnes par jour dans l'année...donc colonne
A jusquà la colonne ABC)...
comment par macro masquer toutes les colonnes (excepté la colonne A) dont la cellule en ligne 2 n'est pas égale en valeur (il s'agit de date jj/mm/aa) à une cellule de référence (qui est la cellule "ABE5")
autrement dit..comment ne conserver dès lors que la première colonne (colonne A) et les colonnes qui ont en ligne 2 une cellule égale à la valeur de la cellule ABE5
en pratique par exemple - si la cellule FB 2 et FC 2 ont une date identique à celle reprise en ABE5 seuls les colonnes FB et FC doivent être affichées en plus de la colonne A qui doit être toujours visible..
bien entendu FB et FC peuvent varier...
j'espère ne pas avoir été trop "brouillon"
merci de votre intérêt
Michel
 

Staple1600

XLDnaute Barbatruc
Re

Pourtant les deux macros fonctionnent.
Pour t'en convaincre, testes les sur un fichier vide.
1) Tu lances d'abord la macro MiseEnSituation* (pour créer la situation de test)
*macro présente dans le message#25

Puis tu testes la macro de job75 ou la mienne et tu verras que cela fonctionne.
Les colonnes sont bien masquées, non ?
Puis démasquées à la seconde exécution.

PS: Désolé pour cette triste nouvelle.
 

job75

XLDnaute Barbatruc
Bonjour michel.dupont, JM,

Voyez le fichier joint et ces 2 macros :
Code:
Sub MasqueDemasque()
Application.ScreenUpdating = False
If TypeName([Masque]) <> "Boolean" Then ThisWorkbook.Names.Add "Masque", False
ThisWorkbook.Names.Add "Masque", Not [Masque]
Columns.Hidden = False
If [Masque] Then
    Rows(1).Insert
    [B1:ABC1] = "=1/(B3=$ABE6)"
    On Error Resume Next 'si aucune SpecialCell
    [B1:ABC1].SpecialCells(xlCellTypeFormulas, 16).EntireColumn.Hidden = True
    Rows(1).Delete
End If
Recherche 'pour sélectionner et cadrer
End Sub

Sub Recherche()
On Error GoTo erreur
Cells(2, Application.Match([ABE5], Rows(2), 0)).Select 'sélection
ActiveWindow.ScrollRow = 2: ActiveWindow.ScrollColumn = ActiveCell.Column 'cadrage
Exit Sub
'si date incorrecte
erreur:
MsgBox "La date " & [ABE5] & " n'est pas présente"
End Sub
J'ai corrigé votre macro Recherche, son seul intérêt c'est de cadrer la cellule en ligne 2.

A+
 

Pièces jointes

  • testreservation V4(1).xlsm
    2.9 MB · Affichages: 13

Staple1600

XLDnaute Barbatruc
Bonjour job75

Tu constates la même chose sur ton PC?
01MDProblem.jpg


PS: J'ai testé en masquant manuellement des colonnes (comme tu l'indiquais cf message#24 et #25)
Mais que ce soit avec ta macro ou la mienne, pas de problème constaté.
(Une exécution de la macro masque, la seconde démasque)
 

job75

XLDnaute Barbatruc
Bonjour job75

Tu constates la même chose sur ton PC?
Regarde la pièce jointe 1016350
Oui et avec Feuil1 Feuil2 Feuil3 cela fait même 5 ThisWorkbook...

Le fichier joint par michel.dupont est vérolé, ce genre de mésaventure est assez fréquent.

Pour terminer, dans la mesure où il n'y a que 2 cellules (consécutives) en ligne 2 égales à ABE5, ceci est plus simple :
Code:
Sub MasqueDemasque()
Application.ScreenUpdating = False
If TypeName([Masque]) <> "Boolean" Then ThisWorkbook.Names.Add "Masque", False
ThisWorkbook.Names.Add "Masque", Not [Masque]
Columns.Hidden = False
Recherche 'pour sélectionner et cadrer
If [Masque] Then
    [B:ABC].Columns.Hidden = True
    If ActiveCell.Row = 2 And ActiveCell = [ABE5] Then ActiveCell.EntireColumn.Resize(, 2).Hidden = False
End If
End Sub
Fichier (2).

A+
 

Pièces jointes

  • testreservation V4(2).xlsm
    2.9 MB · Affichages: 14

Discussions similaires

Réponses
2
Affichages
153

Statistiques des forums

Discussions
312 145
Messages
2 085 763
Membres
102 967
dernier inscrit
Syl34