Nombre de colonnes = valeur spécifique

Bonjour à tous,

J'ai énormément de mal à réaliser une macro/code que l'on ma demandé au boulot. Disons que j'ai un document excel avec plusieurs onglets, et j'aimerais que le nombre de colonnes de deux onglets soient lié à une valeur mentionnée dans un autre onglet.

par exemple, si dans onglet 1, pour C16, je rentre "5" j'aimerais que 5 colonnes soient visibles dans l'onglet 2 selon un Template bien précis. Si je rentre 87 pour C17 dans l'onglet 1, je veux voir 87colonnes au layout bien précis dans l'onglet 3.

C'est assez délicat à expliquer, d'autant que pour raisons professionnelles, je n'ai pas envie de poster le Template.

J'apprécierais grandement si quelqu'un pouvait s'occuper de mon cas en privé (je ne pense pas que ça prenne beaucoup de temps).

D'avance un grand merci!

Bonsoir,

En effet ça n'a pas été long...

pour moi une petite heure suite à un message d'erreur dans la macro "incompréhensible"...

En fait on ne peut cacher des colonnes qu'à partir de la feuille où la macro est lancée...

Pour contourner ce problème j'utilise les "activâtes" des feuilles.

Déroulement :

on détecte un changement de valeur en feuille une sur les cellules C16 et C17

En fonction on demande d'activer la feuille correspondante.

Lors de l'activation de la feuille on montre toutes les colonnes puis on cache ce qui doit être masqué.

Le code du type : sheets("feuille3").range(columns(4),columns(15)).hidden = true

à partir d'une macro sur la feuille 1 ne marche pas....

@ bientôt

LouReeD

Bonjour LouReeD,

Merci beaucoup c'est exactement ce que je veux. La question qui reste en suspens, maintenant, c'est comment l'adapter à mon layout spécifique (couleur, taille de colonne, etc)? Car je dois absolument respecter un certain "layout.

Merci d'avance, j'apprécie franchement votre aide.

Bien à vous,

Bonjour,

Bonjour LouReed,

Un peu de lecture :

https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html

Et plus particulièrement le point 6 :

Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille limite : 300ko, n'hésitez pas à compresser vos fichiers).

Hello c'est de nouveau moi.

C'est très énervant car j'avais réussi à faire marcher la macro!!!! J'ai enregistre, fermé le fichier, je l'ai mis sur une clé USB. Maintenant, ça ne marche plus. Ni sur USB ou bureau.

J'ai comme message d'erreur 13 incompatibilité.

Voici mes trois codes différents (sur 3 feuilles différentes) avec en gras la ligne surlignée en jaune.

Première feuille concernée ("Parameters", le 2ème onglet de mon fichier):

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D16:D17")) Is Nothing Then
    If Target.Value < 1 Then Exit Sub
    If Target.Address = "$D$16" Then
        Sheets("1.P_FinancialAnalysis").Activate
    Else
        Sheets("2.H_FinancialAnalysis").Activate
    End If
End If
End Sub

2ème onglet concerné ("1.P_FinancialAnalysis", 4ème onglet de mon doc):

Private Sub Worksheet_Activate()

Application.ScreenUpdating = False

Columns("A:XFD").EntireColumn.Hidden = False

Range(Columns(Sheets(2).Range("D16").Value + 1), Columns(16384)).EntireColumn.Hidden = True

Application.ScreenUpdating = True

End Sub

3ème et dernier onglet concerné ("2.H_FinancialAnalysis", 5ème du doc):

Private Sub Worksheet_Activate()

Application.ScreenUpdating = False

Columns("A:XFD").EntireColumn.Hidden = False

Range(Columns(Sheets(2).Range("D17").Value + 1), Columns(16384)).EntireColumn.Hidden = True

Application.ScreenUpdating = True

End Sub

Milles mercis et ma reconnaissance à celui ou celle qui pourra m'éclairer. Je le répète: ça marchait très bien jusqu'à ce que je ferme/ré-ouvre le ficher.

Ps: par rapport à mon précédent post, mes deux cellules d'input sont D16 et D17, et plus C16 et C17.

Bonsoir,

Bonsoir Jean-Eric,

Oui j'avais lu ... d'ailleur c'est suite à cela que j'ai fait l'avatar !

