> Tous les forums > Forum Bureautique
 masquer lignes videsSujet résolu
Ajouter un message à la discussion
Pages : [1] 2 ... Fin
Page 1 sur 2 [Fin]
cec-cameleon
  Posté le 25/09/2009 @ 13:21 
Aller en bas de la page 
Petite astucienne

Bonjour,

Voilà, je suis nouvelle ici, je connais quelques formules sous excel, mais je ne suis pas au top!

Je vous expose mon pb : j'ai un classeur où j'ai plusieurs onglets, un onglet pour un tableau principal puis les autres onglets qui reprennent grace à des formules seulement quelques lignes de mon premier tableau.

Seulement dans les onglets qui reprennent les données du premier tableau du coup j'ai des lignes vides (car ils reprennent la place des lignes d'origine) je voudrai pouvoir masquer ces lignes mais pas manuellement celà me prendrais bcp trop de temps, je voudrai seulement avoir à remplir mon premier tableau et que tout se fasse automatiquement.

Je voudrais donc savoir si une fonction si existe pour faire en sorte de masquer telle ou telle ligne si elle est vide.

J'ai cru comprendre que l'on pouvait faire ça avec des macros, mais je n'ai jamais fait de macros je ne sais pas du tout comment faire...

Pouvez-vous m'aider????

Merci à tous

Cécile

Publicité
ferrand
 Posté le 25/09/2009 à 15:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour et bienvenue sur PCAstuces,

Si les lignes concernées contiennent des formules, elles ne sont pas vides. Il faudra donc un autre critère à choisir selon tes données pour les masquer.

Pour une réponse adaptée à ton cas, un exemplaire de ton dossier aiderait. Si tes données sont personnelles ou confidentielles et que tu ne souhaites pas les exposer, un modèle de classeur construit de la même façon avec des données de même type et les mêmes formules permettrait de voir précisément les solutions. Soit aboutir à ce que le transfert vers d'autres onglet ne laisse pas de lignes "vides", soit en effet masquer les lignes en question.

Tu peux communiques ton classseur exemple par http://cjoint.com/index.php . Tu cliques sur Parcourir pour sélectionner ton classeur, puis sur Créer le lien CJoint et tu autorises l'accès au presse-papier pour le lien, il ne te reste plus qu'à le coller dans un post par Ctrl+V.

cec-cameleon
 Posté le 25/09/2009 à 15:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Merci de bien vouloir m'aider!

J'essaie de mettre le fichier en pièce jointe mais ça fait 10 min et ça ne bouge plus, est-ce aussi long habituellement?

Mon fichier est peut-être trop lourd...?

cec-cameleon
 Posté le 25/09/2009 à 15:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Je l'allège un peu, j'ai enlevé 3 onglets, j'attends à nouveau que ça charge...

ferrand
 Posté le 25/09/2009 à 16:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

C'est limité à 1 Mo.

vieuxmonsieur
 Posté le 25/09/2009 à 16:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

bonjourcec cameleon, ferrand, le forum,

j'ai trouvé ceci dans mes archives :

Columns(8).SpecialCells(xlCellTypeBlanks).Rows.Hidden = True

Cette formule produit un résultat, il suffit d'inclure celui-ci dans le test.. exemple en colonne C, on a la formule = A1+B1 (ceci recopié dans toute la colonne avec adresse relative) si A et B sont vides, la formule va produire 0 en résultat on peut donc créer la procédure suivante

Sub masquerlignes()
Dim cel As Range
For Each cel In Range("C1:C100") 'Teste sur la colonne C
If cel = "" Or cel = 0 Then
cel.EntireRow.Hidden = True
End If
Next
End Sub

http://www.cathyastuce.com/w-agora/download_thread.php?site=cathyastuce&bn=cathyastuce_vba&thread=11 43298629

et :

Sub masquelignesvides()
' Macro enregistrée le 19/07/99 par Alain DI MAGGIO
For Each c In Selection
If Application.CountA(c.EntireRow) = 0 Then Rows(c.Row).RowHeight = 0
Next c
End Sub

si ca peut vous etre utile

tsgri
 Posté le 25/09/2009 à 16:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Bonjour,

