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 :

[Aide]Comment trouver une ligne entièrement vide


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut [Aide]Comment trouver une ligne entièrement vide
    Bonjour

    En ce lendemain de jour ferié, me re-voici au travail sur mon projet VBA. Le problème du jour s'intitule "comment trouver une ligne entièrement vide"

    j'explique : j'ai plusieurs tableaux en colonne, ce sont de vrais gruyères. Certaines cellules, au lieu de comporter un 0 ne comportent rien et sont donc vides. Je n'y peux rien, les cellules sont remplies par un logiciel tiers.

    Pour déterminer la fin d'un tableau, je ne peux donc pas chercher la prochaine cellule vide d'une colonne, puisque parfois la cellule A1 sera vide, B1 et C1 remplies, puis de nouveau D1 vide.

    Donc ma question, après plusieurs heures de recherches sur le net, et d'essais infructueux, est : comment déterminer la prochaine ligne totalement vide ?

    J'attend vos réponses avec impatience

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu peux jeter un oeil ici, tu as un grand nombre d'exemple et les explications avec.
    Regarde aussi CurrentRegion dans l'aide.
    Une précision utile : La première ligne vide est la dernière ligne renseignée + 1

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Merci, j'étais déjà tombé sur cette page durant mes recherches... Mais je n'ai pas réussi à appliquer une seule de ces formules à mon cas.



    Voici à quoi ressemblent mes tableaux. Je dois tester si les valeurs de LHV et Sg sont vides. Si elles le sont, le tableau ne doit pas apparaître sur la feuille (pour l'instant les 3 tableaux sont remplis. Mais selon les cas, il peut n'y avoir qu'un ou deux gaz utilisés et le / les autres ne devraient pas apparaître).

    Ma solution était, une fois qu'on connait le statut (vide ou rempli) de ces deux cellules, de "masquer" le tableau correspondant, d'où le besoin de connaître la prochaine ligne entièrement vide, soit la fin du tableau. Le tout, encapsulé par une boucle qui permet de traiter chaque tableau un par un (celle ci fonctionne). C'est un peu "bricolé".

    Donc si tu vois une meilleure solution que celle que j'ai appliqué, je t'en prie

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ok. avant de te proposer quelque chose, une question : Quand tes tableaux son vides, est-ce que ta colonne A est toujours renseignée.
    Si oui, un début de solution consiste à vérifier que ta ligne est vide à partir de la colonne B.
    Une autre question : Tes tableaux ont-ils toujours le même nombre de ligne ?
    Si oui, ça va être facile.

    je suppose que ta colonne A est toujours renseignée. Auquel cas, pour savoir si la ligne est vide, tu testes la dernière colonne renseignée de la ligne et si c'est 1, ton tableau est vide. Pour ça tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DerniereColonne = Range("IV" & NoLigne).End(xlToLeft).Column
    Si DerniereColonne = 1, tu n'as que le libellé de la ligne.
    Pour ce qui est des tableaux vides, le mieux c'est de masquer les lignes. Mais si tu as un pb, tu dis
    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    En faite, lorsque les valeurs de LHV et Sg sont vides, les libellés restent effectivement affichés.

    Mais comme tu peux le constater, il y a toujours au moins une cellule vide par colonne, qui ne correspond pas à la fin du tableau. Exemple pour le 1er tableau : B2 (si LHV est vide), A6, D7 E7 et F7. Du coup, pas évident de tester par colonne seule !

    [EDIT]

    Après avoir posé la question à Monsieur le Chef, les tableaux devraient tous avoir le même nombre de lignes... Je peux donc, pour masquer un tableau, sélectionner la plage de cellules en comptant les lignes avant et après... Ca me parraît un peu léger, mais ca peut marcher non ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Avant de te proposer ce qui me vient à l'esprit, c'est bien tout le tableau que tu testes ? Si une ligne est renseignée dans un tableau mais pas les autres lignes du même tableau, tu gardes bien tout le tableau ?
    Comme c'est ce qui me paraît logique, je te propose quelque chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim DerniereLigne as long, NoLigne as long, LigneVide as byte, i as long
        DerniereLigne = range("A65535").end(xlUp).row
        For i = 1 to DerniereLigne step 10 'Toutes les 10 lignes tu as un tableau
              For NoLigne = i to i + 7 step 1 'On vérifie toutes les lignes...
                    '... mais on ne tient pas compte de la cellule vide de la colonne A
                    if Range("IV" & NoLigne).End(xlToLeft).Column = 1 and Range("A" & NoLigne).value <> "" then
                         LigneVide = LigneVide + 1 'on compte le nombre de lignes vides
                    endif
              Next NoLigne
              'Si le nombre de lignes vides = 7 (8 moins la cellule vide du tableau) on masque
              If LigneVide = 7 then_
                     range("A" & i & ":A" & NoLigne + 7).entireRow.hidden = True
              LigneVide =0
        Next i ' et on passe au tableau suivant
    Tu dis
    A+

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

Discussions similaires

  1. Aide comment Masquer une ligne automatiquement
    Par patatelea dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/01/2010, 21h32
  2. trouver une ligne totalement vide , gestion d'erreur
    Par n'anneso dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2008, 21h32
  3. Réponses: 1
    Dernier message: 21/11/2007, 15h23
  4. [VBA-E]Comment mettre une ligne entière d'un fichier excel en gras ?
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/05/2006, 08h23
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

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