Signaler

Code masquant lignes et colonnes (excel 2003) [Résolu]

Posez votre question jean300 48Messages postés jeudi 11 août 2016Date d'inscription 21 septembre 2017 Dernière intervention - Dernière réponse le 7 sept. 2017 à 19:16 par jean300
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.


Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
Bonjour via,
Content de te revoir, me suivrais-tu à la trace ?
En te remerciant.
Voici le fichier
http://www.cjoint.com/c/GIefU3EF3vU
Donnez votre avis
Utile
+0
plus moins
tu me demande :
Quelle valeur doit déclencher le code ?
Un chiffre et seulement un chiffre.
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
Bonjour via,
Excuse-moi c'est la feuille Choix

l'exemple de ce que je souhaite :

http://www.cjoint.com/c/GIekQ2xbSZU
Donnez votre avis
Utile
+0
plus moins
Re,

Ton fichier en retour :
http://www.cjoint.com/c/GIeqCDnBya1

Cdlmnt
Via
Donnez votre avis
Utile
+0
plus moins
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 :

http://www.cjoint.com/c/GIfhvj4nkgU
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
Bonsoir via55,
Désolé mais le code ne fonctionne pas, il met seulement la feuille en surbrillance à partir de A2
Cordialement.
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !