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
Bonjour le fil, le forum, michel.dupont, Victor21, Lone-Wolf, job75

@job75
Je me suis permis de reprendre ta macro initiale pour la modifier comme suit
Tu valides la chose?
(ou il y a un truc qui m'échappe et qui explique pourquoi tu n'as pas opté pour ce "allione" ?)
VB:
Sub MasqueDemasque()
Application.ScreenUpdating = False
Rows(1).Insert
With [B1:ABC1]
.Value = "=1/(B3=$ABE6)"
On Error Resume Next 'si aucune SpecialCell
.SpecialCells(-4123, 16).EntireColumn.Hidden = Not .SpecialCells(-4123, 16).EntireColumn.Hidden
End With
Rows(1).Delete
End Sub
 
Dernière édition:

Victor21

XLDnaute Barbatruc
Re, Lone-wolf.
[...] relis le message de Michel. Mise à part la colonne A, il ne veux que 2 colonnes qui soient affichées. [...]
"Mis à part" est invariable, et vouloir, à la 3° personne du singulier de l'indicatif présent, se termine par un T.
Et...
... Moi aussi, je sais être lourd ;)
Le Coche et la Mouche
Dans un chemin montant, sablonneux, malaisé,
Et de tous les côtés au Soleil exposé,
Six forts chevaux tiraient un Coche.
Femmes, Moine, vieillards, tout était descendu.
L'attelage suait, soufflait, était rendu.
Une Mouche survient, et des chevaux s'approche ;
Prétend les animer par son bourdonnement ;
Pique l'un, pique l'autre, et pense à tout moment
Qu'elle fait aller la machine,
S'assied sur le timon, sur le nez du Cocher ;
Aussitôt que le char chemine,
Et qu'elle voit les gens marcher,
Elle s'en attribue uniquement la gloire ;
Va, vient, fait l'empressée ; il semble que ce soit
Un Sergent de bataille allant en chaque endroit
Faire avancer ses gens, et hâter la victoire.
La Mouche en ce commun besoin
Se plaint qu'elle agit seule, et qu'elle a tout le soin ;
Qu'aucun n'aide aux chevaux à se tirer d'affaire.
Le Moine disait son Bréviaire ;
Il prenait bien son temps ! une femme chantait ;
C'était bien de chansons qu'alors il s'agissait !
Dame Mouche s'en va chanter à leurs oreilles,
Et fait cent sottises pareilles.
Après bien du travail le Coche arrive au haut.
Respirons maintenant, dit la Mouche aussitôt :
J'ai tant fait que nos gens sont enfin dans la plaine.
Ça, Messieurs les Chevaux, payez-moi de ma peine.
Ainsi certaines gens, faisant les empressés,
S'introduisent dans les affaires :
Ils font partout les nécessaires,
Et, partout importuns, devraient être chassés.
 

job75

XLDnaute Barbatruc
@job75
Je me suis permis de reprendre ta macro initiale pour la modifier comme suit
Tu valides la chose?
(ou il y a un truc qui m'échappe et qui explique pourquoi tu n'as pas opté pour ce "allione" ?)
VB:
Sub MasqueDemasque()
Application.ScreenUpdating = False
Rows(1).Insert
With [B1:ABC1]
.Value = "=1/(B3=$ABE6)"
On Error Resume Next 'si aucune SpecialCell
.SpecialCells(-4123, 16).EntireColumn.Hidden = Not .SpecialCells(-4123, 16).EntireColumn.Hidden
End With
Rows(1).Delete
End Sub
Pas du tout JM, et je te laisse chercher pourquoi.
 

job75

XLDnaute Barbatruc
Re,

Si l'on veut une seule macro on peut utiliser celle-ci :
Code:
Sub MasqueDemasque()
'raccourci clavier Ctrl+M
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
End Sub
A+
 

Staple1600

XLDnaute Barbatruc
Re

@job75
Merci, je n'avais pas pensé à cela.
J'ai donc testé les deux macros comme suit*
Mais elles font toujours la même chose, non ? ;)
(1ère exécution masque, la 2nde démasque)

*: macro pour créer la situation avant de tester les macros.
VB:
Sub MiseEnSituation()
Range("A2,C2,E2,ABE5") = Date
Range("G:I,M:N").EntireColumn.Hidden = True
End Sub
 

michel.dupont

XLDnaute Occasionnel
Bonjour
merci à tous pour votre intérêt manifeste
je joins comme demandé mon fichier
mon projet est celui de créer un fichier de réservation de véhicule pour un service d'accueil pour personnes handicapées...j'espère que le fichier en attaché vous permettra de comprendre ma demande
bonne journée à tous
Michel
 

Discussions similaires

Réponses
2
Affichages
113