Comment rendre invisible ensemble de cellule

Fermé
flexi2202 - 8 oct. 2018 à 03:18
 flexi2202 - 14 oct. 2018 à 00:31
Bonjour a tous
j ai un calendrier avec les jours les uns a cote des autres et sous chaque jour 3 colonnes et donc je me retrouve avec 365 colonnes fois 3
je souhaiterais lorsque je sélectionne un jour que les jours a gauche a droite deviennent invisible et donc qu il me reste juste la colonne jour et les 3 sous colonnes visible
merci de l aide




23 réponses

Mike-31 Messages postés 18342 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 2 novembre 2024 5 103
Modifié le 12 oct. 2018 à 16:33
Re,

récupère une possibilité de fichier 170 KO piloter par VBA que tu peux voir soit en clic droit sur l'onglet de feuille et Visualiser le code ou touche Alt et touche F11
ou tu trouveras ce code annoté simplifié et annoté pour comprendre ce que chaque ligne fait
le code s'active dès que tu sélectionnes une date cellule A3

Option Explicit

Private Sub Worksheet_Change(ByVal target As Range)
Dim CellAdress, c As Range ' ----------------------------- déclaration des variables
Dim i As Integer
If Not Intersect(target, Range("A3")) Is Nothing Then ' -- active le code au changement des valeurts cellule A3
On Error Resume Next '------------------------------------ gestion des erreurs, évite le blocage du code
Application.ScreenUpdating = False ' ----------------- suspend le rafraichissement écran, accélérer le code
Columns("C:APH").EntireColumn.Hidden = False ' --- masque les colonnes de C à APH
Columns("C:APH").ColumnWidth = 10 ' -------------- réduit la largeur des colonnes à 10
Range("A3:APH3").NumberFormat = "General" ' ------ change le format de la plage date en format standard
With ActiveSheet.Range("C3:APH3") ' ---------- boucle sur la plage pour rechercher la valeur critère en A3
Set c = .Find([A3], LookIn:=xlValues)
If Not c Is Nothing Then
CellAdress = c.Address ' ------------- identifie l'adresse de la valeur trouvée
End If
End With ' ------------------------------------ arrête la boucle de recherche
Range(CellAdress).Select ' -------------------- sélectionne la valeur trouvée
For i = 3 To 1100 ' ------------------------------- boucle sur les colonnes de 3 à 1100 soit de C à APH
If Cells(3, i) <> [A3] Then ' ----------------- ligne 3 les cellules ne contenant pas la valeur
Cells(3, i).EntireColumn.Hidden = True ' -- les colonnes sont masquées
Else ' ---------------------------------------- sinon si la valeur est trouvée
Cells(3, i).EntireColumn.Hidden = False ' - la colonne est affichée
End If ' -------------------------------------- fin de la condition
Next i ' ------------------------------------------ fin du bouclage ligne 3 des colonnes C à APH
ActiveCell.Offset(-1, 0).Select ' --------------------- sort de la cellule fusionnée
Range(ActiveCell, ActiveCell.Offset(0, 2)).Select ' --- sélectionne les trois cellules correspondates au jour trouvé
Selection.EntireColumn.Hidden = False ' --------------- affiche les trois colonnes concernées
Selection.ColumnWidth = 40 ' -------------------------- redimentionne la largeur des colonnes concernées à 40
Range("C3:APH3").NumberFormat = "dddd dd/mm/yyyy" ' --- rétabli l'affichage "jour semaine jour/mois/année" plage C3:APH3
[A3].NumberFormat = "dd/mm/yyyy" ' -------------------- rétabli l'affichage de la cellule critère A3 jour/mois/année
Application.ScreenUpdating = True ' ----------------------- rétabli le rafraichissement écran
End If ' -------------------------------------------------- fin de la condition
End Sub ' ------------------------------------------------- fin de la procédure

https://www.cjoint.com/c/HJmoF6VpLKj
1
Raymond PENTIER Messages postés 58714 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 3 novembre 2024 17 229
8 oct. 2018 à 03:28
Impossible.
0
Raymond PENTIER Messages postés 58714 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 3 novembre 2024 17 229
8 oct. 2018 à 05:53
... sauf, peut-être, par VBA !
Alors si tu as de la chance, un connaisseur te programmera une macro.
Mais j'en doute !
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
8 oct. 2018 à 07:06
Bonjour,

les cellules invisibles d'aujourd'huis redeviendront visibles demain??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PapyLuc51 Messages postés 4391 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 28 octobre 2024 1 445
Modifié le 8 oct. 2018 à 08:17
Bonjour,

Salutations Raymond et f894009

Ou peut-être utiliser le fractionnement

https://www.cjoint.com/c/HJifWrbmJKN

