nb de colonnes trop important pour entirecolumn.hidden

ledzepfred

XLDnaute Impliqué
Bonjour le forum,

J'ai un problème avec la propriété hidden appliquée à des colonnes

quelqu'un pourrait-il me dire pourquoi la macro fonctionne sur la feuille 1 (voir fichier ci-joint) et pas sur la feuille 2 sur laquelle (je parle de la macro associée au bouton filtre quand on choisit l'option filtre profil) j'ai un message d'erreur : erreur 1004 impossible de lire la propriété hidden de la classe range

les seules differences entre les feuillets sont la ligne où se trouvent les entêtes (mais ce pas un pb puisque gérer dans le code de la macro) et le nombre de lignes renseignées (plus nombreuses dans le feuillet qui bugge)

en appliquant ce code ci-dessous (créé spécialement pour vérifier qu'il n'y aurait pas une limite) sur le premier feuillet : pas de souci
sur le deuxième bug de la boucle à 143.

Code:
Sub Macro1()
Columns("A:IV").EntireColumn.Hidden = False
lig = [GA1].End(xlDown).Row + 1
col = Rows(lig).Find(what:="7V01VM").Column
col2 = Cells(lig, col).End(xlToRight).Column
For i = 3 To col2
Columns("A:IV").EntireColumn.Hidden = False
Range(Cells(lig, col), Cells(lig, i)).EntireColumn.Hidden = True
Next
End Sub

bref quelqu'un a-t-il une explication et une solution éventuelle.

merci d'avance
 

Pièces jointes

  • Classeur2.zip
    129.3 KB · Affichages: 37
  • Classeur2.zip
    129.3 KB · Affichages: 35
  • Classeur2.zip
    129.3 KB · Affichages: 37

Catrice

XLDnaute Barbatruc
Re : nb de colonnes trop important pour entirecolumn.hidden

Bonsoir,

Déplace tes boutons en colonne A.
En fait quand tu masques un gros volume de cellules il veut déplacer des objets en dehors de la feuille et ça plante.
(Essaie manuellement pour vérifier)

Sinon, tu peux modifier les proprietes de l'objet => "Deplacer et dimentionner avec les cellules" mais ça va l'écraser ...
 
Dernière édition:

ledzepfred

XLDnaute Impliqué
Re : nb de colonnes trop important pour entirecolumn.hidden

Merci Catrice pour ta réponse rapide,

je testerai ça ce soir et reviens vers toi pour te dire ce qu'il en est. Si ce n'est que ça je suis vénère d'avoir cherché toute une après-midi!!!!

J'ai oublié de préciser que je me suis inspiré du userform de PascalXLD (filtre inversé) pour l'adapter à mon besoin et j'en profite pour le remercier.

a+
 

ledzepfred

XLDnaute Impliqué
Re : nb de colonnes trop important pour entirecolumn.hidden

re...

effectivement, le simple fait de modifier la propiété des boutons en "déplacer et dimensionner avec les cellules" permet la bonne execution du code.:mad:

Ce que je n'arrive pas à comprendre, c'est que si on réalise un filtre sur le profil Z103BB ça plante alors que ça marche si j'affecte les valeurs Z1, O3 et BB dans filtre personnalisé, la différence entre les deux procédures est que dans la première on sélectionne toutes les colonnes à entête pour les masquer et on démasque la colonne qui nous interesse alors que dans l'autre on masque colonne par colonne à l'exception de la colonne qui nous interesse.:eek: (l'interêt de la première procédure étant le temps d'execution)

Peux-tu m'éclairer sur ce point?

Merci en tout cas pour ta réponse experte.

a+
 

Catrice

XLDnaute Barbatruc
Re : nb de colonnes trop important pour entirecolumn.hidden

Bonsoir,

Ci-joint un exemple qui permet de reproduire ton pb.
Le rectangle blanc a les proprietes "Ne pas deplacer / redimensionner avec les cellules" comme ton bouton.
Ce qui se passe dans mon exemple : si tu masques les colonnes, le rectangle ne bouge pas (cf. propriétés) mais les colonnes se masquent.
Donc le rectangles n'est plus dans la feuille de calcul !
Ca, c'est pas possible => plantage.

Dans ta feuille, il se passe un peu la meme chose.
Empiriquement, je dirais que quand tu demandes de masquer ce grand nombre de colonnes, il y a un moment où l'objet se retrouve hors de la feuille.
J'ai essayé de masquer les memes colonnes (dans ton fichier) par blocs successifs, pas de pb j'y arrive.

J'ai trouvé 4 solutions :
- mettre le bouton (les objets) dans la colonne A, il n'est pas dans la zone à masquer => pas de sortie de feuille.
- modifier les parametres du bouton => deplacer/redimensionner avec les feuilles
- augmenter la largeur des colonnes au de la de GD => l'objet ne sortira pas de la feuille. La largeur de masquage sera inférieure à la largeur des colonnes vierges.
- faire une boucle du type :
For Each X In Range(Cells(lig, col), Cells(lig, col2)).Columns
X.Hidden = True
Next
à la place de :
Range(Cells(lig, col), Cells(lig, col2)).EntireColumn.Hidden = True

Une fiche technique trouvée par BERRACHED said dans un autre Fil :
http://support.microsoft.com/kb/211769/fr
 

Pièces jointes

  • Classeur1.xls
    22 KB · Affichages: 53
  • Classeur1.xls
    22 KB · Affichages: 51
  • Classeur1.xls
    22 KB · Affichages: 47
Dernière édition:

ledzepfred

XLDnaute Impliqué
Re : nb de colonnes trop important pour entirecolumn.hidden

merci Catrice pour tes explications,

j'avais consulté le lien que tu m'as transmis après avoir lu le post de said.

Je vais me contenter de modifier les propriétés de mes boutons (j'ai d'autres feuillets sur lesquels je peux avoir jusqu'à 6 boutons qui me servent pour l'administration de la BDD, pour les utilisateurs du filtre colonne (ils ne font que consulter la base, c'est pour eux que j'ai adapté le filtre inversé de PascalXLD afin de leur faciliter la lecture du document)
En parallèle je déplacerai le bouton donnant accès au filtre colonne en dehors des zones de masquage qui diffèrent d'un feuillet à l'autre (sur certains feuillets la zone débute en colonne M)

a+
 

Discussions similaires

Statistiques des forums

Discussions
312 529
Messages
2 089 368
Membres
104 148
dernier inscrit
VICVIC