Masquer/afficher des cellules sur 3 feuilles en même temps

PatrickPrev

XLDnaute Nouveau
Bonjour
Voilà mon petit problème
Je dois masquer ou afficher des lignes sur 3 feuilles différentes
Je m'explique : J'ai une feuille "Commande" sur la-quelle je masque ou affiche les lignes selon la valeur d'une cellule
Ex ;
Si telle valeur dans "$A$17" (lignes 23 à 24 masquer , lignes 19 à 22 afficher)
Si telle valeur dans "$A$17" (lignes 25 à 28 masquer , lignes 19 à 24 afficher)
Si telle valeur dans "$A$17" (lignes 19 à 20 et lignes 23 à 28 masquer , lignes 21 à 22 afficher)
Si telle valeur dans "$A$17" (lignes 19 à 20 et lignes 23 à 28 masquer , lignes 21 à 22 afficher)
Si telle valeur dans "$A$17" (lignes 19 à 22 et lignes 25 à 28 masquer , lignes 23 à 24 afficher)
Si telle valeur dans "$A$17" (lignes 19 à 24 et lignes 27 à 28 masquer , lignes 25 à 26 afficher)
Si telle valeur dans "$A$17" (lignes 19 à 26 masquer, lignes 27 à 28 afficher)
Pour çà pas de problème vous m'avez déjà répondu et je vous en remercie
Je souhaiterai : quand je travaille sur la feuilles et rentre une valeur dans"S17 de la deuille "Commande" les mêmes N° de lignes se masquent ou s'affichent sur les feuilles "Confirmation_U" et "Confirmation_C"

Merci de votre aide
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Masquer/afficher des cellules sur 3 feuilles en même temps

Salut PatrickPrev et le forum
Il suffit de répéter la commande avec le nom de la feuille.
si tu as
Code:
Range("21:26").hidden = true
pour afficher les lignes 21 à 26 de la feuille commande, il suffit de rajouter la même commande pour chaque feuille concernée :
Code:
Range("21:26").hidden = true
Sheets("Confirmation_U").Range("21:26").hidden = true
Sheets("Confirmation_C").Range("21:26").hidden = true
et ce pour toutes les lignes de code concernées.
A+
 

PatrickPrev

XLDnaute Nouveau
Re : Masquer/afficher des cellules sur 3 feuilles en même temps

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Calculate
If Target.Address = "$A$17" Then
Rows.Hidden = False
Select Case Range("$A$17").Value
Case "COSTUME HOMME/MEN'S SUITS", "COSTUME ENFANT/BOY'S SUITS": Range("21:21,22:22,25:25,26:26,27:27,28:28").Select
Selection.EntireRow.Hidden = True
Sheets("Confirmation_Usine").Range("21:21,22:22,25:25,26:26,27:27,28:28").Hidden = True
Case "COSTUME HOMME 3 PIECES/MENS SUITS WITH VEST": Rows("25:28").Hidden = True
Case "VESTE HOMME/MEN'S JACKET": Rows("21:28").Hidden = True
Case "PANTALON HOMME/MEN'S PANTS": Range("19:19,20:20,21:21,22:22,25:25,26:26,27:27,28:28").Select
Selection.EntireRow.Hidden = True
Case "GILET HOMME/MEN'S VEST": Range("19:19,20:20,23:23,24:24,25:25,26:26,27:27,28:28").Select
Selection.EntireRow.Hidden = True
Case "MANTEAU HOMME/MEN'S OVERCOAT": Range("19:19,20:20,21:21,22:22,23:23,24:24,27:27,28:28").Select
Selection.EntireRow.Hidden = True
Case "PARKA HOMME/MEN'S PARKA": Rows("19:26").Hidden = True
End Select
End If
End Sub
j'ai fait l'essai sur une seule ligne en rouge et Excel m'envoie "erreur d'exécution '10004' Impossible de définir la propriété Hidden de la classe Range

Merci
 

Gorfael

XLDnaute Barbatruc
Re : Masquer/afficher des cellules sur 3 feuilles en même temps

