Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

VBA Excel - Masquer ligne vide de x cellule à x cellule




  1. #1
    Keffi17

    VBA Excel - Masquer ligne vide de x cellule à x cellule

    Bonjour,

    Ma situation est la suivante :
    J'ai une liste avec une planifications de travaux en fonction des dates.
    J'ai fais un bouton pour pouvoir imprimer les deux prochaines semaine (en fonction de la date de la semaine) et j'ai masquer les colonnes qui ne m'intéresse pas. Mon problème est lorsque j'appui sur le bouton j'ai tous les travaux qui s'affiche même s'il ne sont pas prévu pour les deux semaines qui suivent. Du coup je me retrouve avec des lignes blanche qui ne servent à "rien".

    Je voudrais savoir si c'était possible de masquer les lignes avec les cellules vide en fonction de la date (c'est à dire les deux semaine qui suivent) ou avec un autre moyen plus simple.

    Merci d'avance.

    -----


  2. Publicité
  3. #2
    matthieu2

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    Bonjour Keffi17,

    Oui c'est tout à fait possible.

    Voici le code que j'utilise:
    Code:
        Dim i as Long
        'i est l'indice de la ligne et dans mon classeur la première ligne à checker est la 7
        i = 7
        'Je checke jusque la ligne 446
        Do While i < 446
            'Si la cellule est vide...
             If Worksheets("NOM DE TON ONGLET").Cells(i, 8).Value = "" Then
                '... Alors la ligne entière est cachée
                Worksheets("NOM DE TON ONGLET").Cells(i, 8).EntireRow.Hidden = True
            End If
        'J'incrémente mon indice de ligne pour checker la suivante
        i = i + 1
        Loop
    Programme à adapter si tu veux comparer sur les dates.

    @+

  4. #3
    Keffi17

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    Merci Matthieu pour la réponse rapide.
    Le code fonctionne, mais pas dans mon contexte. Car enfaite je "colorie" la cellule d'une couleur donc par conséquence elle est considérée vide. Dois-je mettre des caractères dans les cellules ou peut-on tester si une cellule à une couleur ou est blanche ?


  5. #4
    matthieu2

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    Bonjour,

    Les deux solutions sont possibles.

    Dans ton premier message tu stipules que tu souhaites voir apparaitre les interventions à 2 semaines. Tu peux passer par une UserForm où l'utilisateur rentre la semaine X et le programme te retourne toutes les interventions de Sem X à Sem X+2 (Pour ça il faut que chaque intervention possède une date et tu check la date dans ton programme (on peux adapter selon le format de la date)).

    Sinon tu peux passer par la vérification de couleur. En effet, si les interventions dans les 2 semaines ont une couleur particulière tu peux tester avec les codes RGB(x,x,x).

    Le plus simple serait de copier coller ton code dans un message afin qu'on adapte à ton cas.

    ++

  6. #5
    Keffi17

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    J'ai fais une vérification par date et ensuite on peut "enlever"/masquer des lignes avant de lancer l'impression. Merci pour ton aide.

    Si j'ose (rien à voir avec ce sujet), Je sais pas si tu peux m'indiquer si c'est possible d'adapter un serveur local (server apache) pour l'utiliser en entreprise pour une petite application web ?
    Il suffit d'adapter les chemins et les ports non ?

  7. A voir en vidéo sur Futura
  8. #6
    matthieu2

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    Salut,

    Alors là, je ne sais pas du tout

    Peut être que quelqu'un d'autre pourra te renseigner

    A bientôt

  9. #7
    Keffi17

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    Salut,

    Il me faut le bout de code car ça va pas car ce n'est pas assez automatisé. Mais je pense que je dois juste changer la variable c (colonne) en quelque chose du genre :

    C = N° semaine + 10 (colonne)
    et ensuite masquer les semaines antérieur et a partir de la semaine 11 mais je vois pas comment je peux le faire..

    Bout de code :


    Dim l As Integer
    Dim c As Integer
    l = 1
    c = 21

    For Each cell In Range("A1:A" & fin)
    Do Until l = fin + 1
    If Cells(l, 4).Text = "En fonction" Then
    Set pos = Sheets("Plannif").Cells(l, c)
    If pos.Interior.Color = RGB(255, 255, 0) Then
    pos.EntireRow.Hidden = False
    c = 21
    l = l + 1

    Else
    If c = 15 Then
    c = 21
    l = l + 1

    Else
    c = c + 1

    End If
    End If
    GoTo suite
    End If

    Else
    suite:
    l = l + 1
    End If
    Loop

  10. Publicité
  11. #8
    matthieu2

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    Bonjour Keffi,

    Peux tu poster une image de ta feuille excel en question afin de voir la structure de ton fichier ?

  12. #9
    Keffi17

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    C'était tout simple en faite, suffisait de chercher un peu .

    C = 21 (21 est la première colonne du calendrier)
    Mon prédécesseur à mis aussi l'année 2013 et 2014 (je ne sais pas pourquoi) mais elles étaient masquées.

    Du coup j'ai compter les colonnes jusqu’à la première semaine de 2015 et ajouter 21.

    Ce qui donne un truc du genre :

    Déclarer la variable numsemaine
    numsemaine = DatePart("ww", Date, vbMonday, vbFirstFullWeek)
    Masquer les colonnes de 21 à (76 + N°semaine)
    C = 76 + numsemaine
    l= l+1

    Pis voila tout est automatisé et ça marche bien. (je sais pas si tu as compris, je suis aller vite).

    Merci encore une fois pour m'avoir aider.

  13. #10
    Keffi17

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    Salut,

    Pourrais-tu m'aider à nouveau stp. J'essaye d'automatiser encore un peu le code mais il y a une erreur dans le RANGE a mon avis.
    je pense que le code est pas difficile à comprendre mais si tu as un doute n'hésite pas à me demander.

    Private Sub masquer_lignes_Click()
    numSemaine = DatePart("ww", Date, vbMonday, vbFirstFullWeek)
    For i = 21 To 1000
    If Range(Cells(i, 20 + numSemaine), Cells(i, 20 + numSemaine + 10)).Interior.ColorIndex <> 4 Then
    Range(Cells(i)).EntireRow.Hidd en = False
    End If
    Next

  14. #11
    matthieu2

    Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    Bonjour,

    En effet, je pense que ta ligne de code en gras n'est pas bonne:
    Code:
    Range(Cells(i)).EntireRow.Hidden = False
    1-Dans ton Range tu définis 1 cellule or un range c'est au moins deux cellules sinon ça reste une cellule...

    2-Dans ton Cells tu définis juste la ligne sans définir la colonne (je suis pas sûr que ça fonctionne comme ça)

    Si quelqu'un d'autre à un avis histoire de confirmer (ou pas)...

  15. #12
    Keffi17

    Red face Re : VBA Excel - Masquer ligne vide de x cellule à x cellule

    Salut,

    Finalement c'était pas la ligne en gras le problème. J'avais "oublié" d'enlever la protection.

    Car je suppose qu'il prend la ligne de la cellule donc pas besoin de mettre la colonne car au final cette info nous sers pas à grand chose.

    Par contre il y a quand même un truc qui gênent (1 ligne sur 300).

    Capture.PNG

    Si tu as une idée, je suis preneur car la je sais vraiment pas d'ou ça vient.

Discussions similaires

  1. Enlever texte cellule Excel
    Par Atlas23 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 14/04/2015, 17h53
  2. QR - Excel : forcer le renvoi à la ligne dans une cellule
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 0
    Dernier message: 29/06/2010, 23h15
  3. Réponses: 10
    Dernier message: 11/10/2009, 11h12
  4. référence cellule Excel
    Par philou21 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 22/09/2009, 06h42
  5. formule excel - couleur cellule
    Par hhazarell dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 07/08/2009, 20h26