masquer une colonne avec ou sans condition

ccdouble6

XLDnaute Occasionnel
Bonjour le forum,

Débutant encore sous vba (avec excel2000), je suis en train de vivre un casse-tête avec une macro qui ne fonctionne pas, bien qu'il me semble que la syntaxe soit correcte... :confused:
Par confort de lecture je n'ai pas collé toute la macro (mais je peux si vraiment nécessaire), ci-dessous le paragraphe où la ligne rouge pose problème (pointée par le débogueur).
Je ne comprends pas pourquoi le premier FOR arrive à terme alors que le second bugue instantanément, m'affichant le message : "Erreur 1004 : impossible de définir la propriété Hidden de la classe Range".
Si quelqu'un peut éclairer ma lanterne...
Merci d'avance et bonne journée :)


Sub Macro1()
'Masque les colonnes où L3=X
Application.ScreenUpdating = False
Dim i As Integer, j As Integer
For i = 3 To 116
If Cells(3, i) = "X" Then
Columns(i).Hidden = True
End If
Next i
'----------------------------------
'2e FOR pour la partie du tableau à masquer sans condition
For j = 117 To 250
Columns(j).Hidden = True
Next j
'------------------------------------
Application.ScreenUpdating = True
End Sub
 

vbacrumble

XLDnaute Accro
Re : masquer une colonne avec ou sans condition

Bonjour ccdouble6, le peuple du forum

EDITION: une autre façon de faire
(part du principe qu'il y a des données dans les colonnes 117 à 250
Code:
Sub masque3()
Application.ScreenUpdating = False
Dim plg As Range, c As Range
Set plg = ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 2)
    For Each c In plg
        Select Case c.Column
        Case 3, 4 To 116 [COLOR="Green"]' si la cellule = X[/COLOR]
        Columns(c.Column).Hidden = (c = "X")
        Case 117 To 250
        Columns(c.Column).Hidden = (c <> "")[COLOR="Green"] 'sans condition[/COLOR]
        End Select
    Next
Application.ScreenUpdating = True
End Sub



Essaie avec ce code VBA

Code:
Sub masque()
Application.ScreenUpdating = False
Dim i&, j&
For i = 1 To 256
Select Case i
    Case 3, 4 To 116
        For j = 1 To Columns(i).Range(Cells(1, i), _
        Cells(65536, i).End(xlUp)).Rows.Count
        If Cells(j, i) Like "X" Then
        Columns(i).Hidden = True
        End If
        Next j
    Case 117 To 250
    Columns(i).Hidden = True
    End Select
Next i
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

ccdouble6

XLDnaute Occasionnel
Re : masquer une colonne avec ou sans condition

Merci Vbacrumble :)
Je vais voir ce que ça donne dès ce soir.
En revanche dans un but purement pédagogique peux-tu me dire ce qui clochait dans ma macro ? je vois que tu reprends cette même ligne dans ta macro proposée
Columns(i).Hidden = True
alors que dans mon texte elle ne passe pas... j'aimerais comprendre... :confused:
En tout cas je te tiens au courant. Merci encore et bonne fin de journée !!
 

ccdouble6

XLDnaute Occasionnel
Re : masquer une colonne avec ou sans condition

Bonjour le forum, vbacrumble,
j'ai testé la deuxième macro, et ça bloque au même endroit. il y a qqchose dans la syntaxe qui ne va pas, je sèche... :(
Merci d'avance pour tout éclairage, bonne aprem !!
 

PUARAI

XLDnaute Junior
Re : masquer une colonne avec ou sans condition

Bonjour a tous

Je voulais juste savoir je sais que quand je n'arrive pas a cacher une colonne
j'utilise le
Code:
Columns("H:I").Group

C'est bvrai que c'est pas vraiment top mais en attendant :rolleyes:
 

ccdouble6

XLDnaute Occasionnel
Re : masquer une colonne avec ou sans condition

Merci tous les deux :)

