Rapport de message :*
 

Re: Afficher/Masquer Lignes et colonnes

Titre du sujet : Re: Afficher/Masquer Lignes et colonnes
par myDearFriend! le 06/12/2009 00:15:05

Bonsoir lours, le Forum,

Citation :
lours a écrit :

Sur le fichier joint, j’ai figé les volets en B6, ensuite j’ai déplacé les lignes et les colonnes pour placer le curseur en D50. Si je lance la macro (car la fin du bouton Visualiser apparaît), les lignes (5 à 49) et les colonnes (B et C) sont toujours masquées, alors que la ListBoxA indique que toutes les colonnes sont affichées. Je valide un mois sélectionné, et rien ne se produit.


Si j'interprète bien la situation là, je pense que ce n'est plus un problème VBA que tu rencontres lours.
Pour info, des lignes (ou des colonnes) non visibles parce que tu as figé les volets et joué sur l'ascenseur ne sont pas pour autant des lignes dites "masquées". Elles sont tout simplement hors de ton champ de vision, ce qui n'est pas pareil... (c'est un peu la même chose pour un classeur vierge : si tu descends l'ascenseur vertical, la ligne 1 devient hors de portée, donc n'est plus visible... elle n'est pas masquée pour autant !). Dans l'exemple cité, si tu décides de rendre les lignes 5 à 49 "hors de portée" de ton champ de vision (en jouant sur les ascenseurs), que leur propriété Hidden soit True ou False ne changera pas grand chose, elles seront toujours hors de ta vue.

Citation :
lours a écrit :

Si je protège la feuille, j’ai les mêmes problèmes. Je suppose que dans tous les cas la feuille doit être déprotégée et que les volets libérés.


Là, je ne comprends pas ce que tu veux dire. La protection de la feuille n'a pas d'influence sur cette gestion de l'affichage. Pour info, il est quasiment toujours possible de permettre aux macros d'agir sur une feuille protégée sans avoir à lever cette protection (faire une recherche dans le Forum sur l'argument de protection UserInterfaceOnly), mais ton problème ne semble pas porter sur ce point là.

Citation :
lours a écrit :

Enfin, une confirmation : dans la ligne For Each cell in Rows(4) signifie que l’on récupère les éléments de la ligne 4 de la feuille, mais pour …. Constants, 3) ? (si j’ose : 3 colonnes dans la ListBoxA – J’arrête car je fatigue…).


Si je fais :

For Each cell in Rows(4)

... je parcours et teste toutes les cellules de la ligne 4 (soit 256 cellules sur XL2003). Ce n'est pas une façon efficace de travailler.
Si je fais :

For Each cell In Rows(4).SpecialCells(xlCellTypeConstants, 3)

... je parcours et teste uniquement les cellules de la ligne 4 ayant une valeur contenue (soit 6 cellules dans ton exemple). Je ne traite donc que les cellules qui m'intéresse.

Comment faire pour obtenir "SpecialCells(xlCellTypeConstants, 3)" ?

Je vais au plus simple :
  • Je déclenche l'enregistreur de macro
  • Je sélectionne la ligne 4 (entière)
  • Je fais menu Edition / Atteindre... / bouton Cellules.
  • Je sélectionne Constantes
  • Je valide par OK
  • Puis je stoppe l'enregistrement de macro et je regarde le code obtenu.


Pour les détails sur la méthode SpecialCells , je te conseille vivement de consulter l'aide VBA Excel.

Cordialement,