piloub44
Messages postés1Date d'inscriptionmercredi 27 décembre 2006StatutMembreDernière intervention27 décembre 2006
-
27 déc. 2006 à 17:58
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 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. ?
fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 20103 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 />
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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