Comment rendre invisible ensemble de cellule

flexi2202 -  
 flexi2202 -
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

  • 1
  • 2
  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  2. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    Impossible.
    0
  3. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    ... sauf, peut-être, par VBA !
    Alors si tu as de la chance, un connaisseur te programmera une macro.
    Mais j'en doute !
    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    les cellules invisibles d'aujourd'huis redeviendront visibles demain??
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. PapyLuc51 Messages postés 4569 Date d'inscription   Statut Membre Dernière intervention   1 511
     
    Bonjour,

    Salutations Raymond et f894009

    Ou peut-être utiliser le fractionnement

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

    Cordialement
    0
  7. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. PapyLuc51 Messages postés 4569 Date d'inscription   Statut Membre Dernière intervention   1 511
       
      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
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  9. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
  10. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    bonjour
    merci pour la reponse
    oui voila une date x d'un mois z
    merci de votre aide
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Ok, je regarde la chose
      0
  11. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    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
  12. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    (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
  13. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous

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

    Cdlmnt
    0
  14. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    bonjour Raymond
    voila tu as tout compris tu as mieux explique
    tu as compris ce que je recherche
    merci pour ton aide
    0
  15. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
  16. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
       
      Tu as lu mes réponses #1 et #2 ?
      0
    2. flexi2202
       
      les reponses 1 et 2 ???
      0
    3. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
       
      merci pour les liens oui oui j avais vu
      0
  17. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. PapyLuc51 Messages postés 4569 Date d'inscription   Statut Membre Dernière intervention   1 511
       
      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
    2. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
       
      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
  18. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  19. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
  • 1
  • 2