Masquer X colonnes en fonction d'un nombre dans une cellule fixe

Bonjour,

j'ai chercher dans beaucoup de blog et de forum mais je n'ai pas trouver de réponse qui me satisfaisais

voici mon problème : j'aimerais que quand je rentre un chiffre entre 1 et 15 (par exemple 6) dans la cellule A1 les 6 collones a partir de la collone E soient masqués

et quand je met par exemple 12 les 12 collones a partir de la collone E soient masqués

si possible sans VBA mais j'y crois pas trop ^^

Merci d'avance

Bonjour

Essayez ceci :

Sub test()
Dim Nb As Byte, j As Byte

Nb = Range("A1").Value
j = 5
Cells.EntireColumn.Hidden = False
If Nb > 1 And Nb < 16 Then
    Range(Columns(Nb + j), Columns(j+1)).EntireColumn.Hidden = True
End If
End Sub

- Mettez un chiffre en A1
- Ensuite Exécutez le code

Cordialement

Bonjour Dan et merci beaucoup

le code que tu a mis me permet effectivement de masquer les collones voulut cependant il ne permet pas de les réafficher si par exemple je met 6 dans A1 puis 1 dans A1.

Par contre il fonctionne bien si je met 6 dans A1 puis 8 (les 8 cellules se masques bien)

d'ailleurs serais t-il possible de faire en sorte qu'a chaque fois que le chiffre en A1 change de masquer / afficher les collones automatiquement sans avoir a relancer la macro ?

Cordialement

le code que tu a mis me permet effectivement de masquer les collones voulut cependant il ne permet pas de les réafficher si par exemple je met 6 dans A1 puis 1 dans A1.

Non, cela fonctionne. vérifiez si vous avez bien le code que j'ai posté

d'ailleurs serais t-il possible de faire en sorte qu'a chaque fois que le chiffre en A1 change de masquer / afficher les collones automatiquement sans avoir a relancer la macro ?

Oui c'est possible. Faites ceci
- Cliquez droite sur l'onglet concerné par le code
- Choisissez l'option "Visualiser le code"
- Coller le code ci-dessous dans la fenêtre

Private Sub Worksheet_Change(ByVal Target As Range)
Dim j As Byte

If Not Intersect(Target, Range("A1")) Is Nothing Then
    j = 5
    Cells.EntireColumn.Hidden = False
    If Target.Value > 1 And Target.Value < 16 Then
        Range(Columns(Target.Value + j), Columns(j + 1)).EntireColumn.Hidden = True
    End If
End If
End Sub

Cordialement

Merci

cela fonctionne très bien j'aurais juste une dernière chose a te demander :

J'aimerais que cela fonctionne si dans la case A1 je ne change pas directement le chiffre mais plutôt la formule =15-B1 dans A1 (pour l'instant cela ne s'actualise pas automatiquement ) je pense que c'est un tout petit truc a changer mais je sais pas où il doit être changer

PS : pour ceux qui veulent utiliser la même méthode et qui ne savent pas a quoi correspond l'onglet d'ont Dan parle je met une petite image en dessous :

image

Cordialement

J'aimerais que cela fonctionne si dans la case A1 je ne change pas directement le chiffre mais plutôt la formule =15-B1 dans A1

Si vous changez quoi que ce soit en A1 et que le résultat est un chiffre, le code sera exécuté.

Si vous changez quoi que ce soit en A1 et que le résultat est un chiffre, le code sera exécuté.

En fait cela fonctionne quand je met la formule =15-B1 puis Entrer : les collones se mettens bel et bien a jour

mais si après je change la valeur de B1 rien ne se passe (j'ai tester plusieurs fois et j'ai enlever puis remis le code que tu m'a fournit sans que cela ne fonctione en changant la valeure de B1)

je viens de voir qu'il y avait une liste déroulante ici :

image

mais je ne sais pas si cela peut résoudre le problème

mais si après je change la valeur de B1 rien ne se passe (j'ai tester plusieurs fois et j'ai enlever puis remis le code que tu m'a fournit sans que cela ne fonctione en changant la valeur

Je m'en doutais... c'est normal puisque vous dites depuis le début que c'est en A1 que vous changez la valeur

Dans la ligne--> If Not Intersect.... changez A1 par B1

Ok merci beaucoup cela va beaucoup m'aider

Tout fonctionne très bien

je te souhaite une très bonne journée / soirée

Cordialement,

Rechercher des sujets similaires à "masquer colonnes fonction nombre fixe"