Vérifier si une colonne ou une ligne est cachée dans une feuille Excel [Résolu]

Messages postés
25
Date d'inscription
mardi 24 juillet 2007
Dernière intervention
27 août 2010
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 17 déc. 2009 à 17:09
Bonjour,

Le but de mon programme est de créer un fichier excel en y insérant des onglets d'autres fichiers.

Cela j'y arrive très bien.
par contre, l'onglet copier possède des colonnes et des lignes masquées et il faut que je supprime ces lignes et colonnes.
Le problème, c'est que je ne sais pas comment faire en VBA pour vérifier si une ligne est masquée ou non. Je connais la commande "Columns.hidden" (en ligne "row.hidden") mais cela ne me permet que de forcer le masquage ou non d'une colonne déterminée.

Savez vous quelle est la commande ou la méthode pour récupérer cette information ?
j'utilise Excel 2003.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Re...
Voilà : j'avsis un peu de temps pour faire du plus propre. Ici, c'est d'un seul coup (et pas au fur et à mesure dans la boucle) que je détruis toutes les lignes vides :

Dim c As Range, cunion As Range
  For Each c In Sheets("Feuil1").UsedRange.Rows
    If c.Hidden = True Then
       If cunion Is Nothing Then
         Set cunion = c
       Else
         Set cunion = Application.Union(c, cunion)
       End If
     End If
   Next c
   If Not cunion Is Nothing Then
     cunion.EntireRow.Delete ' ou toute autre instruction, à ta guise, bien sûr, modifiant ces lignes (y compris pour les montrer)
   End If


J'ai bien sûr testé ===>> fonctionne très bien et d'un seul coup.
Je te laisse maintenant continuer (faire la même chose avec les colonnes maquées).
___________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.

Merci ucfoutu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Masquées, veux-je dire, pas "vides" (mais tu l'auras deviné, hein ...)

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.

Merci ucfoutu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
81
Date d'inscription
vendredi 17 avril 2009
Dernière intervention
12 avril 2013
0
Merci
Hi!
Vas voir à secretswindows.com

Salut
Commenter la réponse de cracos30
Messages postés
25
Date d'inscription
mardi 24 juillet 2007
Dernière intervention
27 août 2010
0
Merci
ben, c'est pas vraiment du Windows mon pb, mais plutôt du Excel.
je me vois mal aller faire jour dans la base de registre juste pour savoir si une colonne (ou ligne) dans une feuille Excel est masqué ou non.
Commenter la réponse de cs_cobra2008
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,

je te propose ceci :
exemple pour les lignes (même principe pour le colonnes)

 Dim c As Range
  For Each c In Sheets("Feuil1").UsedRange.Rows
    If c.Hidden = True Then
       MsgBox c.Address
       c.EntireRow.Delete
     End If
   Next c


Tu en fais autant avec les colonnes.
Ceci étant : c'est là du bâclé. Constitue plutôt un range (appelons-le ATUER) (avec Union) de chaque c.hidden trouvé et zigouille d'un seul coup le range ATUER (plutôt que dans la boucle, pour chaque ligne)
Commenter la réponse de ucfoutu
Messages postés
25
Date d'inscription
mardi 24 juillet 2007
Dernière intervention
27 août 2010
0
Merci
merci bcp, je vais essayer demain avec ton exemple.
je te tiens au courant
Commenter la réponse de cs_cobra2008
Messages postés
81
Date d'inscription
vendredi 17 avril 2009
Dernière intervention
12 avril 2013
0
Merci
oups! Pardon tompé message
Commenter la réponse de cracos30
Messages postés
25
Date d'inscription
mardi 24 juillet 2007
Dernière intervention
27 août 2010
0
Merci
Super
ca marche du tonnerre !
bon je ne comprend pas encore toutes les subtilités de VBA, car j'apprends sur le tas. Comme j'ai une formation en C, je code en VBA comme en C donc mon code n'est pas optimisé.
Mais là j'ai appris un nouveau truc

Merci encore
Commenter la réponse de cs_cobra2008
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Ne te fais pas de bile ... La première solution (la bâclée, mais qui marche) étail à ta portée. La seconde l'était moins et tu n'es pas le seul à ne pas la maîtriser ...(loin de là)


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.