Cordialement
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
8 oct. 2018 à 12:24
bonjour
merci a tous pour votre aide
super cette idée pour le volet a gauche , y aurait il moyen de faire une recherche et d afficher la date lors d une recherche a l aide d un mini calendrier
pour l instant j ai remplacer le 1,2,3,4 ect ...par des dates
donc lorsque on clic sur une date du mini calendrier que le jour s affiche a gauche
pour repondre a f894009 , oui les donnees rentrees sous les dates doivent etre visible si on rappelle la date
merci de votre aide a tous
0
PapyLuc51 Messages postés 4391 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 28 octobre 2024 1 445
Modifié le 9 oct. 2018 à 06:32
Bonjour,

Je ne sais pas si ça marchera, ça risque d'agir sur les deux parties séparées de la feuille ; à moins que les trois colonnes occupent toute la largeur de la page ce qui rendrait inutile le fractionnement.

à voir par les spécialistes d'excel, je passe la main.

Cordialement
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
9 oct. 2018 à 07:15
Bonjour,
Vous pouvez mettre votre fichier a dispo avec explications détaillées car se sont des cellules ou des colonnes qui doivent être masquées (invisibles)??
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
9 oct. 2018 à 23:57
bonjour

merci pour la réponse
voici mon début de fichier
avoir un mini calendrier et que quand je clique sur la date le jour correspondant vienne a l écran , les jours sont place en horizontal sur tout le classeur
https://www.cjoint.com/c/HJjv5MIVeMu
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
10 oct. 2018 à 08:03
Bonjour,

Donc quand vous dites la date du jour, ce n'est pas la date du jour en cour mais une date x d'un mois z.........??
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
10 oct. 2018 à 14:22
bonjour
merci pour la reponse
oui voila une date x d'un mois z
merci de votre aide
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
10 oct. 2018 à 18:19
Re,

Ok, je regarde la chose
0
Raymond PENTIER Messages postés 58714 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 3 novembre 2024 17 229
10 oct. 2018 à 18:53
Bonjour flexi2202

Etant donné que tes explications manquent de clarté, doit-on traduire
" j ai un calendrier avec les jours les uns a cote des autres et sous chaque jour 3 colonnes et donc je me retrouve avec 365 colonnes fois 3
je souhaiterais lorsque je sélectionne un jour que les jours a gauche a droite deviennent invisible et donc qu il me reste juste la colonne jour et les 3 sous colonnes visible "
par " J'ai un tableau avec les jours en ligne 4 sur 15 colonnes, réparties en 3 groupes de 5 colonnes, soit un total de 365*3*5=5475 colonnes. Je souhaiterais que lorsque je sélectionne un jour, seules les 15 colonnes correspondent soient affichées " ?
0
Raymond PENTIER Messages postés 58714 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 3 novembre 2024 17 229
Modifié le 10 oct. 2018 à 18:58
(suite)

Et " avoir un mini calendrier et que quand je clique sur la date le jour correspondant vienne a l écran " signifie qu'il nous faut te fournir un mini-calendrier, en plus de ton immense calendrier de 5000 colonnes ?

Et où faudrait-il placer ce mini-calendrier :
Dans une autre feuille, ou plus bas que la ligne 45 ?

0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 423
10 oct. 2018 à 19:27
Bonjour à tous

Un petit essai via vba (macro)
https://www.cjoint.com/c/HJkrAvZCGsB

Cdlmnt
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
10 oct. 2018 à 21:51
bonjour Raymond
voila tu as tout compris tu as mieux explique
tu as compris ce que je recherche
merci pour ton aide
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
10 oct. 2018 à 21:54
bonjour ccm81
voila parfait il faudrait juste que quand je clic dans le calendrier s affiche devant moi le jour avec les 15 colonnes
je suis en version excel 2016
merci pour le fichier
0
Mike-31 Messages postés 18342 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 2 novembre 2024 5 103
Modifié le 11 oct. 2018 à 11:27
Bonjour,

le 12 septembre tu as déjà posé la même demande, pourquoi ouvrir une nouvelle discussion en doublon
https://forums.commentcamarche.net/forum/affich-35580305-soucis-avec-les-mises-en-forme-conditionnelle

surtout que tu avais la solution avec ce classeur !
https://www.cjoint.com/c/HJljA3A53lj


