IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Masquer automatiquement les lignes vides pour chaque onglet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut Masquer automatiquement les lignes vides pour chaque onglet
    Bonjour à tous,

    Je tiens une petite BDD sur excel de 600 personnes, me permettant de générer des "fiches" détaillées selon le nom choisis, et puis de générer à la volée une fiche pour chacune de ces personnes en version HTML.
    Mais tous le monde n'a pas la meme quantité d'infos, et je dois souvent masquer sur la fiche certaines lignes qui se révèlent vide et donc inutile.

    J'ai trouvé un code (affiché ci-dessous) me permettant de le faire. Il fait très bien son taf, mais le problème est qu'il le fait uniquement sur l'onglet affichée.
    Je souhaiterais qu'il puisse le faire sur tous les onglets du fichier excel en une seule exécution. Je précise que je ne sais pas coder VBA. Est-ce que quelqu'un peut me rajouter les quelques lignes de code manquantes pour arriver à ce but ?

    Ce sera la dernière pièce manquante de mon puzzle, que j'ai réussis a assembler bout à bout grâce aux différents topics de ce site. J'en profite donc pour dire un grand merci général à tous ceux qui aident et qui expliquent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub masque()
       Dim z As Long, i As Long
         Application.ScreenUpdating = False
             z = Cells.Find("*", , , , , xlPrevious).Row + 1
                Range("A" & z & ":A" & 65536).EntireRow.Hidden = True
                   For i = 1 To Cells.Find("*", , , , , xlPrevious).Row
    If Range("A" & i & ":iv" & i).Rows.Count - Application.CountBlank(Range("A" & i & ":iv" & i)) = -255 Then
                    Rows(i).EntireRow.Hidden = True
                      End If
                           Next i
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu fais un filtre élaboré pour la personne considérer, et ensuite tu génère ton html sur le résultat du filtre!

  3. #3
    Membre averti
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut
    Je ne comprends pas cette histoire de filtre, j'ai dû mal me faire comprendre !

    Il y a un 1 onglet/feuille par personne, qui génèrera donc une fiche html par personne.
    J'ai donc 600 onglets/feuille avec pour chaque onglet 1 ou plusieurs lignes vides à masquer.

    Le code affiché sur le topic si je l'execute me permet uniquement de traiter l'onglet (donc une seule personne) visible. Là ou je voudrais qu'il traite les 600 onglets en une seule exécution.

    Il ne doit pas y avoir grand chose à rajouter. J'ai essayé de rajouter des trucs du genre For each Sheets in Activeworksheet etc....
    Mais j'ai zéro notion de codage et je n'y arrive pas.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Le filtre élaboré te permet de récupérer le valeur <> (rien) tu récupères donc toutes tes valeurs sens ligne vide.

    Ensuite tu peux gérer la convention html comme tu le souhaites.

    Est plus clair!

    http://philippetulliez.developpez.co...dvancedfilter/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i =1 to sheets.count
    HtmlConver sheets(i)
    Next
    Dernière modification par Invité ; 01/11/2015 à 12h29.

  5. #5
    Membre averti
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut
    Je n'ai aucune problème avec l'étape de conversion HTML.


    Je souhaite juste savoir ce que je rajoute la-dedans (et ou) pour que cela agisse sur tous les onglets et pas seulement sur l'onglet qui s'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     Sub masque()
       Dim z As Long, i As Long
         Application.ScreenUpdating = False
             z = Cells.Find("*", , , , , xlPrevious).Row + 1
                Range("A" & z & ":A" & 65536).EntireRow.Hidden = True
                   For i = 1 To Cells.Find("*", , , , , xlPrevious).Row
    If Range("A" & i & ":iv" & i).Rows.Count - Application.CountBlank(Range("A" & i & ":iv" & i)) = -255 Then
                    Rows(i).EntireRow.Hidden = True
                      End If
                           Next i
    End Sub

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je te l'ai dit au postes précédent la boucle for i !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i =1 to sheets.count
    Sheets(i).select
    masque 
    Next
    Mais je pense que ton souhait n'est pas d'apprendre mais qu'on te fournisse un code clé en main!
    Alors désolé je ne connais pas vba!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     Sub masque()
       Dim z As Long, i As Long
         Application.ScreenUpdating = False
             z = Cells.Find("*", , , , , xlPrevious).Row + 1
                Range("A" & z & ":A" & 65536).EntireRow.Hidden = True
                   For i = 1 To Cells.Find("*", , , , , xlPrevious).Row
    If Range("A" & i & ":iv" & i).Rows.Count - Application.CountBlank(Range("A" & i & ":iv" & i)) = -255 Then
                    Rows(i).EntireRow.Hidden = True
                      End If
                           Next i
    End Sub
    Le filtre élaboré t'aurais facilité la vie et gagner du temp!
    Dernière modification par Invité ; 01/11/2015 à 12h43.

Discussions similaires

  1. [XL-2007] Solution pour réduire les lignes vides de ma facture
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/10/2013, 19h07
  2. [XL-2007] Afficher zéro pour les lignes vides d'un TCD
    Par Invité dans le forum Excel
    Réponses: 13
    Dernier message: 12/09/2013, 09h27
  3. Macro permettant de masquer toutes les lignes vides d'une feuille
    Par edouardmartin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2010, 17h34
  4. [BO6.5.1] Masquer les lignes vides
    Par Herlece dans le forum Deski
    Réponses: 3
    Dernier message: 06/08/2008, 11h03
  5. Supprimer/Masquer les lignes vides
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/05/2007, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo