OVH Cloud OVH Cloud

Lignes visibles d'apres liste deroulante

22 réponses
Avatar
Lionel
Bonjour à toutes les bonnes ames disponibles...

j'ai 2 feuilles
sur la premiere liste de produits et une liste deroulante oui non pour
definir la visibilité de cette liste dans la page 2
oui ligne visible non ligne invisible
et comme sur la page 3 4 et 5 ce sont 5 colonnes (de colonne E à J pour le
premier de J à O pour le deuxieme ...) par produit qui doivent apparaitre ou
disparaitre ... je suis pas sorti de l'auberge sans de l'aide... de mes
génies preferes....
voila ca que j'avais essayé mais j'ai un message erreur 438 lorsque je
l'execute...


For i = 2 To 196
If Range("a" & i) = "Oui" Then Feuil2!Rows(i).Visible = True Else
Feuil2!Rows(i).Visible = False
next i

Merci de votre aide
Lionel

2 réponses

1 2 3
Avatar
Lionel
Bonsoir ,
Philippe ayant saturé sur mon cas et je peux le comprendre, je relance les
bonnes ames pleines de compassion qui pourraient terminer de m'aider...
Je re-explique brievement
liste produits une page qui recapitule tous les produits dispo
si les lignes sont utiles la colonne A affiche "oui " dans ce cas sur la
feuille "cmptage stock" (presque identique a "liste produits") les lignes
notées oui sont visibles et si "non" sont masquées
dans les pages cadencier pur classees surgeles, 'viandes plat salades' ,
fromage dessert, sec, frais generaux... chaque prdt utilise 6 colonnes qui
doivent etre masquees aussi si "non"dans "liste produits"
J'ai remis le code a la fin du message et le probleme est que
tout se deroule bien pour page 'surgeles' puis 'viandes plat salades' et sur
'fromage dessert' alors que le code est le meme tout foctionne jusqu'à ce
que i8 (c"2) et là j'ai un message :
erreur 1004
erreur definie par l'application ou par l'objet

J'ai executé en pas a pas mais je vois pas ce qui cloche...
Merci de m'aider une fois de plus
Lionel

Dim i As Integer, c As Integer
For i = 2 To 42 ' Surgeles
If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("SURGELES").Columns(c).EntireColumn.Hidden = False
Next
Else
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("SURGELES").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
For i = 2 To 42 ' VIANDES PLATS SALADES
If Sheets("Liste Produits").Range("a" & i + 42) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i + 42).EntireRow.Hidden False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("VIANDES PLATS SALADES").Columns(c).EntireColumn.Hidden False
Next
Else
Sheets("Feuille de comptage stock").Rows(i + 42).EntireRow.Hidden True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("VIANDES PLATS SALADES").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
For i = 2 To 42 ' FROMAGES DESSERTS
If Sheets("Liste Produits").Range("a" & i + 84) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i + 84).EntireRow.Hidden False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("FROMAGES DESSERTS").Columns(c).EntireColumn.Hidden = False
Next
Else
Sheets("Feuille de comptage stock").Rows(i + 84).EntireRow.Hidden True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("FROMAGES DESSERTS").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
For i = 2 To 42 ' SEC
If Sheets("Liste Produits").Range("a" & i + 126) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i + 126).EntireRow.Hidden False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("SEC").Columns(c).EntireColumn.Hidden = False
Next
Else
Sheets("Feuille de comptage stock").Rows(i + 126).EntireRow.Hidden True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("SEC").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
For i = 2 To 42 ' FRAIS GENERAUX
If Sheets("Liste Produits").Range("a" & i + 169) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i + 169).EntireRow.Hidden False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("FRAIS GENERAUX").Columns(c).EntireColumn.Hidden = False
Next
Else
Sheets("Feuille de comptage stock").Rows(i + 169).EntireRow.Hidden True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("FRAIS GENERAUX").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
End Sub

Crodialement Lionel

"Lionel" a écrit dans le message de
news:4b238d8c$0$912$
Bonjour à toutes les bonnes ames disponibles...

j'ai 2 feuilles
sur la premiere liste de produits et une liste deroulante oui non pour
definir la visibilité de cette liste dans la page 2
oui ligne visible non ligne invisible
et comme sur la page 3 4 et 5 ce sont 5 colonnes (de colonne E à J pour


le
premier de J à O pour le deuxieme ...) par produit qui doivent apparaitre


ou
disparaitre ... je suis pas sorti de l'auberge sans de l'aide... de mes
génies preferes....
voila ca que j'avais essayé mais j'ai un message erreur 438 lorsque je
l'execute...