Salut PatrickPrev et le forum
Utilise les balises de code (icone# en mode avancé)
Quand on dit que les Select/Selection ne servent qu'à ralentir le processus ou, en cas de module de classe à créer une erreur !
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Calculate
If Target.Address(0, 0) = "A17" Then
    Rows.Hidden = False
    Sheets("Confirmation_Usine").Rows.Hidden = False
    Select Case Range("A17")
        Case "COSTUME HOMME/MEN'S SUITS", "COSTUME ENFANT/BOY'S SUITS"
            Range("21:22,25:28").Hidden = True
            Sheets("Confirmation_Usine").Range("21:22,25:28").Hidden = True
            
        Case "COSTUME HOMME 3 PIECES/MENS SUITS WITH VEST"
            Rows("25:28").Hidden = True
            Sheets("Confirmation_Usine").Rows("25:28").Hidden = True
            
        Case "VESTE HOMME/MEN'S JACKET"
            Rows("21:28").Hidden = True
            Sheets("Confirmation_Usine").Rows("21:28").Hidden = True
            
        Case "PANTALON HOMME/MEN'S PANTS"
            Range("19:22,25:28").Hidden = True
            Sheets("Confirmation_Usine").Range("19:22,25:28").Hidden = True
            
        Case "GILET HOMME/MEN'S VEST"
            Range("19:20,23:28").Hidden = True
            Sheets("Confirmation_Usine").Range("19:20,23:28").Hidden = True
        
        Case "MANTEAU HOMME/MEN'S OVERCOAT"
            Range("19:24,27:28").Hidden = True
            Sheets("Confirmation_Usine").Range("19:24,27:28").Hidden = True
        
        Case "PARKA HOMME/MEN'S PARKA"
            Rows("19:26").Hidden = True
            Sheets("Confirmation_Usine").Rows("19:26").Hidden = True
    End Select
End If
End Sub
Je ne l'ai pas testée, c'est une macro simple.
Mettre les ":" pour économiser une ligne, pour moi, ne fait que compliquer la lecture du code. Effectivement, on a un gain en ligne de code. Mais, sur les codes conséquents, on a du mal à se situer dans les tests, les boucles, etc. Mais évidemment, je dis ça parce que j'ai souvent des erreurs...
A+
 
Dernière édition:

PatrickPrev

XLDnaute Nouveau
Re : Masquer/afficher des cellules sur 3 feuilles en même temps

Bonjour à tous
voici le code que je me suis fait
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Sh As Worksheet
If Target.Address = "$A$17" Then
For Each Sh In Worksheets(Array("Confirmation_Client", "Confirmation_Usine", Me.Name))
Sh.Rows.Hidden = False
Next

Select Case Range("$A$17").Value
Case "COSTUME HOMME/MEN'S SUITS", "COSTUME ENFANT/BOY'S SUITS"
For Each Sh In Sheets(Array("Confirmation_Client", "Confirmation_Usine", Me.Name))
Sh.Range("21:22,25:28").EntireRow.Hidden = True
Next
End Select

Select Case Range("$A$17").Value
Case "COSTUME HOMME 3 PIECES/MENS SUITS WITH VEST"
For Each Sh In Sheets(Array("Confirmation_Client", "Confirmation_Usine", Me.Name))
Sh.Range("25:28").EntireRow.Hidden = True
Next
End Select

Select Case Range("$A$17").Value
Case "VESTE HOMME/MEN'S JACKET"
For Each Sh In Sheets(Array("Confirmation_Client", "Confirmation_Usine", Me.Name))
Sh.Range("21:28").EntireRow.Hidden = True
Next
End Select

Select Case Range("$A$17").Value
Case "PANTALON HOMME/MEN'S PANTS"
For Each Sh In Sheets(Array("Confirmation_Client", "Confirmation_Usine", Me.Name))
Sh.Range("19:22,25:28").EntireRow.Hidden = True
Next
End Select

Select Case Range("$A$17").Value
Case "GILET HOMME/MEN'S VEST"
For Each Sh In Sheets(Array("Confirmation_Client", "Confirmation_Usine", Me.Name))
Sh.Range("19:20,23:28").EntireRow.Hidden = True
Next
End Select

Select Case Range("$A$17").Value
Case "MANTEAU HOMME/MEN'S OVERCOAT"
For Each Sh In Sheets(Array("Confirmation_Client", "Confirmation_Usine", Me.Name))
Sh.Range("19:26").EntireRow.Hidden = True
Next
End Select

Select Case Range("$A$17").Value
Case "PARKA HOMME/MEN'S PARKA"
For Each Sh In Sheets(Array("Confirmation_Client", "Confirmation_Usine", Me.Name))
Sh.Range("19:24,27:28").EntireRow.Hidden = True
Next
End Select

End If
End Sub

j'ai trouvé ce code sur un bouquin anglais
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Masquer/afficher des cellules sur 3 feuilles en même temps

Salut PatrickPrev et le forum
À voir ton code, je ne suis pas sûr que tu ais compris l'utilisation de select case...
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Sh As Worksheet
If Target.Address = "$A$17" Then
    For Each Sh In Worksheets(Array("Confirmation_Client", "Confirmation_Usine", Me.Name))
        Sh.Rows.Hidden = False

        Select Case Range("$A$17")
            Case "COSTUME HOMME/MEN'S SUITS", "COSTUME ENFANT/BOY'S SUITS"
            Sh.Range("21:22,25:28").EntireRow.Hidden = True

        Case "COSTUME HOMME 3 PIECES/MENS SUITS WITH VEST"
            Sh.Range("25:28").EntireRow.Hidden = True

        Case "VESTE HOMME/MEN'S JACKET"
            Sh.Range("21:28").EntireRow.Hidden = True

        Case "PANTALON HOMME/MEN'S PANTS"
            Sh.Range("19:22,25:28").EntireRow.Hidden = True

        Case "GILET HOMME/MEN'S VEST"
            Sh.Range("19:20,23:28").EntireRow.Hidden = True

        Case "MANTEAU HOMME/MEN'S OVERCOAT"
            Sh.Range("19:26").EntireRow.Hidden = True

        Case "PARKA HOMME/MEN'S PARKA"
            Sh.Range("19:24,27:28").EntireRow.Hidden = True
        End Select
    Next
End If
End Sub
A+
 

Discussions similaires

Réponses
0
Affichages
255

Statistiques des forums

Discussions
312 506
Messages
2 089 127
Membres
104 041
dernier inscrit
jcourtei