Une relecture peut-être ?

"Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille limite : 300ko, n'hésitez pas à compresser vos fichiers)."

Personnellement j'ai eu la compréhension et l'envie d'aider...

Pour répondre à l'histoire du layout, : une colonne masquée n'affecte pas sa taille, couleur et autre, enfin je ne crois pas....

Pour le fait que les macros ne marchent pas sur votre fichier, n'y aurait il pas une protection de feuille par hasard ?

@ bientôt

LouReeD

Bonsoir,

Pour le layout il n'y avait aucun souci effectivement.

Le problème est ce qui est en gras dans mon post précédent. Aucune feuille n'est protégée. Je pense à un souci de ce type: si j'input 4 dans D16, le doc va garder 4 colonnes et cacher les autres. Si j'enregistre, ferme le fichier et réouvre, les 4 colonnes sont encore là. Si maintenant j'entre 6, ça va bugger car il n'en compte que "4". J'espère être clair, et je le répète, ce n'est qu'une idée sur la nature du problème. Ca peut très bien venir d'autre part.

Merci d'avance LouReeD si tu sais m'aider encore une fois.

Une excellente soirée à vous,

Bonsoir Goldenboy14

Non le PB ne vient pas de l'enregistrement du fichier avec 4 colonnes affichées suivi d'une demande d'en afficher 6, car la macro évite ce genre de problème par le fait qu'elle affiche toutes les colonnes avant de masquer celle qui faut, en somme on initialise la feuille avant de masquer.

êtes vous bien sous Excel 2007 ou + ?

Si ce n'est pas le cas il faut remplacer "A:XFD" par "A:VI"

et de même pour la ligne suivante :

    Columns("A:VI").EntireColumn.Hidden = False
    Range(Columns(Sheets(1).Range("C17").Value + 1), Columns(256)).EntireColumn.Hidden = True

en effet il y 16384 colonne sous 2007 et + et "seulement" 256 sous 2003 et -

Si ce n'est pas ça, alors il faudrait de l'aide de la part des "membres impliqués"

@ bientôt

LouReeD

Bonsoir,

Je suis bien sur excel 2010, oui. Aucune autre idée concernant d'où peut venir ce souci?

Merci pour l'aide en tout cas!

Bonsoir

Ci-joint le fichier avec les copier/coller des codes de votre message du forum et il fonctionne chez moi ...

Je cherche mais je ne trouve pas pourquoi ça ne marche pas

@ bientôt

LouReeD

Bonjour à tous,

louReeD :

En fait on ne peut cacher des colonnes qu'à partir de la feuille où la macro est lancée...

Pour contourner ce problème j'utilise les "activâtes" des feuilles.

Appelle une procédure mise dans un module standard, là ça marche.

Module feuil1 :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$2" Then masquer
End Sub

module standard :

Sub masquer()
    Sheets("Feuil2").[B:D].EntireColumn.Hidden = [B2] <> ""
End Sub

eric

Edit: en fait on peut mettre Sheets("Feuil2").[B:D].EntireColumn.Hidden = [B2] <> "" dans le module Feuil1, ça fonctionne bien.

Il devait y avoir une raison particulière pour que tu aies eu une erreur.

4classeur1.zip (6.87 Ko)

Bonjour à vous,

Merci pour vos réponses. Ecoutez, c'est à n'y rien comprendre: j'ai ré-essayé sans rien toucher et maintenant ça fonctionne. Merci beaucoup!

Une dernière chose: les colonnes à droite de la dernière (le 4ème si je choisis D16=4) ne sont plus visibles. Elles sont grisées,c'est comme si elles n'étaient plus là et que la sheet excel s'arrêtait à la 4ème colonne. J'aimerais quand même avoir la possibilité de créer quelque chose à droite, si jamais le besoin s'en fait sentir. Or là, il n'y a plus rien, tout est gris. Une idée messieurs sur la question?

Merci d'avance et désolé du dérangement!

Bonjour,

masquer uniquement les colonnes utilisées, et laisser celles qui sont libres visibles....

donc au lieu de cacher de la 4 à la 16384, sélectionner de la 4 à la 70 et laisser de la 71 à la 16384 visible

@ bientôt

Loureed

Rechercher des sujets similaires à "nombre colonnes valeur specifique"