none
Impossibilité de masquer une ligne (Excel 2010) RRS feed

  • Question

  • Range(rows(i),rows(i+n)).Hidden=true (ou false) provoque l'erreur 1004 : "impossible de définir la propriété hidden de la classe range".

    De même, la commande "masquer", par un clic droit sur lignes sélectionnées, échoue.

    Les cellules correspondantes ne présente aucune particularité. En revanche, l'instruction similaire sur des colonnes et la commande manuelle sont bien effectuées.

    Je n'avais jamais rencontré cette anomalie sur Excel 2003, même avec des structures complexes comme des cellules fusionnées et des formules matricielles. Si vous la connaissez, comment l'avez-vous résolue ?

    jeudi 15 mars 2012 18:48

Réponses

  • Le fait que l'anomalie ait disparu montre que le classeur est corrompu.
    Il faut copier toutes les feuilles, macros et userforms du classeur
    vers un classeur vierge et se servir de ce dernier à la place de
    l'ancien.
    Daniel
     
     
     
    samedi 17 mars 2012 10:05
  • J'ai compris. La cause est une liste déroulante dont les données sont prélevées dans une colonne (la plage est définie dans les propriétés du contrôle). Tenter de masquer une ligne coupant la plage source met le contrôle en défaut et déclenche l'erreur. Du fait de son libellé, "impossible de définir la propriété Hidden de la classe Range", je cherchais bêtement sur la feuille et ne pensais absolument pas à ça. Désolé de vous avoir dérangés pour ce que je prenais pour une anomalie d'Excel et qui n'est qu'une erreur de conception.
    samedi 17 mars 2012 16:49

Toutes les réponses

  • Bonjour,
    Tu doit avoir une erreur dans tes variables parce que :
    Range(Rows(2), Rows(3)).Hidden = True
    par exemple, fonctionne.
    Cordialement.
    Daniel
     
     
     
    vendredi 16 mars 2012 08:53
  • Il y a forcément quelque chose, pas dans les variables ni le code puisque la syntaxe est correcte, mais sur la feuille. Malheureusement, je ne vois rien dans les cellules, pas plus que dans la doc VBA, qui expliquait pourquoi l'opération manuelle échoue également avec les lignes alors qu'elle fonctionne avec les colonnes. Je peux évidemment tout recommencer sur une feuille vierge - un travail passablement long - et espérer soit que le défaut ne se reproduise pas, soit que je comprenne comment il apparaît.

    Cordialement.

    vendredi 16 mars 2012 11:07
  • Est-ce que la feuille est protégée ?
    Daniel
     
     
     
    vendredi 16 mars 2012 11:21
  • Bien sûr que non, autrement je ne pourrais pas masquer les colonnes que ce soit par programme ou manuellement mais, en effet, tout se passe comme si les lignes, et elles seules, étaient protégées. Je vais me résoudre à structurer une nouvelle feuille. Peut-être trouverai-je qu'un formatage en est à l'origine.
    vendredi 16 mars 2012 16:37
  • Bonsoir

    Bien sûr que non, autrement je ne pourrais pas masquer les colonnes que ce soit par programme ou manuellement mais, en effet, tout se passe comme si les lignes, et elles seules, étaient protégées. Je vais me résoudre à structurer une nouvelle feuille. Peut-être trouverai-je qu'un formatage en est à l'origine.

    La première chose qui vient à l'idée, ce sont des cellules fusionnées, mais vous dites qu'il n'y en a pas.
    Je ne sais d'ailleurs pas comment les rechercher à la main.

    vendredi 16 mars 2012 18:59
  • Avant que de tout recommencer, essaie de recopier la feuille dans un
    classeur vierge.
    Daniel
     
     
     
    vendredi 16 mars 2012 19:44
  • Je suis revenu à ce fichier sur lequel je n'avais pas eu le temps de travailler hier. La copie de la plage utile de la feuille sur une nouvelle feuille du même classeur fait disparaître l'anomalie. Je ne saurai donc pas ce qui la provoquait. Toutefois, son comportement fait penser à une sélection de ligne incomplète. Hidden ne pouvant pas en masquer une partie retournerait la même erreur 1004. Ce n'est qu'une hypothèse car Rows(...).Cells.Count renvoie bien 256. Merci en tout cas de vous être penchés sur ce problème.

    Cordialement.

    samedi 17 mars 2012 09:48
  • Le fait que l'anomalie ait disparu montre que le classeur est corrompu.
    Il faut copier toutes les feuilles, macros et userforms du classeur
    vers un classeur vierge et se servir de ce dernier à la place de
    l'ancien.
    Daniel
     
     
     
    samedi 17 mars 2012 10:05
  • C'est bien mon intention.
    samedi 17 mars 2012 10:17
  • J'ai compris. La cause est une liste déroulante dont les données sont prélevées dans une colonne (la plage est définie dans les propriétés du contrôle). Tenter de masquer une ligne coupant la plage source met le contrôle en défaut et déclenche l'erreur. Du fait de son libellé, "impossible de définir la propriété Hidden de la classe Range", je cherchais bêtement sur la feuille et ne pensais absolument pas à ça. Désolé de vous avoir dérangés pour ce que je prenais pour une anomalie d'Excel et qui n'est qu'une erreur de conception.
    samedi 17 mars 2012 16:49