Code masquant lignes et colonnes (excel 2003)

Résolu
jean300 Messages postés 382 Statut Membre -  
jean300 Messages postés 382 Statut Membre -
Bonjour,
Je recherche un code pour lancer à partir d'un bouton placé sur la feuille "Accueil"; si valeur (un chiffre) se trouve dans une des colonnes S, T ou U application du code (filtrage de ces lignes) car le filtre ne permet qu'une seule colonne et masquer les lignes "vides" ainsi que les colonnes C:E,H,N:V suivi de l'impression de la feuille et rendre la feuille "Accueil" à son état d'origine (toutes les lignes et colonnes visibles). Un Msgbox en début de code si aucune valeur ne se trouve dans ces colonnes indiquant "Aucun État ne peut être imprimé".
En vous remerciant.
ps : je ne connais pas grand chose en Vba.

13 réponses

  1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour jean,

    1) Quelle valeur doit déclencher le code ?

    2) Poste un exemple de ton fichier sur cjoint.com, fais créer un lien que tu copies et reviens coller ici; qu'on puisse avoir une base de travail de départ

    Cdlmnt
    Via
    0
  2. jean300 Messages postés 382 Statut Membre 14
     
    tu me demande :
    Quelle valeur doit déclencher le code ?
    Un chiffre et seulement un chiffre.
    0
  3. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Re,

    Tu parlais d'une valeur dans les colonnes de la feuille Accueil mais il n'y a pas de feuille Accueil dans le fichier envoyé !!
    Précises mieux que ce que tu veux avec un exemple

    Cdlmnt
    Via
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour via,
    Non, ce n'est pas ce que je souhaite.
    J'ai, semble-t-il réussi à modifier le code qui se trouve dans le module Heberger, mais il est un peu lent, si tu peux l'accélérer.
    En te remerciant et te souhaitant une excellente journée.
    Je met le fichier :

    https://www.cjoint.com/c/GIfhvj4nkgU
    0
  6. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    J'ai vu ton code complétement différent mais qui ne fonctionne pas il ne masque aucune ligne !
    Par contre n'ayant pas l'habitude des instructions que tu as utilisé je ne sais pas le corriger
    Apparemment tu voudrais masquer toutes les lignes ou il n'y a aucune valeur dans les colonnes hebergement; c'est bien ce que faisait mon code (et rapidement) mais tu me dis que ce n'est pas ce que tu souhaites ! Sois plus explicite qu'est ce qui ne va pas dans mon code ?

    Cdlmnt
    Via
    0
  7. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour via,
    Tu écris :
    J'ai vu ton code complétement différent mais qui ne fonctionne pas il ne masque aucune ligne !
    Curieux car chez il fonctionne.

    Tu écris :
    Apparemment tu voudrais masquer toutes les lignes ou il n'y a aucune valeur dans les colonnes hébergement; c'est bien ce que faisait mon code (et rapidement) mais tu me dis que ce n'est pas ce que tu souhaites ! Sois plus explicite qu'est ce qui ne va pas dans mon code ?
    Je n'ai rien contre ton code si ce n'est qu'il a les même problèmes de lenteur
    la 1ère fois c'est bon mais si je re-clic de nouveau c'est beaucoup plus long et je n'arrive pas à comprendre.

    En te remerciant de tout le temps que tu me consacre.
    0
  8. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour jean

    Je n'ai plus d'explications que toi quant à lenteur qui s'accroit avec le nombre de fois, je n'ai rien remarqué de tel et je ne vois pas pourquoi en partant de la même base et en appliquant la même macro plusieurs fois certaines demanderaient plus de temps !

    Une seule idée d'amélioration me vient : s'il y a plus de lignes à masquer qu'à laisser visibles il serait plus judicieux de faire masquer toutes les lignes avec une seule instruction puis avec une boucle sur les lignes ne démasquer que celles nécessaires, tu y gagneras peut être en temps de traitement.
    Autre piste au lieu de sonder les 3 colonnes hébergements, faire une 4eme colonne qui avec formule SI comporterait 1 si une des 3 colonnes précédentes comporte une valeur et 0 sinon, puis ensuite faire appliquer un filtre du tableau sur cette colonne

    Cdlmnt
    Via
    0
  9. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour via55,
    Tu me dis :
    Une seule idée d'amélioration me vient : s'il y a plus de lignes à masquer qu'à laisser visibles il serait plus judicieux de faire masquer toutes les lignes avec une seule instruction puis avec une boucle sur les lignes ne démasquer que celles nécessaires, tu y gagneras peut être en temps de traitement.

    Aurais-tu un code adapté à cela que je pourrais ajouter dans le code ?
    Masquer les lignes de la feuille Base si rien n'est écrit dans les colonnes S - T ou U et les ré-afficher en fin de traitement.
    Environ 300 lignes.
    0
  10. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    'cache toutes les lignes
    Rows("2:" & Ligne).Select
        Selection.EntireRow.Hidden = True
    For n = 2 To Ligne
    ' demasque les lignes hebergement non vides
    If Range("S" & n) + Range("T" & n) <> Range("U" & n) > 0 Then
    Rows(n & ":" & n).Select
     Selection.EntireRow.Hidden = False
     Next
     
     'démasque toutes les lignes
    Rows("2:" & Ligne).Select
        Selection.EntireRow.Hidden = False
    


    Tu peux t'inspirer de ceci

    Cdlmnt
    Via
    0
  11. jean300 Messages postés 382 Statut Membre 14
     
    Bonsoir via55,
    Désolé mais le code ne fonctionne pas, il met seulement la feuille en surbrillance à partir de A2
    Cordialement.
    0