Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

XL 2K VBA, masquer des colonnes non contiguës, Array?

5 réponses
Avatar
J
Bonjour à tous
Tous les jours, on m'adresse une feuille nouvelle, de même format.
Je dois masquer un certain nombre de colonnes, non contiguës, qui n'ont
rien de commun.

Je le fais comme cela :
Columns("AN:AN").EntireColumn.Hidden = True
Columns("AF:AF").EntireColumn.Hidden = True
Columns("AA:AA").EntireColumn.Hidden = True
Columns("W:W").EntireColumn.Hidden = True
Columns("S:U").EntireColumn.Hidden = True
Columns("P:P").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True
Columns("D:D").EntireColumn.Hidden = True

Cela fonctionne mais c'est assez lent, et lourd.
Y aurait-il moyen de faire plus rapide, un array serait-il une solution
et comment?

Merci
@+
J@@

5 réponses

Avatar
DanielCo
Presque pareil :

Dim arCol, arLarg, Col
arCol = Array("AF:AF", "S:U") 'etc
For i = 0 To UBound(arCol)
Range(arCol(i) & ":" & arCol(i)).EntireColumn.Hidden = True
Next i

Daniel


Bonjour à tous
Tous les jours, on m'adresse une feuille nouvelle, de même format.
Je dois masquer un certain nombre de colonnes, non contiguës, qui n'ont rien
de commun.

Je le fais comme cela :
Columns("AN:AN").EntireColumn.Hidden = True
Columns("AF:AF").EntireColumn.Hidden = True
Columns("AA:AA").EntireColumn.Hidden = True
Columns("W:W").EntireColumn.Hidden = True
Columns("S:U").EntireColumn.Hidden = True
Columns("P:P").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True
Columns("D:D").EntireColumn.Hidden = True

Cela fonctionne mais c'est assez lent, et lourd.
Y aurait-il moyen de faire plus rapide, un array serait-il une solution et
comment?

Merci
@+
J@@
Avatar
michdenis
Bonjour,

M'inspirant de la solution de Daniel, tu pourrais aussi utiliser cette syntaxe

Sub test()
Dim ArCol(), Elt As Variant
ArCol = Array("AF:AF", "S:U") 'etc
For Each Elt In ArCol
Range(Elt).EntireColumn.Hidden = True
Next
End Sub

--
MichD
--------------------------------------------


"J@@" a écrit dans le message de groupe de discussion : i5f4ga$n4t$
Bonjour à tous
Tous les jours, on m'adresse une feuille nouvelle, de même format.
Je dois masquer un certain nombre de colonnes, non contiguës, qui n'ont
rien de commun.

Je le fais comme cela :
Columns("AN:AN").EntireColumn.Hidden = True
Columns("AF:AF").EntireColumn.Hidden = True
Columns("AA:AA").EntireColumn.Hidden = True
Columns("W:W").EntireColumn.Hidden = True
Columns("S:U").EntireColumn.Hidden = True
Columns("P:P").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True
Columns("D:D").EntireColumn.Hidden = True

Cela fonctionne mais c'est assez lent, et lourd.
Y aurait-il moyen de faire plus rapide, un array serait-il une solution
et comment?

Merci
@+
J@@
Avatar
LSteph
Bonjour,
donc lescolonnes non contigues nommées mescols, pour dé../masquer

With [mescols].Columns.EntireColumn
.Hidden = Not .Hidden
End With

'LSteph

On 30 août, 04:19, "J@@" wrote:
Bonjour à tous
Tous les jours, on m'adresse une feuille nouvelle, de même format.
Je dois masquer un certain nombre de colonnes, non contiguës, qui n'ont
rien de commun.

Je le fais comme cela :
     Columns("AN:AN").EntireColumn.Hidden = True
     Columns("AF:AF").EntireColumn.Hidden = True
     Columns("AA:AA").EntireColumn.Hidden = True
     Columns("W:W").EntireColumn.Hidden = True
     Columns("S:U").EntireColumn.Hidden = True
     Columns("P:P").EntireColumn.Hidden = True
     Columns("F:F").EntireColumn.Hidden = True
     Columns("D:D").EntireColumn.Hidden = True

Cela fonctionne mais c'est assez lent, et lourd.
Y aurait-il moyen de faire plus rapide, un array serait-il une solution
et comment?

Merci
@+
J@@
Avatar
J
Bonour
Merci DanielCo, MichDenis, LSteph
Je vois tout cela tout à l'heure
Amicalement
J@@


Le 30/08/2010 02:07, LSteph a écrit :
Bonjour,
donc lescolonnes non contigues nommées mescols, pour dé../masquer

With [mescols].Columns.EntireColumn
.Hidden = Not .Hidden
End With

'LSteph

On 30 août, 04:19, "J@@" wrote:
Bonjour à tous
Tous les jours, on m'adresse une feuille nouvelle, de même format.
Je dois masquer un certain nombre de colonnes, non contiguës, qui n'ont
rien de commun.

Je le fais comme cela :
Columns("AN:AN").EntireColumn.Hidden = True
Columns("AF:AF").EntireColumn.Hidden = True
Columns("AA:AA").EntireColumn.Hidden = True
Columns("W:W").EntireColumn.Hidden = True
Columns("S:U").EntireColumn.Hidden = True
Columns("P:P").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True
Columns("D:D").EntireColumn.Hidden = True

Cela fonctionne mais c'est assez lent, et lourd.
Y aurait-il moyen de faire plus rapide, un array serait-il une solution
et comment?

Merci
@+
J@@



Avatar
J
Merci encore Daniel, Denis & LSteph
Tout fonctionne, j'ai utilisé le code de Denis :-)
@+
J@@


Le 30/08/2010 00:20, michdenis a écrit :
M'inspirant de la solution de Daniel, tu pourrais aussi utiliser cette syntaxe

Sub test()
Dim ArCol(), Elt As Variant
ArCol = Array("AF:AF", "S:U") 'etc
For Each Elt In ArCol
Range(Elt).EntireColumn.Hidden = True
Next
End Sub