XL pour MAC Lignes affichées par default

Valter

XLDnaute Occasionnel
Bonjour a tous,
Serait-il possible de masquer par default les toutes les lignes d'un onglet, et faire en sorte que elles s'affichent automatiquement si une ligne contient des données ou qu' elle se masque à nouveau si la ligne ne contient plus de données.
Bien entendu les données seraient introduite dans un autre onglet et serait en liaison avec l'onglet contenant les lignes masquées.
Ceci serait interessant si on veut faire une facture sur un onglet et imprimer uniquement les lignes pleines dans un autre onglet.
Merci de m'aider
 

Valter

XLDnaute Occasionnel
Bonjour Galougalou, merci pour ton idée, malheureusement cela ne fonctionne pas... il faut dire que je n'ai pas donné beaucoup d'explications sur mon problème, je vais essayer d'expliquer avec plus de détails.

j'ai fait un petit programme de comptabilité ou on passe les écritures dans un journal de 1000 lignes et chaque écriture se ventile automatiquement dans le compte correspondant et dans un onglet par compte selon le numero de compte introduit dans le journal.

le problème est à l'impression, je n'ai pas envie d'imprimer les lignes vides. Le journal est une feuille vide avec des cellules vides, donc les cellules vides sont reconnues par excel comme vides.

Pour imprimer le journal la macro ci-dessous fonctionne à merveille et très rapidement.

Capture d’écran 2020-01-22 à 10.04.59.jpg

Or c'est un peu different dans mes comptes, les données ventilées automatiquement sont inscrites dans un cadre identique au compte mais caché situé quelques colonnes plus loin que le compte visible.

Quand j'ouvre ce compte, par macro je vais récupérer les données ventilées automatiquement dans le cadre à coté du compte, et la macro me colle uniquement les valeurs dans le vrai compte, et comme les lignes des données ne sont pas à la suite les une des autres, la macro termine par me trier par date, ce qui provoque que toutes les écritures se retrouvent en haut du compte parfaitement visible et bien ordrées.

Mais voila quand je veux imprimer en utilisant la même macro que pour le journal, cela ne fonctionne pas, les lignes vides ne se cachent pas, car même si le lignes sont blanches, excel ne les considère pas comme vides.

Si je les sélectionne manuellement et je les efface, la macro ci dessus fonctionne parfaitement.

Alors voilà le problème, comment arriver a sélectionner des lignes vides mais que excel ne considère pas vides ???

J'ai fait un essai avec une colonne supplémentaire à cote du compte ou s'affiche 0 si la ligne est vide et 1 si la ligne n'est pas vide, avec une macro qui teste la valeur de la cellule cela fonctionne très bien, par contre il lui faut quelques minutes pour tester les 1000 lignes... c'est trop long.

Je suis à la recherche d'une solution qui fonctionne, j'ai pensé masquer toutes les lignes par default, et selon la valeur de la ligne que elle s'affiche automatiquement, ceci me permettrai d'éliminer la macro qui colle et trie les données a chaque ouverture du compte...et c'est la que j'ai poste cette discussion, mais je n'arrive pas a masquer les lignes par default.

Une solution serait aussi d'effacer par macro la zone vide, mas comment la reconnaitre puisque excel ne considère pas que les cellules sont vides... ?

c'est vraiment étonnant que après un collage special valeurs, les cellules vides ne sont pas considérées comme vides.

Si quelqu'un à une solution ça serait avec grand plaisir

Bien a vous.....
 

GALOUGALOU

