Excel VBA - cacher des lignes
Résolu
bobie
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Salut à tous,
dans une feuille j'ai nommé des plages (en fait des lignes). Par exemple:
NOM1 = ligne entière de 3 à 23
j'aimerais sous VBA que si la cellule F16 est égale à une erreur (#DIV!0) alors on cache NOM1
Comment je peux faire? merci
dans une feuille j'ai nommé des plages (en fait des lignes). Par exemple:
NOM1 = ligne entière de 3 à 23
j'aimerais sous VBA que si la cellule F16 est égale à une erreur (#DIV!0) alors on cache NOM1
Comment je peux faire? merci
Configuration: Windows XP Safari 532.0
5 réponses
-
Bonjour,
à mettre dans la feuille :Private Sub Worksheet_SelectionChange(ByVal Target As Range) If IsError([F16]) Then Range("plage1").EntireRow.Hidden = True Else Range("plage1").EntireRow.Hidden = False End If End Sub
Sélectionner une autre cellule rafraichira
eric-
meric eric
et si j'ai plusieur plage?
je peux demultiplier ce code cidessous?
If IsError([F16]) Then
Range("plage1").EntireRow.Hidden = True
Else
Range("plage1").EntireRow.Hidden = False
merci- EN fait j'ai une derniere question:
voila j'ai fais mon code sur la base du code d'Eriiiic. Mais dès que je selectionne une cellule dans ma feuille alors la macro se lance (c'est normal).
Par contre cela bloque mon pc pendant une seconde. En fait je n'ai pas besoin d'une actualisation a chaque selection de cellule. Je n'en ai besoin q'une seule fois, à la fin de mon autre macro Sub Consolidation_OWILOU().
Comment puis-je faire?
merci
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If IsError([F16]) Then
Range("AA").EntireRow.Hidden = True
Else
Range("AA").EntireRow.Hidden = False
End If
If IsError([F33]) Then
Range("AIUS").EntireRow.Hidden = True
Else
Range("AIUS").EntireRow.Hidden = False
End If
If IsError([F50]) Then
Range("ALNIA").EntireRow.Hidden = True
Else
Range("ALNIA").EntireRow.Hidden = False
End If
If IsError([F67]) Then
Range("DS").EntireRow.Hidden = True
Else
Range("DS").EntireRow.Hidden = False
End If
If IsError([F84]) Then
Range("DNA").EntireRow.Hidden = True
Else
Range("DNA").EntireRow.Hidden = False
End If
If IsError([F101]) Then
Range("CTL").EntireRow.Hidden = True
Else
Range("CTL").EntireRow.Hidden = False
End If
If IsError([F118]) Then
Range("NAV").EntireRow.Hidden = True
Else
Range("NAV").EntireRow.Hidden = False
End If
If IsError([F135]) Then
Range("REQUENTIS").EntireRow.Hidden = True
Else
Range("REQUENTIS").EntireRow.Hidden = False
End If
If IsError([F152]) Then
Range("ONEYWELL").EntireRow.Hidden = True
Else
Range("ONEYWELL").EntireRow.Hidden = False
End If
If IsError([F169]) Then
Range("NDRA").EntireRow.Hidden = True
Else
Range("NDRA").EntireRow.Hidden = False
End If
If IsError([F186]) Then
Range("ATMIG").EntireRow.Hidden = True
Else
Range("ATMIG").EntireRow.Hidden = False
End If
If IsError([F203]) Then
Range("ATS").EntireRow.Hidden = True
Else
Range("ATS").EntireRow.Hidden = False
End If
If IsError([F220]) Then
Range("ORACON").EntireRow.Hidden = True
Else
Range("ORACON").EntireRow.Hidden = False
End If
If IsError([F237]) Then
Range("EAC").EntireRow.Hidden = True
Else
Range("EAC").EntireRow.Hidden = False
End If
If IsError([F254]) Then
Range("ELEx").EntireRow.Hidden = True
Else
Range("ELEX").EntireRow.Hidden = False
End If
If IsError([F271]) Then
Range("TLES").EntireRow.Hidden = True
Else
Range("TLES").EntireRow.Hidden = False
End If
Application.ScreenUpdating = True
End Sub
-
-
Bonjour, tu pourrais me faire un screen ( impr écran syst ) pour que je voie un peux ce que tu voudrais faire ? merci
-
et bien tu l'enleves de Worksheet_SelectionChange et tu le mets dans un sub masquer() (par exemple) que tu appelles à la fin de ta macro.
Et si tu veux l'accelérer tu mémorises l'état de tes plages et tu ne fais l'action que si c'est nécessaire. (à l'ouverture toutes les démasquer pour être sûr de leur état)
eric -
Eriiic
losque je veux appeler ma macro masquer() (se trouve dans sheet2) à la fin de ma macro Sub Consolidation_OWILOU() (se trouve dans module1), j'ai l'erreur suivante: Sub or Function not defined
quel est le probleme?
merci -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
met masquer() dans le module et précise sur quelle feuille tu veux travailler.
dim sh1 as worksheet
sh1=worksheets("Sheet2")
If IsError(sh1.[F16]) Then
sh1.Range("AA").EntireRow.Hidden = True
Else
sh1.Range("AA").EntireRow.Hidden = False
End If
....
(non testé...)
eric