Ce que tu peux faire aussi hormis les macros, c'est de faire un tableau crois dynamique (TCD) ce qui te permet en plus de mettre à jour automatiquement les données.

cec-cameleon
 Posté le 25/09/2009 à 16:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Décidément...

J'ai diminué mon fichier au max et il ne passe toujours pas...

Je ne sais pas faire de tableau croisé dynamique...:)) et c'est vrai que les macros c'est un peu du chinois pour moi.

ferrand
 Posté le 25/09/2009 à 16:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Quelle taille fait-il donc ? 1 méga c'est déjà une bonne taille pour un fichier Excel.

cec-cameleon
 Posté le 25/09/2009 à 16:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Je sais je suis nulle, je sais pas si vous allez pouvoir m'aider!!

Ou alors vous êtes très forts...

cec-cameleon
 Posté le 25/09/2009 à 16:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Il fait 10.3 MO

tsgri
 Posté le 25/09/2009 à 17:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

y'a pas plus simple et formidable qu'un TCD, pour cela tu vas dans le menu INSERTION puis TABLEAUCROISEDYNAMIQUE et après laisse toi aller ..

cec-cameleon
 Posté le 25/09/2009 à 17:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Ah voilà, j'ai enlevé toutes mes formules et plusieurs onglets, normalement il y a autant d'onglets que de n° d'agence (cf onglet ref) il faut que chaque onglet 410,411... (qui correspondent dans le tableau à 00410...) reprennent dans le tableau principal les lignes correspondantes.

Ai-je été claire??

http://cjoint.com/?jzrezszAAH

cec-cameleon
 Posté le 25/09/2009 à 17:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Avez-vous réussi à ouvrir le fichier? et seulement celui la j'espère...?

Moi quand j'essaie, j'ai accès à tous mes fichiers, les boules!

ferrand
 Posté le 25/09/2009 à 17:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

J'ai pu l'ouvrir. Un peu de ménage sur le bureau et je regarde...

ferrand
 Posté le 25/09/2009 à 17:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Petit problème ! Ton fichier Copie.xls ne contient qu'une feuille dépourvue de donnée (hormis une ligne d'intitulés de colonnes). Aucune autre feuille supposée comporter des formules. Y a plus rien à masquer !

cec-cameleon
 Posté le 25/09/2009 à 17:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

En fait il suffit de copier la formule qu'il y a dans le 410 (dans la ligne 3) dans les autres onglets et changer selon l'onglet le n° dans la formule...

ferrand
 Posté le 25/09/2009 à 17:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Autant pour moi ! J'avais pas déplié, je regarde.

ferrand
 Posté le 25/09/2009 à 20:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Re,

Je ne suis pas sûr que le masquage des lignes soit la meilleure solution dans ton cas. En tout cas, elle est toujours possible...

Je crois qu'il est possible d'obtenir le même résultat avec des formules. Je vérifie avant de communiquer.

Ce qui me paraît plus préoccupant, c'est la lourdeur de ton fichier. Combien d'enregistrements as-tu ? (Combien de lignes sur feuille 1 ?) Et combien de feuilles dans le classeur pour atteindre une telle taille ?

Pour voir la taille à laquelle on pourrait le ramener, tu devrais faire une copie des feuilles feuille 1 et ref dans un nouveau classeur. En multipliant la taille obtenue par 2, cela devrait donner à peu de choses près ce qu'on obtiendrait en opérant le transfert sur les feuilles agences par macro. Tant qu'à faire des macros, autant automatiser ton opération de transfert, ce qui éliminerait toutes les formules afférentes.

Je suis en préparation de repas... A plus tard.

ferrand
 Posté le 26/09/2009 à 00:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Encore moi,

Inutile de faire une copie de tes 2 feuilles que j'ai mentionnées. La copie des feuilles telles quelles pèse plus de 6500 ko. La suppression de la formule de la colonne B, tirée 65536 lignes ramène le poids à 45 ko !

Je ne saurais trop te conseiller de garder une taille gérable de ton fichier, de façon à scinder sur des périodes fixes à dimensionner selon le volume d'activité. Tu y gagneras certainement.

