apparition disparition colonnes sous vba

fred57111

XLDnaute Nouveau
Bonjour à tous,

J'ai toujours une galère avec mon fichier de planning.
Je dois faire apparaitre les colonnes des mois que je souhaite par exemple de juillet à septembre.
J'ai trouvé comment afficher tous les mois avant septembre ou avant juillet (1er bouton à gauche) mais je n'arrive pas à faire l'intervalle.
J'ai essayé sous excel en vain, je me suis donc rabattu sous vba que je maitrise assez peu.

Autre petit soucis sur le fichier sur lequel je dois mettre en place ces macros, les mois sont sur deux cellules I et J par exemple(capture ecran dans le fichier).
Je ne sais pas comment dire au systeme d'afficher I+J pour le mois 1 est-ce I:J I+J I;J
Merci par avance de votre aide

Frédéric
 

Pièces jointes

  • Classeur1.xls
    46 KB · Affichages: 107
  • Classeur1.xls
    46 KB · Affichages: 108
  • Classeur1.xls
    46 KB · Affichages: 108

Caillou

XLDnaute Impliqué
Re : apparition disparition colonnes sous vba

Bonjour,

tu peux utiliser la commande affichage personnalisé (anciennement vue) pour enregistrer différentes vues de ton classeur
par exemple tu enregistres une 1ere vue avec toutes les colonnes affichées
ensuite tu masques les colonnes juillet à décembre et tu enregistres une autre vue (que tu nommes Semestre1)
et ainsi de suite
Tu peux ensuite personnaliser la barre d'outils et rajouter la liste des vues que tu as enregistrées pour ce classeur

Caillou
 

alex67800

XLDnaute Impliqué
Re : apparition disparition colonnes sous vba

Bonjour Fred, Caillou,

Pourquoi pas comme ceci?

Code:
Private Sub CommandButton1_Click()
    
    'Réaffichage de toute les colonnes
    Range("c3:n3").EntireColumn.Hidden = True

    'Masquage de toutes les colonnes dont le mois ne vérifie pas les limites
    For Each Cel In Range("c3:n3").Cells
        If Cel = Range("A3").Value Or Cel = Range("b3").Value Then _
            Cel.EntireColumn.Hidden = False
        Next Cel

End Sub

Private Sub CommandButton2_Click()
    Range("c3:n3").EntireColumn.Hidden = False

End Sub
 

Efgé

XLDnaute Barbatruc
Re : apparition disparition colonnes sous vba

Bonjour fred57111, Caillou, alex67800,
La version d'alex ne laisse apparaitre que les mois de début et de fin et pas l'intervale entre les deux.
Je propose une version avec un tableau en feuille 2 (masquée), et un seul bouton pour afficher et masquer.
Cordialement
 

Pièces jointes

  • fred57111 (2).zip
    10.5 KB · Affichages: 52

Efgé

XLDnaute Barbatruc
Re : apparition disparition colonnes sous vba

Re
Je n'avais pas bien regardé l'image dans votre fichier.
Voici une nouvelle proposition pour prendre en compte les "doubles colonnes". Comme votre liste de validation des cellules A3 et B3 n'était plus bonne suite à l'insertion de colonnes, j'ai nommé la plage Feuil2 A1:A12 (MOIS).
Je vous ai mis des explications sur la feuille2.
Cordialement
 

Pièces jointes

  • fred57111 (3).zip
    11.3 KB · Affichages: 49

fred57111

XLDnaute Nouveau
Re : apparition disparition colonnes sous vba

Bonjour Caillou,

Merci pour ces infos, le soucis c'est que mon fichier test est en mois et que celui que je dois faire est en semaine et je dois absolument pouvoir afficher s40 à s44 aisément en choisisant l'écart entre deux listes déroulantes ou en inscrivant les chiffres á la main.
Ca ferait trop de vue différentes

Fred
 

alex67800

XLDnaute Impliqué
Re : apparition disparition colonnes sous vba

