Masquer les colonnes pour l'impression

Résolu
piloub44 Messages postés 1 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 27 décembre 2006 - 27 déc. 2006 à 17:58
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 28 déc. 2006 à 08:28
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

fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
27 déc. 2006 à 19:35
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 />
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 déc. 2006 à 08:28
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
3
Rejoignez-nous