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 :

Macro pour masquer des lignes vides sur plusieurs feuillés.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut Macro pour masquer des lignes vides sur plusieurs feuillés.
    Bonjour,
    je souhaite masquer des lignes vides (de A41 à A43) dans plusieurs feuillés en même temps à l'ouverture de mon fichier et si possible en auto-contrôle permanent (lorsque la ligne est vide elle se cache et lorsqu'elle est remplie elle réapparaisse).
    Pour l'instant j'ai fait ce code qui fonctionne, mais uniquement sur le feuillé actif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_Open()
    Range("A41:A43").Select
    For Each o In Selection
    If o.Value = "" Then
    o.EntireRow.Hidden = True
    Else
    o.EntireRow.Hidden = False
    End If
    Next
    End Sub
    En vous remerciant d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je pense que la méthode que tu utilises va toujours masquer les lignes puisque la dernière cellule vérifiée sera la dernière, qui est vide.
    J'opterais pour quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.WorksheetFunction.CountA(Rows(41)) = 0 Then Rows(41).Hidden = True
    Qu'en est-il s'il y a des valeurs en ligne 41 et pas en 42 et/ou 43 ?
    Est-ce que tu masques seulement la/les lignes vides ou les 3 ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut
    Pour simplifier ma demande je vous mets à disposition deux fichiers.
    Le fichier "Date" me sert pour modifier la date sur plusieurs fichiers d'un coup, je l'ouvre en premier et je mets la date souhaitée.
    Le fichier "Base identité" s'ouvre en deuxième, la macro se lance à l'ouverture et modifie les lignes 41 à 43 en fonction des lignes vide ou non, mais seul le feuillet actif est concerné, j'aimerais que ça fonctionne sur tous.
    Dans le futur je vais avoir bien 30 fichiers "base identité" qui vont comporter entre 1 et 6 feuillets.

    Merci de votre aide.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Sh as worksheet
    For each Sh in Activeworkbook  'boucle toutes les feuilles
       'Faire l'action souhaitée
    Next
    autre méthode si on ne veut pas toucher TOUTES les feuilles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim I as long, Tablo as Variant
    Tablo = Array("Feuil1", "Feuil2", "Feuil3")
    For i = 0 to UBound(Tablo)
       'Faire l'action souhaitée
    Next

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut
    Je n'arrive pas à faire fonctionner ce code, Erreur 438 Propriété ou méthode non gérée par cet objet, avec For Each Sh In ActiveWorkbook en jaune
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Workbook_Open()
    Dim Sh As Worksheet
    For Each Sh In ActiveWorkbook
    Range("A41:A43").Select
    For Each o In Selection
    If o.Value = "" Then
    o.EntireRow.Hidden = True
    Else
    o.EntireRow.Hidden = False
    End If
    Next
    Next
    End Sub
    J'aurais toujours besoin que ce soit sur toutes les feuilles car c'est pour adapter les lignes en fonction du nombre de jour dans le mois.
    Merci quand même pour le deuxième code.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Désolé, j'ai oublié le Worksheets...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For Each Sh In ActiveWorkbook.Worksheets
       Sh.Range("A41:A43").Select

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/12/2012, 21h04
  2. Macro pour grouper des lignes sur une plage qui peut varier
    Par RichRich59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/01/2011, 13h04
  3. Macro pour grouper des lignes sur une plage qui peut varier
    Par girardinho dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/07/2010, 09h43
  4. Masquer des lignes vides
    Par gg9595 dans le forum Webi
    Réponses: 11
    Dernier message: 28/06/2007, 12h03
  5. [Formule]Macro pour masquer des formules dans une cellule
    Par Hellx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2007, 08h21

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