Bonjour tout le monde,
En effet c'est ce que j'avais compris, arfff ;)
Bonjour fred57111, Caillou, alex67800,
La version d'alex ne laisse apparaitre que les mois de début et de fin et pas l'intervale entre les deux.
Je propose une version avec un tableau en feuille 2 (masquée), et un seul bouton pour afficher et masquer.
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : apparition disparition colonnes sous vba

Bonjour à tous, au fil, au forum
Comme je n'étais pas content de mon usine à gaz hybride Macro / Feuille / Formule, j’ai refait le fichier uniquement en macro grâce à deux lignes attribuées à Wally dans ce post.
Comme il n’y a pas beaucoup d’exemples de récupération de la lettre de la colonne active, je poste mon résultat.:
Code:
Private Sub CommandButton1_Click()
'Si le bouton affiche "Masquer"
If CommandButton1.Caption = "Masquer" Then
    'Trouver le numéro de la dernière colonne utilisée
    DerCol = Sheets("Feuil1").Range("IV3").End(xlToLeft).Column
    'Récupérer la lettre de la dernière colonne (Wally)
    sAdr = Cells(1, DerCol).Address(1, 0)
    DercolAlpha = Mid(sAdr, 1, InStr(1, sAdr, "$") - 1)
    'Trouver de droite à gauche le numéro de colonne de début de plage à conserver
    For i = 3 To DerCol
        If Cells(3, i).Value = Sheets("Feuil1").Range("A3").Value Then
            'Récupérer la lettre de cette colonne (Wally)
            sAdr = Cells(1, i - 1).Address(1, 0)
            ColDebut = Mid(sAdr, 1, InStr(1, sAdr, "$") - 1)
        End If
    Next i
    'Trouver de gauche à gauche le numéro de colonne de fin de plage à conserver
    For j = DerCol To 3 Step -1
        If Cells(3, j).Value = Sheets("Feuil1").Range("B3").Value Then
            'Récupérer la lettre de cette colonne (Wally)
            sAdr = Cells(1, j + 1).Address(1, 0)
            ColFin = Mid(sAdr, 1, InStr(1, sAdr, "$") - 1)
        End If
    Next j
    'Masquer toute les colonnes de C à la dernière utilisée
    Columns("C:" & DercolAlpha).EntireColumn.Hidden = True
    'Afficher la plage de colonnes à conserver
    Columns(ColDebut & ":" & ColFin).EntireColumn.Hidden = False
    'Changer l'affichage du bouton
    CommandButton1.Caption = "Afficher"
'Si le bouton n'affiche pas "Masquer"
Else
    'Afficher toutes les colonnes
    Cells.EntireColumn.Hidden = False
    'Changer l'affichage du bouton
    CommandButton1.Caption = "Masquer"
End If
End Sub
Cordialement
 

Pièces jointes

  • fred57111 (4).zip
    13.3 KB · Affichages: 48

fred57111

XLDnaute Nouveau
Re : apparition disparition colonnes sous vba

Bonjour à toi Efgé,

j'ai réalisé mon ébauche ci-joint et en fait il y un point que je n'arrive pas à comprendre, si je débute par semaine 10 ou 21 par exemple j'ai un bug.
Aurais-tu une idée d'où vient un problème de ce type? J'ai du mal à comprendre
Je vais regarder ta nouvelle version, en tout cas j'ai davantage compris la programmation sous vba. Merci!!

Fred
 

Pièces jointes

  • Classeur1.xls
    35.5 KB · Affichages: 95
  • Classeur1.xls
    35.5 KB · Affichages: 98
  • Classeur1.xls
    35.5 KB · Affichages: 91

Efgé

XLDnaute Barbatruc
Re : apparition disparition colonnes sous vba

