Affichage des cellules macro

Fermé
momo - Modifié par momo le 6/09/2016 à 07:35
 momo - 8 sept. 2016 à 19:03
Bonjour,

Je viens vers vous car j’aimerais ajuster la macro qui permet l'affichage des ligne en fonction de certaine valeur, le problème c'est qu'il se perd et décale l'affichage des cellules.



Private Sub Worksheet_Change(ByVal T As Range)
'Cette partie permet l'affichage du tableau des arrêts en fonction de la liste déroulante
Application.ScreenUpdating = False
If T.Address = "$B$37" Then
Select Case T.Value
Case Is = "AB"
Rows("39:71").Hidden = False
Rows("72:138").Hidden = True
Case Is = "CD"
Rows("39:71").Hidden = True
Rows("72:104").Hidden = False
Rows("105:138").Hidden = True
Case Is = "EF"
Rows("39:104").Hidden = True
Rows("105:138").Hidden = False
End Select
End If
'Cette partie permet l'affichage des lignes si cellule supérieur à 0 AB
Rows("41:44").Hidden = [E25].Value <= 0
Rows("63:70").Hidden = [E25].Value <= 0
Rows("45:50").Hidden = [E26].Value <= 0
Rows("27").Hidden = [E26].Value <= 0
Rows("51:56").Hidden = [E27].Value <= 0
Rows("28").Hidden = [E27].Value <= 0
Rows("57:62").Hidden = [E28].Value <= 0
'Cette partie permet l'affichage des lignes si cellule supérieur à 0 CD
Rows("74:77").Hidden = [E29].Value <= 0
Rows("96:103").Hidden = [E29].Value <= 0
Rows("78:83").Hidden = [E30].Value <= 0
Rows("31").Hidden = [E30].Value <= 0
Rows("84:89").Hidden = [E31].Value <= 0
Rows("32").Hidden = [E31].Value <= 0
Rows("90:95").Hidden = [E32].Value <= 0
End Sub


Merci d'avance

Bien cordialement

A voir également:

12 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
6 sept. 2016 à 08:30
Bonjour,

Ajoute Rows.Hidden = False en début de traitement
If T.Address = "$B$37" Then
Rows.Hidden = False
Select Case T.Value
...


A+
0
Bonjour,

Merci pour votre retour,

Le tableau se perd encore, j'ai rajouter la ligne mais cela ne change rien.



Private Sub Worksheet_Change(ByVal T As Range)
'Cette partie permet l'affichage du tableau des arrêts en fonction de la liste déroulante
Application.ScreenUpdating = False
If T.Address = "$B$37" Then
Rows.Hidden = False
Select Case T.Value
Case Is = "AB"
Rows("39:71").Hidden = False
Rows("72:138").Hidden = True
Case Is = "CD"
Rows("39:71").Hidden = True
Rows("72:104").Hidden = False
Rows("105:138").Hidden = True
Case Is = "EF"
Rows("39:104").Hidden = True
Rows("105:138").Hidden = False
End Select
End If
'Cette partie permet l'affichage des lignes si cellule supérieur à 0 AB
Rows("41:44").Hidden = [E25].Value <= 0
Rows("63:70").Hidden = [E25].Value <= 0
Rows("45:50").Hidden = [E26].Value <= 0
Rows("27").Hidden = [E26].Value <= 0
Rows("51:56").Hidden = [E27].Value <= 0
Rows("28").Hidden = [E27].Value <= 0
Rows("57:62").Hidden = [E28].Value <= 0
'Cette partie permet l'affichage des lignes si cellule supérieur à 0 CD
Rows("74:77").Hidden = [E29].Value <= 0
Rows("96:103").Hidden = [E29].Value <= 0
Rows("78:83").Hidden = [E30].Value <= 0
Rows("31").Hidden = [E30].Value <= 0
Rows("84:89").Hidden = [E31].Value <= 0
Rows("32").Hidden = [E31].Value <= 0
Rows("90:95").Hidden = [E32].Value <= 0
End Sub


Merci d'avance pour votre aide

