Selection de colonne a partir d'une case

  • Initiateur de la discussion Initiateur de la discussion mcj1997
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : Selection de colonne a partir d'une case

Bonjour,

Si chaque mois est composé de 6 colonnes, comme les mois de janvier, février et mars.
Le mois d'avril fait 7 colonnes.

Voici le code à placer dans la feuille concernée :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Val As String
Application.ScreenUpdating = False


Val = Sheets(1).Range("B1").Value

For i = 5 To 250 Step 1
    If Sheets(1).Cells(2, i).Value = Val Then
    Sheets(1).Columns(i).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 1).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 2).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 3).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 4).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 5).EntireColumn.Hidden = False
    i = i + 6
    Else
    Sheets(1).Columns(i).EntireColumn.Hidden = True
    End If
Next i

Application.ScreenUpdating = True

End Sub
 
Re : Selection de colonne a partir d'une case

Bonsoir MCJ, Goldenboy, bonsoir le forum,

Une autre proposition :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range 'déclare la variable r (Recherche)
Dim te As Range 'déclare la variable te (Tableau Entier)

If Target.Address <> "$B$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en B1, sort de la procédure
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set te = Range(Cells(1, 5), Cells(1, Application.Columns.Count)).EntireColumn 'définit le tableau entier te
te.Hidden = False 'affiche le tableau entier
'définit la recherche r (les colonnes entières en tenant compte du nombre de colonnes du mois)
Set r = Rows(2).Find(Target, , xlValues, xlWhole).Resize(1, r.MergeArea.Cells.Count).EntireColumn
te.Hidden = True 'masque te
r.Hidden = False 'affiche r
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
 
Re : Selection de colonne a partir d'une case

Bonjour,

Si chaque mois est composé de 6 colonnes, comme les mois de janvier, février et mars.
Le mois d'avril fait 7 colonnes.

Voici le code à placer dans la feuille concernée :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Val As String
Application.ScreenUpdating = False


Val = Sheets(1).Range("B1").Value

For i = 5 To 250 Step 1
    If Sheets(1).Cells(2, i).Value = Val Then
    Sheets(1).Columns(i).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 1).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 2).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 3).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 4).EntireColumn.Hidden = False
    Sheets(1).Columns(i + 5).EntireColumn.Hidden = False
    i = i + 6
    Else
    Sheets(1).Columns(i).EntireColumn.Hidden = True
    End If
Next i

Application.ScreenUpdating = True

End Sub

Deux questions :

- Avec ce code comment faire pour pouvoir afficher l'année entière ?
- Ma feuille est protégée et de ce fait le choix du mois est possible en B1 mais j'ai un rapport d'erreur que la feuille est protégée comment faire ? car je souhaite maintenir la protection de la feuille.

Merci d'avance,
 
Dernière édition:
Re : Selection de colonne a partir d'une case

Bonsoir le fil, bonsoir le forum,

Tu as raison. Le voici corrigé :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range 'déclare la variable r (Recherche)
Dim te As Range 'déclare la variable te (Tableau Entier)

If Target.Address <> "$B$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en B1, sort de la procédure
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set te = Range(Cells(1, 5), Cells(1, Application.Columns.Count)).EntireColumn 'définit le tableau entier te
te.Hidden = False 'affiche le tableau entier
Set r = Rows(2).Find(Target, , xlValues, xlWhole) 'définit la recherche r
'redéfinit la recherche r (les colonnes entières en tenant compte du nombre de colonnes du mois)
Set r = Rows(2).Find(Target, , xlValues, xlWhole).Resize(1, r.MergeArea.Cells.Count).EntireColumn
te.Hidden = True 'masque te
r.Hidden = False 'affiche r
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
 
Re : Selection de colonne a partir d'une case

Bonjour,

Fichier en PJ avec le code de goldenboy, toutefois j'ai besoin de faire plusieurs feuilles identiques dans le même fichier et le code ne fonctionne que dans la feuille 1 (EX en PJ).

Je profite aussi de ce message pour savoir comment afficher l'année entière après avoir l'affichage d'un mois ?
Comment protéger la feuille et laisser l'exécution du code possible car lorsque la feuille est protégée, il est possible de choisir un mois en B2 mais l'action ne s'exécute pas et il y a un message rappelant que la feuille est protégée ?

Merci d'avance,
 

Pièces jointes

Re : Selection de colonne a partir d'une case

Bonjour mcj1997,

Voici ton fichier arrangé avec les modifications que tu souhaitais.
- La protection fonctionne, toutes les cellules sont protégées sauf la cellule B2.
- Le code fonctionnera sur n'importe qu'elle feuille.
- Pour afficher l'année entière, j'ai rajouté "ANNEE" dans la liste déroulante de la cellule B2.

Très cordialement.
 

Pièces jointes

Re : Selection de colonne a partir d'une case

Bonjour mcj1997,

Voici ton fichier arrangé avec les modifications que tu souhaitais.
- La protection fonctionne, toutes les cellules sont protégées sauf la cellule B2.
- Le code fonctionnera sur n'importe qu'elle feuille.
- Pour afficher l'année entière, j'ai rajouté "ANNEE" dans la liste déroulante de la cellule B2.

Très cordialement.


Bonjour,

Merci Goldenboy c'est exactement ce qu'il me faut.

Cordialement,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
249
  • Question Question
Microsoft 365 Suivi charge/capa
Réponses
10
Affichages
357
Réponses
43
Affichages
816
Réponses
7
Affichages
201
Réponses
6
Affichages
167
Réponses
5
Affichages
212
Retour