Re à tous, Bonjour fred57111,
Le problème vient de vos cellules fusionnées...
Pour ma première version : Vous mettez dans votre tableau les références des colonnes et non la référence de chaque cellule (la fin de la semaine 5 est en P et non en O)
Pour ma seconde version : Il faut adapter les cellules ou se trouvent les bornes aiinsi que la première colonne de votre tableau des semaines (G et non C).
Je vous joint une version macro qui fonctionne sur votre nouvel exemple, avec votre feuille modifiée.
Cordialement
 

Pièces jointes

  • fred57111 (5).zip
    11.2 KB · Affichages: 49

fred57111

XLDnaute Nouveau
Re : apparition disparition colonnes sous vba

Bonjour Efgé

j avoue avoir un peu de mal à comprendre, chaque semaine débute par la case G qui correspond au temps planifié et fini en R le temps réalisé
POur la semaine 5 le début est la colonne 0(G) et fin la colonne P(R)
J'ai enlevé la fusion des cellules (doc ci-joint et la problématique demeure sur certaines cases)
Les bornes du tableau sont pour moi les suivantes:de G à DF
Columns("G:DF").EntireColumn.Hidden = True
Merci pour votre aide
Cordialement

Frédéric
 

Pièces jointes

  • Classeur1.xls
    34 KB · Affichages: 93
  • Classeur1.xls
    34 KB · Affichages: 92
  • Classeur1.xls
    34 KB · Affichages: 87

fred57111

XLDnaute Nouveau
Re : apparition disparition colonnes sous vba

Bonjour Efgé,

je souhaiterai également comprendre cette programmation, à quoi correspondent les variables i et j et le nombre 3,
ainsi que les termes sAdr/ DercolAlpha/Mid(sAdr, 1, InStr(1, sAdr, "$") - 1)/
sAdr = Cells(1, DerCol).Address(1, 0)
DercolAlpha = Mid(sAdr, 1, InStr(1, sAdr, "$") - 1)
'Trouver de droite à gauche le numéro de colonne de début de plage à conserver
For i = 3 To DerCol
If Cells(3, i).Value = Sheets("Feuil1").Range("A3").Value Then
'Récupérer la lettre de cette colonne (Wally)
sAdr = Cells(1, i - 1).Address(1, 0)
ColDebut = Mid(sAdr, 1, InStr(1, sAdr, "$") - 1)
End If
Next i
'Trouver de gauche à gauche le numéro de colonne de fin de plage à conserver
For j = DerCol To 3 Step -1
If Cells(3, j).Value = Sheets("Feuil1").Range("B3").Value Then
'Récupérer la lettre de cette colonne (Wally)
sAdr = Cells(1, j + 1).Address(1, 0)
ColFin = Mid(sAdr, 1, InStr(1, sAdr, "$") - 1)
End If

Merci pour votre patience

Cordialement
Frédéric
 

Efgé

XLDnaute Barbatruc
Re : apparition disparition colonnes sous vba

Re
Pour votre post avec exemple : je ne comprend pas ou est le problème.
Pour les dernières questions:
Les variables i et j sont utilisées dans les deux boucles sur les colonnes. Je m'explique (enfin j'essaie...).
On cherche la dernière colonne utilisée dans votre tableau (DerCol):
Code:
DerCol = Sheets("Feuil1").Range("IV3").End(xlToLeft).Column
On cherche quelle cellule en ligne 3 contient la valeur de début de plage en commancant par la colonne 3 (C) dans votre premier exemple :
Code:
For i = [COLOR=red][B]3[/B][/COLOR] To DerCol
On cherche quelle cellule en ligne 3 contient la valeur de fin de plage en commancant par la dernière colonne et en remontant vers la première utilisée dans votre premier exemple la 3 :
Code:
For j = DerCol To [COLOR=red][B]3[/B][/COLOR] Step -1
L'utilisation de Cells(ligne, colonne) nous oblige à passer le i (numéro de colonne) en variable alphabétique (DercolAlpha).
Bon courage ;)
Cordialement

 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
493
Réponses
4
Affichages
396

Statistiques des forums

Discussions
312 493
Messages
2 088 950
Membres
103 989
dernier inscrit
jralonso