XLDnaute Accro
bonjour valter bonjour le forum
on va y aller doucement. je n'ai pas une solution à tout mais voici déjà pour des cellules apparemment vide
(par prudence fait un essai sur la copie d'un classeur pour vérifier les résultats)
Sub effacercellulevide()
For Each c In ActiveSheet.UsedRange
If Not c.HasFormula And c.Value = "" Then c.ClearContents
Next
End Sub

cordialement
galougalou
 

Valter

XLDnaute Occasionnel
Bonjour GalouGalou, je ne suis pas arrivé pour que cela fonctionne, je vais joindre un fichier que j'ai beaucoup simplifié (pour alléger le fichier, sinon impossible de le joindre) ou on ne voit que 2 onglets : le journal, et l'onglet no 1 qui est le premier compte, soit le compote de caisse
J'ai aussi enlevé la plupart des macros et ne laissé que l'essentiel.
dans l'onglet "1" on voit que les info sont automatiquement ventilées depuis le journal (en bleu)... si on exécute la macro qui colle et trie les données dans le compte (à gauche) on voit apparaitre toutes les écritures en haut du compte triées par date.
Si on exécute la macro masquer les lignes vides... rien ne se masque car excel ne considère pas que les lignes sont vides.
Si on efface les lignes vides manuellement, ensuite la macro cacher les lignes fonctionne parfaitement.
Le but serait d'arriver à masquer les lignes vides juste après avoir collé et trié les écritures d'une manière automatique.
 

Pièces jointes

  • Comptabilite9 copie.xlsm
    242.2 KB · Affichages: 14

GALOUGALOU

XLDnaute Accro
c'est un problème connu lors d'un copier coller quand dans les cellules d'origine des formules existent
une solution en colonne c
Range("C6:C1005").Select
Selection.SpecialCells(xlCellTypeConstants, 2).Select
Selection.ClearContents

la colonne c contient des dates donc format numerique
la macro cherche dans la colonne c les cellules textes et les supprime
teste le classeur
cordialement
galougalou
 

Pièces jointes

  • Copie de Comptabilite9 copie-v2.xlsm
    263.6 KB · Affichages: 8

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Une autre macro qui ne touche pas aux valeurs des cellules:

VB:
Sub MASQUER_LIGNES_VIDES_COMPTES()
Dim xcell, lignes
   Application.ScreenUpdating = False
   Range("C6:c1005").EntireRow.Hidden = False
   For Each xcell In Range("C6:c1005")
      If (xcell & xcell.Offset(, 1)) = "" Then
         lignes = lignes & "," & xcell.Address(0, 0)
         If Len(lignes) > 240 Then Range(Mid(lignes, 2)).EntireRow.Hidden = True: lignes = ""
      End If
   Next xcell
   If lignes <> "" Then Range(Mid(lignes, 2)).EntireRow.Hidden = True
End Sub
 

Valter

XLDnaute Occasionnel
Merci GalouGalou et aussi ma pomme, les deux solutions fonctionnent, cependant j'ai remarque une chose curieuse avec la solution de GalouGalou, je peux masquer les lignes que une seule fois, la deuxième fois cela ne fonctionne plus, je dois recoller de nouveau les données et cela re-fonctionne à nouveau, mais toujours une seule fois. La solution de ma pomme fonctionne normalement même plusieurs fois...
Encore merci.
 

GALOUGALOU

XLDnaute Accro
et oui tu as raison valter
que serait excel si je le maitrisais totalement!
suite à ton #10 j'ai constaté le problème
j'ai effectué une correction dans la macro, je te joins le classeur qui devrait maintenant fonctionner sans blocage
cordialement
galougalou
 

Pièces jointes

  • CALENDRIER _planning_de_conges_3.xlsx
    33.5 KB · Affichages: 6

Valter

XLDnaute Occasionnel
Oui GalouGalou... je crois que c'est impossible de maitriser parfaitement toutes les fonctions et programmations d'excel, à mons d'y passer une vie toujours dessus..... tu m'as retourné le faux fichier excel, je n'ai pas pu voir le code VBA....
 

job75

XLDnaute Barbatruc
Bonjour Valter, GALOUGALOU, mapomme, le forum,

Voyez le fichier joint et les formules de numérotation en colonnes B des 2 feuilles.

Cette macro permet d'imprimer l'une ou l'autre :
VB:
Sub Imprimer()
ActiveSheet.Protect UserInterfaceOnly:=True 'protège la feuille sans mot de passe
Rows.Hidden = False 'affiche toutes les lignes
On Error Resume Next 'si aucune SpecialCell
[B:B].SpecialCells(xlCellTypeFormulas).EntireRow.Sort [B1], xlAscending, Header:=xlNo 'tri pour regrouper les lignes vides
[B:B].SpecialCells(xlCellTypeFormulas, 2).EntireRow.Hidden = True 'masque les lignes vides
ActiveSheet.PrintPreview 'pour tester
'ActiveSheet.PrintOut 'pour imprimer
Rows.Hidden = False 'affiche toutes les lignes
End Sub
Bonne journée.
 

Pièces jointes

  • Comptabilite(1).xlsm
    278.1 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 151
Messages
2 085 783
Membres
102 973
dernier inscrit
docpod