En reprenant mes manipulations, sur la feuille ref, j'ai éliminé le tableau du dessous qui faisait doublon. J'ai conservé comme plage nommée (dans le classeur): Num_agence [$A$2:$A$38] et agence [$B$2:$B$38] (que j'ai rajoutée).

Sur la feuille feuille 1: toujours validation sur liste en col.A (Num_agence) et remplacement de la formule en col.B par une validation sur liste (agence). Il me semble que tu pourrais étendre ce système à d'autres colonnes car tu dois avoir pas mal de données redondantes.

J'ai également rajoutée une 3e plage nommée correspondant aux données saisies de la colonne A, ainsi définie:
=DECALER('feuille 1'!$A$3;;;NBVAL('feuille 1'!$A:$A)-2;1)
il s'agit d'une plage dynamique, qui s'étend au fur et à mesure des saisies. Je l'ai nommée codag mais tu peux mettre le nom qui te convient.

Sur feuille 1 toujours, j'utilise la colonne O pour créer un identifiant unique de tes enregistrements: en O3, la formule:
=A3&NB.SI($A$3:$A3;$A3)
Elle concatène le numéro de l'agence (code à 5 chiffres) et le rang de l'enregistrement sur la feuille agence.

J'ai tiré la formule jusqu'à la ligne 7500, ce pour apprécier le poids du fichier (628 ko à ce stade, sans les feuilles agence).

Petite pause, le temps d'intégrer les feuilles à ce nouveau fichier et je reviens.

ferrand
 Posté le 26/09/2009 à 02:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bon, la suite.

J'ai incorporé 37 feuilles agence au fichier pour voir le résultats, avec formules jusqu'à la ligne 200, et cela nous amène à une taille de 10081 ko !! J'en ai donc supprimé 36 pour le ramener à une taille plus honnête, en tirant les formules jusquà la ligne 300, il en résulte 1021 ko.

Si tu tiens à avoir tes 37 feuilles, rien ne t'empêche de les mettre, cependant une seule feuille agence pouvant permettre la consultation de chacune des 37, il me semblerait à la fois possible et économique de s'en passer...

J'en viens à l'organisation de la feuille, sur la feuille agence la colonne O (comme sur feuille 1) va servir à identifier les enregistrements à appeler. En O1, le Numéro de l'agence (avec liste sur cette cellule): c'est d'ailleurs ce qui permet, en faisant varier le numéro dans cette cellule d'afficher l'une ou l'autre des 37 agences.

En O2, une formule: =NB.SI(codag;O1) , elle indique le nombre d'enregistrements de feuille 1 pour cette agence. [Rappel: codag représente la plage de feuille 1 A3:An, n étant la fin de la liste.]

En O3, la formule: =SI($O$2>=LIGNE()-2;EQUIV($O$1&LIGNE()-2;'feuille 1'!$O:$O;0);"") . Elle affiche le numéro de la ligne de feuille 1 sur laquelle se trouve l'enregistrement de rang LIGNE()-2 [-2 parce qu'on commence à la ligne 3] (c'est la fonction EQUIV qui le renvoie en recherchant l'identifiant unique créé sur feuille 1 en col. O). Lorsque LIGNE()-2 devient supérieur au nombre d'enregistrements concernant cette agence (condition), la formule n'affiche plus rien. Cette formule est tirée jusqu'à la ligne 300.

