Construire contenu Range à partir d'un tableau

Bonjour,

J'ai actuellement dans mon fichier deux macros triviales qui masquent/affichent les colonnes les moins importantes pour pouvoir d'un raccourci clavier passer d'une vue complète (30 colonnes) à une vue simplifiée (13 colonnes).

Elles fonctionnent ainsi :

Sub Vue_simplifiée()
    With ActiveSheet
        Range("a:ad").EntireColumn.Hidden = True
        Range("d:d,f:f,i:i,j:j,l:l,o:o,s:s,t:t,u:u,z:z,ab:ab,ac:ac,ad:ad").EntireColumn.Hidden = False
    End With
End Sub
Sub Vue_complète()
    With ActiveSheet
        Range("a:ad").EntireColumn.Hidden = False
    End With
End Sub

Désormais j'aimerais pouvoir déterminer le contenu du Range de la macro Vue_simplifiée en fonction de critères venant d'un tableau de paramétrage sur une autre feuille du classeur.

Ce tableau se présente de cette manière :

A... B... C... D... E... F

a:a b:b c:c d:d e:e f:f

...................... X...........X

L'idée est que le contenu du Range se construise en concaténant les éléments de la deuxième ligne pour lesquels il y a une croix en 3ème ligne. Dans l'exemple ci-dessus, je cherche un code qui serait équivalent à Range("d:d,f:f").EntireColumn.Hidden = False.

J'espère que c'est clair :S

Merci pour votre aide en tous cas,

waxscud

Bonjour waxscud

Une petite proposition "toute simple"

Ps/ j'ai plus ou moins respecté ton idée, mais il serait plus judicieux de présenter ton tableau dans l'autre sens (transposé)

A x

B

C x

D x

E x

F

G

H x

I

J x

Bonjour,

Les X se trouvent en ligne 1 de la feuille "Feuil2" et la cible pour le masquage des colonnes est la feuille "Feuil1" :

Sub Vue()

    Dim Fe1 As Worksheet
    Dim Fe2 As Worksheet
    Dim Plage As Range
    Dim Cel As Range

    Set Fe1 = Worksheets("Feuil1")
    Set Fe2 = Worksheets("Feuil2")

    With Fe2: Set Plage = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft).End(xlUp)): End With

    Fe1.Range("a:ad").EntireColumn.Hidden = False

    For Each Cel In Plage

        If UCase(Cel.Value) = "X" Then

            Fe1.Range(Split(Cel.Address, "$")(1) & ":" & Split(Cel.Address, "$")(1)).EntireColumn.Hidden = True

        End If

    Next Cel

End Sub

Merci infiniment à vous deux andrea 73 et These !

J'ai analysé vos deux méthodes qui sont toutes deux parfaitement efficaces.

J'ai donc du faire un choix et celui-ci s'est porté sur le code d'andrea73.

En revanche, comme ma fonction doit pouvoir s'utiliser indépendamment sur plusieurs onglets de mon classeur, j'ai supprimé le IIF avec le test et j'ai composé deux macros contraires sur la même base.

Merci encore pour votre réactivité et votre aide précieuse

Bonne soirée,

waxscud

(re) Bonjour Theze

waxscud a écrit :

Merci infiniment à vous deux andrea 73 et These !

waxscud a écrit :

J'ai analysé vos deux méthodes qui sont toutes deux parfaitement efficaces.J'ai donc du faire un choix et celui-ci s'est porté sur le code d'andrea73.

Désolé Theze la prochaine fois peut être

Non sérieusement ta version n'était pas mal non plus...

waxscud a écrit :

En revanche, comme ma fonction doit pouvoir s'utiliser indépendamment sur plusieurs onglets de mon classeur, j'ai supprimé le IIF avec le test et j'ai composé deux macros contraires sur la même base.

à toi d'adapter en fonction des besoins comme je le disais, il s'agissait
andrea73 a écrit :

Une petite proposition "toute simple"

en forme de piste à adapter

Bonne soirée à vous 2

Bonjour,

Désolé Theze la prochaine fois peut être

Grrrrr

Ça va se payer cher ça

Bonjour ...Theze (tous)

Theze a écrit :

Désolé Theze la prochaine fois peut être Grrrrr Ça va se payer cher ça

Bonjour,

Je plaisante bien sûr

Bonjour Theze

Theze a écrit :

Je plaisante bien sûr

je l'espérais un peu

Donc sans rancune... à bientôt...

Rechercher des sujets similaires à "construire contenu range partir tableau"