For i = 2 To 196
If Range("a" & i) = "Oui" Then Feuil2!Rows(i).Visible = True Else
Feuil2!Rows(i).Visible = False
next i

Merci de votre aide
Lionel




Avatar
Lionel
Bonsoir ,
Philippe ayant saturé sur mon cas et je peux le comprendre, je relance les
bonnes ames pleines de compassion qui pourraient terminer de m'aider...
Je re-explique brievement
liste produits une page qui recapitule tous les produits dispo
si les lignes sont utiles la colonne A affiche "oui " dans ce cas sur la
feuille "cmptage stock" (presque identique a "liste produits") les lignes
notées oui sont visibles et si "non" sont masquées
dans les pages cadencier pur classees surgeles, 'viandes plat salades' ,
fromage dessert, sec, frais generaux... chaque prdt utilise 6 colonnes qui
doivent etre masquees aussi si "non"dans "liste produits"
J'ai remis le code a la fin du message et le probleme est que
tout se deroule bien pour page 'surgeles' puis 'viandes plat salades' et sur
'fromage dessert' alors que le code est le meme tout foctionne jusqu'à ce
que i8 (c"2) et là j'ai un message :
erreur 1004
erreur definie par l'application ou par l'objet

J'ai executé en pas a pas mais je vois pas ce qui cloche...
Merci de m'aider une fois de plus
Lionel

Dim i As Integer, c As Integer
For i = 2 To 42 ' Surgeles
If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("SURGELES").Columns(c).EntireColumn.Hidden = False
Next
Else
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("SURGELES").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
For i = 2 To 42 ' VIANDES PLATS SALADES
If Sheets("Liste Produits").Range("a" & i + 42) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i + 42).EntireRow.Hidden False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("VIANDES PLATS SALADES").Columns(c).EntireColumn.Hidden False
Next
Else
Sheets("Feuille de comptage stock").Rows(i + 42).EntireRow.Hidden True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("VIANDES PLATS SALADES").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
For i = 2 To 42 ' FROMAGES DESSERTS
If Sheets("Liste Produits").Range("a" & i + 84) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i + 84).EntireRow.Hidden False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("FROMAGES DESSERTS").Columns(c).EntireColumn.Hidden = False
Next
Else
Sheets("Feuille de comptage stock").Rows(i + 84).EntireRow.Hidden True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("FROMAGES DESSERTS").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
For i = 2 To 42 ' SEC
If Sheets("Liste Produits").Range("a" & i + 126) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i + 126).EntireRow.Hidden False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("SEC").Columns(c).EntireColumn.Hidden = False
Next
Else
Sheets("Feuille de comptage stock").Rows(i + 126).EntireRow.Hidden True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("SEC").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
For i = 2 To 42 ' FRAIS GENERAUX
If Sheets("Liste Produits").Range("a" & i + 169) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i + 169).EntireRow.Hidden False
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("FRAIS GENERAUX").Columns(c).EntireColumn.Hidden = False
Next
Else
Sheets("Feuille de comptage stock").Rows(i + 169).EntireRow.Hidden True
For c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
Sheets("FRAIS GENERAUX").Columns(c).EntireColumn.Hidden = True
Next
End If
Next i
End Sub

Cordialement
Lionel

"michdenis" a écrit dans le message de
news:
Bonjour Lionel,

Voici un petit exemple utilisant le filtre automatique
c'est plus efficient et rapide ....

Tu adaptes la macro pour chacune des feuilles.

Pour l'exemple suivant, j'ai supposé qu'en Colonne A:A
tu avais "oui" ou "non" comme donnée dans chacune
les cellules de cette colonne. En A1 étant l'étiquette de la
colonne. Le nom de l'onglet de la feuille est : Feuil1

Il y a 2 boucles, une sur le "oui" et une sur le "non"
afin de s'assure que seule les lignes dont la valeur en
Colonne A:A affiche OUI soient visibles.
Si tu as des lignes vides... elles ne seront pas touchées par la macro.

'--------------------------------
Sub test1()

Dim Rg As Range
Dim Arr(), Elt As Variant
Arr = Array("oui", "non")

For Each Elt In Arr
With Feuil1
With .Range("A:A")
If Elt = "oui" Then
.AutoFilter field:=1, Criteria1:="oui"
Else
.AutoFilter field:=1, Criteria1:="non"
End If
Set Rg = .Range("_FilterDataBase")
Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible)
.AutoFilter
If Elt = "oui" Then
Rg.EntireRow.Hidden = False
Else
Rg.EntireRow.Hidden = True
End If

End With
End With
Next
End Sub
'--------------------------------








1 2 3