En A3, la formule qui va permettre l'affichage des enregistrements:
=SI($O3<>"";INDEX(DECALER(codag;;COLONNE()-1);$O3-2);"")
La condition permet de n'afficher que s'il existe un enregistrement. La donnée à afficher est identifier sur la plage codag (une seule colonne que l'on décale pour couvrir tous les champs, COLONNE()-1 renvoyant un décalage 0 pour la col. A, 1 pour la col. B... 13 pour la col. N) au moyen de la fonction INDEX, la ligne étant définie par la valeur affichée en col. O -2 (puisque codag commence à la ligne 3). Cette formule est tirée sur l'ensemble de la plage A3:N300.

Voilà. Si tu as besoin de plus de précision, n'hésite pas à le demander. Si un fichier de cette taille peut couvrir les besoins d'une période gérée, cela reste encore à peu près acceptable. Si cela devait dépasser, je conseillerais de remplacer par des macros pour éviter un fichier susceptible de grossir démesurément.

Bon courage.

ferrand
 Posté le 26/09/2009 à 02:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

J'ai failli oublier l'essentiel {#}, le fichier modifié, concerné par les commentaires qui précèdent:

http://cjoint.com/?jAcJKMPX0V

cec-cameleon
 Posté le 27/09/2009 à 22:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

WAOUH!

Alors là je sais pas quoi dire!!!! si bien sur, merci!! je t'avoue que moi j'ai fait une pause pendant le WE... J'espère vraiment que ça ne t'a pas embété (surtout quand je vois l'heure du post...!) je suis désolée de ne pas avoir répondu, en fait je fais un tableau par mois sans avoir besoin de le garder, je n'ai jamais plus de 100 lignes dans le tableau, et en faisant un onglet par agence, il m'est plus facile de les envoyer à chaque agence.

Je vais étudier plus longtemps ton GRAND TRAVAIL, parce que le but est également que je comprenne et puisse mettre ces fonctions à exécutions pour d'autres travaux... En tout cas, un gros merci!

Je saurais à qui m'adresser quand j'aurai un pb!!

à bientôt, je te tiens au courant si j'ai réussi à tout comprendre.

Cécile

ferrand
 Posté le 28/09/2009 à 11:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

cec-cameleon a écrit :

WAOUH!

Alors là je sais pas quoi dire!!!! si bien sur, merci!! je t'avoue que moi j'ai fait une pause pendant le WE...

J'en ai fait aussi... {#}

J'espère vraiment que ça ne t'a pas embété (surtout quand je vois l'heure du post...!) je suis désolée de ne pas avoir répondu,

et ne t'inquiète pas de mes horaires plutôt atypiques {#} [je m'arrête quand ma production devient incohérente] {#}

en fait je fais un tableau par mois sans avoir besoin de le garder, je n'ai jamais plus de 100 lignes dans le tableau,

En reduisant feuille 1 à 150 lignes (pour te laisser une bonne marge) et la feuille agence à 50 lignes, le fichier se réduit à une taille de 338 ko, semble-t-il suffisante pour tes besoins

et en faisant un onglet par agence, il m'est plus facile de les envoyer à chaque agence.

tu peux bien sûr avoir 37 onglets agence, toutefois un seul suffit en faisant varier la valeur d'une cellule pour afficher chacune des agences. Cela n'empêche pas l'envoi de son exemplaire à chaque agence. Sous quelle forme le leur fais-tu parvenir ?

La production des feuilles à expédier est une opération répétitive que je suggèrerais d'automatiser, d'autant plus que pour bien faire il te faut fixer les valeurs en éliminant les formules avant expédition

Je vais étudier plus longtemps ton GRAND TRAVAIL, parce que le but est également que je comprenne et puisse mettre ces fonctions à exécutions pour d'autres travaux... En tout cas, un gros merci!

Pas trop ... il y a bon nombre d'astuciens compétents pour ce genre d'exercices... Très louable à toi de vouloir pénétrer la fabrication pour exploiter au mieux les outils à ta disposition . Je n'ai mentionnné dans mes commentaires que le résultat obtenu (par rapport à tes données) et en partie les sources des arguments... Pour une vue plus large de l'utilisation des fonctions, je te conseillerai de te référer à l'aide pour la syntaxe de base et voir comment elle est utilisée dans ton fichier sous différents aspects: quelle application particulière en est faite bien sûr mais aussi les éléments qui vont permettre de l'étendre sans avoir à la modifier (forme des références de cellules et éventuellement utilisation d'autres fonctions à la même fin)... Je demeure à ta disposition si tu as besoin d'éclaircir tel ou tel détail.

Je saurais à qui m'adresser quand j'aurai un pb!!

{#} Merci de ta confiance. {#} Je ne prétends pas résoudre tous les problèmes mais je ne doute pas de ta capacité à faire surgir des solutions adaptées à ton environnement {#} (si tant est que le choix d'un pseudo n'est pas fortuit).

à bientôt, je te tiens au courant si j'ai réussi à tout comprendre.

Cécile

Bonne journée. {#}

cec-cameleon
 Posté le 28/09/2009 à 16:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

C'est génial!!

J'ai modifié quelques petites choses (j'ai remis des formules pour le nom de l'agence, ça m'évite de me tromper!) et j'ai diminué à 100 les lignes de la feuille 1 et 45 l'onglet Agence.

Sinon tu as raison, il me sera bien plus simple de ne changer que le num de l'agence plutôt que d'avoir 37 onglets...! Et moins lourd.

Je suis en train de comprendre petit à petit les formules (pour quelqu'un qui ne connaissait que les fonctions basiques, si, recherchev... ça peut paraitre un peu complexe!). Il va falloir que j'explique à ma collègue, donc c'est pas le tout il faut que je pige tout! Car c'est ma collègue qui les envoie, et elle me dit (ça me parait un peu compliqué...) qu'elle enregistre chaque onglet pour pouvoir l'envoyer aux agences en pièce jointe (il doit y avoir plus simple?) car c'est quand même une grosse perte de temps... (nouveau défi??)

A bientot et encore merci

ferrand
 Posté le 29/09/2009 à 11:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Petit bonus pour ta collègue : http://cjoint.com/?jDlzMEUQYV

Feuille agence, cliquer sur le bouton marqué "Envoi" (en N1). La feuille agence sera actualisée automatiquement pour chacune, copiée (et "déformulée") dans un nouveau classeur (nom= num agence). Les 37 classeurs à expédier seront enregistrés dans le même dossier que le classeur "Copie" (veiller à ce qu'il n'y en ait pas d'autres du même nom).

NB: La cellule O1 de la feuille agence doit absolument être mise au format "texte" (sinon VBA convertit les numéros d'agence en nombres).

Publicité
Pages : [1] 2 ... Fin
Page 1 sur 2 [Fin]

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
95,98 €SSD Interne M.2 NVMe Samsung 980 1 To (3500 Mo/s) à 95,98 €
Valable jusqu'au 22 Mai

Amazon fait une promotion sur le SSD Interne M.2 NVMe PCIe 3.0 Samsung 980 1 To qui passe à 95,98 €. On le trouve ailleurs à partir de 120 €. Ce SSD offre des taux de transfert de 3500 Mo/s. Une bonne affaire.


> Voir l'offre
12,99 €Hub USB C 6 en 1 (HDMI 4K, 3xUSB 3.0, SD et MicroSD) à 12,99 €
Valable jusqu'au 22 Mai

Amazon fait une promotion sur le hub USB C 6 en 1 Cappuon qui passe à 12,99 € au lieu de 29,99 € grâce à un coupon de réduction à activer sur la page du produit. Ce hub vous permettra de rajouter un port HDMI 4K, 3 ports USB 3.0 et un lecteur de cartes SD et MicroSD à votre ordinateur via un simple USB-C. 


> Voir l'offre
33,71 €Micro clé USB 3.1 Sandisk Ultra Fit 256 Go à 33,71 € livrée
Valable jusqu'au 22 Mai

Amazon Allemagne fait une promotion sur la micro clé USB Sandisk Ultra Fit d'une capacité de 128 Go qui passe à 14,11 € (avec la TVA ajustée). Comptez 4,50 € pour la livraison en France, soit un total de 18,61 € livrée. La minuscule taille de cette clé USB va vous permettre de la laisser brancher en permanence sur votre portable, votre TV ou votre autoradio sans qu'elle dépasse de manière disgracieuse. Sa compatibilité USB 3.1 lui permet d'atteindre des débits jusqu'à 130 Mo/s. Le lecteur flash SanDisk Ultra Fit USB 3.1 est rétrocompatible, vous permettant d’utiliser aussi bien un port USB 2.0 que 3.0.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de frais de douane.


> Voir l'offre

Sujets relatifs
macro afficher masquer lignes tableau dans word 2010
Macro masquer certaines lignes
Macro : Masquer des lignes ne contenant pas ...
Vba Masquer lignes
Compter les lignes non vides (Excel 2010)
masquer/afficher des lignes dans tableau word
Supprimer les lignes vides dans Excel
supprimer lignes vides
Excel - Macro - eliminer des lignes vides
masquer des lignes en fonction de la valeur d'une
Plus de sujets relatifs à masquer lignes vides
 > Tous les forums > Forum Bureautique