Masquer les colonnes pour l'impression [Résolu]

Signaler
Messages postés
1
Date d'inscription
mercredi 27 décembre 2006
Statut
Membre
Dernière intervention
27 décembre 2006
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Voila une petite question très importante pour MOI !!
J'ai créer un planning de production sur Excel avec diférente macros.
Dans celle ci j'utilise :

Indiquer ici les nom de colonnes à cacher pour l'impression
    ' Exemple v = "AK" ; les colonnes A & K seront cachées
     v = "AHIPQRSTUVWXYZ"
    ' Masquage des colonnes
    For i = 1 To Len(v)
      ch = Mid(v, i, 1)
      Columns(UCase(ch) & ":" & UCase(ch)).Select
      Selection.EntireColumn.Hidden = True
    Next i

Mon problème est le suivant : je veux cacher les colonnes après Z (AA,AB,AC,AD..;etc).
Mais quand j'indique après mon Z dans ma formule alors toute les colonnes se masquent (elle prend en compte le AA comme le colonne A, AB comme la colonne A et ), mais je souhaite conserver ces colonnes.

Si quelqu'un peut me donner une ptite solution : type les guillemets pour masquer les colonnes. ?

MERCI d'avance

2 réponses

Messages postés
381
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 septembre 2010
3
Salut,

A mon avis il faut que tu imposes à l'utilisateur d'utiliser un séparateur type ";" pour différencier les colonnes.
Le code sera le suivant
v = "A;I;Q;S;T;U;V;W;X;Y;Z;AB;AZ;AD;AZ"

Dim strColonne() as string

strColonne() = split(v,";",,vbTextCompare)
For i = LBound(strColonne) to UBound(strColonne) 
   Columns(strColonne(i)).select
   Selection.EntireColumn.Hidden = True
Next i

A tester

 Fiko ;-)

La reponse vous convient pensez > Accepter < <hr />
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
Bonne réponse de Fiko, et bon reflexe que d'utiliser LBound et UBound

Pas besoin d'utiliser .Select, au préalable (en général, je n'aime pas trop qu'une macro change mes parametres, ma selection courante, etc...)

Le VbTextCompare est inutile ici. Il permet d'effectuer le découpage en ne s'occupant pas de la casse du séparateur... vu que nous utilisons ici le caractère ';' pas de soucis avec vbBinaryCompare (lequel est plus rapide)

Dim sColumns() As String
Dim i  As Long
    sColumns = Split("A;I;Q;S;T;U;V;W;X;Y;Z;AB;AZ;AD;AZ", ";")


    For i = LBound(sColumns) To UBound(sColumns)
        Columns(sColumns(i)).Hidden = True
    Next i

Renfield
Admin CodeS-SourceS- MVP Visual Basic