XL 2016 Afficher et masquer les lignes en fonction des critères

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

YANNISE

XLDnaute Junior
Bonjour le forum,

Je sollicite votre aide pour l’amélioration d’une macro qu’est me permet d’afficher les lignes des formulaires masqués par défaut (si les cellules sont vides ou « OK ») selon un critère

A la saisi de critère « KO » sur l’une des cellules il s’affiche le formulaire relatif à la lettre, exemple ci-après :

1685979901796.png


J’ai fait une macro mais avec le style débiteur 😄, mon besoin est d’afficher chaque formulaire s’y correspond à KO automatiquement a la saisie.

je vous remercie d'avance.
 
Solution
Ceci fait ce que vous demandez :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, i
Application.EnableEvents = False
If Target.Address = "$C$26" Then
    Importer_New
ElseIf Not Intersect(Target, [D26:G26]) Is Nothing Then
    Transfert_2
End If
Application.EnableEvents = True
Application.ScreenUpdating = False
Set P = [30:37,39:46,48:55,57:64]
P.EntireRow.Hidden = True 'masque tout
For i = 1 To 4
    If LCase(Cells(26, i + 3)) = "ko" Then P.Areas(i).EntireRow.Hidden = False
Next
End Sub
Mais à mon avis vos 2 macros sont à revoir.
Bonsoir Oneida,

merci pour la réponse, c'est bien ça seulement il manque

si toutes les cellules sont vides ou OK alors toutes les plages seront masquées

si j'ai deux cellules qui sont KO par exemple Q et D alors les il doit s'afficher deux plages
1685995465608.png


Merci bcp
 
Bonjour YANNISE, Oneida,

Vous ne dites pas ce que vous voulez faire avec la macro Worksheet_Change.

Si vous voulez juste la modifier utilisez :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, i
Set P = [30:37,39:46,48:55,57:64]
Application.ScreenUpdating = False
P.EntireRow.Hidden = True 'masque tout
For i = 1 To 4
    If LCase(Cells(26, i + 3)) = "ko" Then P.Areas(i).EntireRow.Hidden = False
Next
End Sub
A+
 

Pièces jointes

Bonjour @job75, le fil le forum

merci @job75 c'est parfait et plus dynamic, seulement pour les macros déjà impliquer sur la feuil1 dans la macro Worksheet_Change

je veux garder l'ancien code
si la valeur de la cellule C26 change alors call Importer_New
pour la macro Transfert_2 ca sera mieux de l'exécuter a chaque changement des valeurs "D26:E26:F26:G26"
pourriez-vous l'adapter avec votre code svp

l'ancien code ci-après

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$G$26" And Range("G26") <> "" Then
    Call Transfert_2
  ElseIf Target.Address = "$C$26" Then
    Importer_New
  Else
    Exit Sub
  End If
Debug.Print mymodule
End Sub

merci bcp
 
Dernière édition:
Ceci fait ce que vous demandez :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, i
Application.EnableEvents = False
If Target.Address = "$C$26" Then
    Importer_New
ElseIf Not Intersect(Target, [D26:G26]) Is Nothing Then
    Transfert_2
End If
Application.EnableEvents = True
Application.ScreenUpdating = False
Set P = [30:37,39:46,48:55,57:64]
P.EntireRow.Hidden = True 'masque tout
For i = 1 To 4
    If LCase(Cells(26, i + 3)) = "ko" Then P.Areas(i).EntireRow.Hidden = False
Next
End Sub
Mais à mon avis vos 2 macros sont à revoir.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
451
Retour