0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
Modifié le 11 oct. 2018 à 12:32
bonjour
oui juste tu as raison
j ai la solution tout en poche
j aurais juste voulu savoir comment le reproduire d une autre manière sans utiliser de macro
merci de l aide et la reponse
0
Raymond PENTIER Messages postés 58714 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 3 novembre 2024 17 229
11 oct. 2018 à 15:05
Tu as lu mes réponses #1 et #2 ?
0
les reponses 1 et 2 ???
0
Raymond PENTIER Messages postés 58714 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 3 novembre 2024 17 229
12 oct. 2018 à 00:29
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
12 oct. 2018 à 00:33
merci pour les liens oui oui j avais vu
0
PapyLuc51 Messages postés 4391 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 28 octobre 2024 1 445
11 oct. 2018 à 18:32
Bonsoir

Une idée avec des hyperliens mais un peu long à mettre en place

https://www.cjoint.com/c/HJlqEODpvP7

Cordialement
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
11 oct. 2018 à 19:17
bonsoir
oui je trouve cela plutôt assez sympa comme idée
pourrait on le faire avec un mini calendrier par exemple ou l on choisi la date grace a la souris
merci pour le fichier
0
PapyLuc51 Messages postés 4391 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 28 octobre 2024 1 445
Modifié le 12 oct. 2018 à 07:27
Bonjour,

https://www.cjoint.com/c/HJmeLDcpLX7

Je te laisse continuer la mise en place - dans l'exemple les colonnes grises restent apparentes ; celles en jaune sont à masquer - ainsi tu auras ton mini calendrier.

Je ne saurai trop te conseiller de faire un feuillet par mois - tu n'aurais donc qu'une seule fois la colonne F de feuillet 2 qui servirait pour toute l'année.

J'essaye ça dans la journée et j'envoie un exemple.

Cordialement
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
12 oct. 2018 à 22:56
bonsoir
merci beaucoup pour ce fichier
mais lorsque je parlais de mini calendrier je pensais a celui de windows pres de l horloge
non le feuillet de chaque mois c est pour avoir une vue globale sur les 3 carnets de rdv en mensuel
encore mille fois merci
0
Mike-31 Messages postés 18342 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 2 novembre 2024 5 103
Modifié le 12 oct. 2018 à 08:49
Re,

bien sur le problème peut se traiter par formule, mais bonjour le nombre de formule et la taille du fichier pour traiter 365 jours, sans parler de lenteur, déjà pour traiter 7 jours, 160 KO.
A la taille du fichier qui semble être un agenda, viendra certainement s'ajouter les saisis sur 50 lignes et 1100 colonnes
Comme le soulignait l'ami Raymond que je salue, ce problème ne peut se traiter que par VBA
une solution a été donnée sur la discussion initiale
https://forums.commentcamarche.net/forum/affich-35580305-soucis-avec-les-mises-en-forme-conditionnelle

avec ce classeur 36 KO
https://www.cjoint.com/c/HJljA3A53lj

et ce simple code
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3")) Is Nothing Then
On Error Resume Next
Application.ScreenUpdating = False
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = (Target.Value * 1 - DateSerial(Year([B3]), 1, 1) * 1) * 3 + 3
Application.ScreenUpdating = True
End If
End Sub

En VBA il est possible d'écrire un code pour afficher que les colonnes souhaitées, de dimensionner les colonnes affichées pour à peine 50 KO avec ce code qui peut être couplé à une liste de validation ou un bouton

Private Sub CommandButton1_Click()
Dim CellAdress, target, c As Range
Dim i As Integer
On Error Resume Next
Application.ScreenUpdating = False
Columns("C:APH").EntireColumn.Hidden = False
Columns("C:APH").ColumnWidth = 10
Range("B3:APH3").NumberFormat = "General"
With ActiveSheet.Range("C3:APH3")
Set c = .Find([B3], LookIn:=xlValues)
If Not c Is Nothing Then
CellAdress = c.Address
End If
End With
Range(CellAdress).Select
For i = 2 To 1100
If Cells(3, i) <> [B3] Then
Cells(3, i).EntireColumn.Hidden = True
Else
Cells(3, i).EntireColumn.Hidden = False
End If
Next i
ActiveCell.Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.Offset(0, 2)).Select
Selection.EntireColumn.Hidden = False
Selection.ColumnWidth = 30
Range("C3:APH3").NumberFormat = "dddd dd/mm/yyyy"
[B3].NumberFormat = "dd/mm/yyyy"
Application.ScreenUpdating = True
End Sub

0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
12 oct. 2018 à 11:31
re mike
un mega grand merci pour ton aide
je laisse donc tomber l histoire de passer autrement que par du VBA pour réaliser ce genre de code
je m y connais un tout petit peu en excel mais le VBA pour moi c est nouveau
et j y suis un peu perdu ,surtout si un jour je suis amené a modifier le fichier pour une raison quelconque
y a t il moyen d exécuter ce code VBA ligne par ligne afin de comprendre ce qu il fait
ou alors faut il passer par la case apprentissage
merci de l aide
0