Alors le souci doit être lié au reste de ma macro dont dépend la sub, encore que je ne vois vraiment pas d'où puisque sans cette 2e partie (sans condition)tout fonctionne impec :(
Je vais tester avec les colonnes en lettres et le .group (avec .hidden.true ?)
Je précise que la macro procède avec un bouton "switch" : 1 clic pour masquer (la sub que j'ai copiécollé plus haut), 1 clic pour réafficher (une autre sub) et ainsi de suite. Je collerai toute la macro dès que je pourrai me reconnecter.
Si qq'un a une idée ou explication sur la syntaxe, merci d'avance ;)
Bonne soirée !!
ccdouble6.
 

ccdouble6

XLDnaute Occasionnel
Re : masquer une colonne avec ou sans condition

Bonjour le forum, Vbacrumble, Puarai,

J'ai trouvé !!
Il y a une limite dans le nombre de colonnes que l'on peut masquer d'un coup!! (exemple: si on va jusqu'à 256) c'est ça qui bloque ma macro, dont la syntaxe est finalement bonne :)
La raison invoquée est qu'Excel ne peut sortir des objets hors de la feuille :confused:
Comment passer outre cette limite ?? Y a-t-il un réglage ? Une expression en vba ???
C'est quand-même malheureux qu'on ne puisse pas faire ce qu'on veut, y a toujours une limite pour nous barrer le chemin :(
Quelqu'un a une idée ? je désespère...
Bonne aprem !!!
 

ccdouble6

XLDnaute Occasionnel
Re : masquer une colonne avec ou sans condition

Bonjour le forum, vbacrumble,

Waow j'ignorais pour excel2007 :D
Par contre je me suis mal expliqué : je voulais dire pourquoi y a-t-il une limite dans le nombre de colonnes maxi que l'on peut masquer ??
Exemple : si je souhaite laisser visible que 3 colonnes sur les 256 je ne peux pas. C'est cela qui est frustrant... :(
Bonne journée !!
 

vbacrumble

XLDnaute Accro
Re : masquer une colonne avec ou sans condition

Bonjour


Chez moi (Excel 2000) je peux ne laisser visible que 3 colonnes :confused:
(donc masquer les 253 autres )

EDITION: Je viens de tester : masquage de toutes les lignes et toutes les colonnes OK

Code:
Sub Macro4()
' Macro4 Macro
' Macro enregistrée le 02/05/2009 par VBACrumble
   
    With Cells
        .EntireColumn.Hidden = Not .EntireColumn.Hidden
        .EntireRow.Hidden = Not .EntireRow.Hidden
    End With
    
End Sub
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : masquer une colonne avec ou sans condition

Bonjour ccdouble6, vbacrumble, PUARAI, le forum,

Je prends ce fil en cours de route et je lis ceci (30 04 16h02) :

"Il y a une limite dans le nombre de colonnes que l'on peut masquer d'un coup!! (exemple: si on va jusqu'à 256) c'est ça qui bloque ma macro, dont la syntaxe est finalement bonne :)
La raison invoquée est qu'Excel ne peut sortir des objets hors de la feuille "

N'aurais-tu pas des résidus d'objets sur ta feuille ? (zone de texte, image, etc...).

Essaie dans Edition/Atteindre et en bas du masque Cellules et ensuite, encore en bas, coche Objet et tu termines par un Suppr.

Ensuite, vois si tu peux cacher toutes les colonnes.

Tu nous dis.

Bon WE.

Jean-Pierre
 

ccdouble6

XLDnaute Occasionnel
Re : masquer une colonne avec ou sans condition

Bonjour à tous,

Merci Jeanpierre pour cette astuce, mais le programme me renvoit "aucun objet trouvé", du coup je ne vois pas...
Une remarque au passage (ça peut ptet jouer un rôle) j'ai mis un arrière plan sur la feuille (texture).
J'ai contourné le problème pour ne pas avoir à masquer autant de colonnes mais ça me turlupine un peu de ne pas savoir ce qui cloche... :confused:
En tout cas merci à tous, n'hésitez pas à me dire si vous pensez à autre chose qui peut expliquer...
bonne fin d'aprem !!
 

Discussions similaires

Réponses
2
Affichages
667

Statistiques des forums

Discussions
314 143
Messages
2 106 309
Membres
109 557
dernier inscrit
darrepac