Cordialement
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
6 sept. 2016 à 09:20
La ligne de code que tu as ajoutée permet d'avoir un état initial avec toutes les lignes affichées.

Voici ce que je comprends.
Ton programme est séparé en 2 parties, la première qui effectue un masquage/Affichage de lignes lorsque B37 est modifiée
If T.Address = "$B$37" Then
...
End If

et la seconde qui effectue un masquage/Affichage de lignes lorsque une cellule quelconque de la feuille est modifiée, le traitement s'effectuant alors en fonction des valeurs de la plage E25:E32
Rows("41:44").Hidden = [E25].Value <= 0
...
Rows("90:95").Hidden = [E32].Value <= 0


Tu dois donc chercher les incohérences dans la (ou les) partie(s) concernée(s).
Ne connaissant pas le résultat attendu, j'aurais du mal à t'en dire d'avantage.

A+
0
Bonjour,

Merci pour votre retour,

Cela est exacte, l'objectif c'est que en B37 il y a un menu déroulant pour sélectionner le tableau en fonction du besoin AB,CD,EF.

Le tableau commence à la ligne 39 pour finir en ligne 138 chaque tableau est égale à 1/3

Ensuite se qui est important c'est que si la cellule D28 est = 0 il doit masqué dans le tableau les lignes 57 à 62 et pareil pour les suivants pour évité d'avoir un tableau trop important alors que les parties que je souhaite caché son inutile.

Merci d'avance

Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
6 sept. 2016 à 13:34
Si tu veux que j'aille plus loin, il faut joindre un fichier.
Pour cela, tu peux utiliser
https://www.cjoint.com/

A+
0
Bonsoir,

Je vous joint un fichier demain matin.

Merci pour votre aide et j'espère à demain

Cordialement
0
Bonjour,

Je joint un tableau excel j'ai désactiver une partie du macro.

http://www.cjoint.com/c/FIhfY1AaJoM

Merci d'avance

Cordialement
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
7 sept. 2016 à 10:15
Bonjour,

Je comprends bien la première partie avec l'affichage des tableaux selon la sélection en B37.
Cette partie semble fonctionner correctement.
Par contre, ne connaissant pas la finalité de la seconde partie, j'ai un peu plus de mal à comprendre.

J'ai modifié le code.
Essaie de l'adapter en fonction de tes besoins.
https://www.cjoint.com/c/FIhinP0Wxaz

A+
0
Bonjour,

Merci pour votre retour,

Je vais tester est je reviens vers vous.

1000 merci

Bien cordialement
0
Bonjour,

Cela fonctionne pratiquement comme je le souhaite, y a t’il possibilité encore que si

D23 = 0 alors D24 caché
D22 = 0 alors D23 caché
D21 = 0 alors D22 caché

D27 = 0 alors D28 caché
D26 = 0 alors D27 caché
D25 = 0 alors D26 caché

D31 = 0 alors D32 caché
D30 = 0 alors D31 caché
D29 = 0 alors D30 caché

De plus si je change une valeur que cela soit instantanément changer.

Exemple si D30 = 50 il affiche de suite la ligne 31 et les lignes 84 à 89

Cela serait alors parfait.

Merci d'avance
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
7 sept. 2016 à 16:32
Ce que tu indiques n'est pas cohérent.

D30 = 0 alors D31 caché

Tu ne peux pas masquer une seule cellule.
Le masquage/affichage doit être effectué sur une ligne (ou une colonne) entière.

De plus si je change une valeur que cela soit instantanément changé. Exemple si D30 = 50 il affiche de suite la ligne 31 et les lignes 84 à 89
C'est ce que fait le code avec la plage "E21:E32". Tu peux prendre exemple sur cette partie du programme.
Si tu as besoin d'éclaircissements sur le code, n'hésites pas à demander.

A+
0
Bonjour,

C'est exactement se que je recherche, mais il fraudais aussi que cela soit instantané, pour l'instant il faut re sélectionner dans le menu déroulant B37 pour que la modification soit prie en compte.

Merci d'avance

Cordialement
0