Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2 3
Avatar
Lionel
Ok Philippe,
là ca fonctionne
En ce qui concerne mon probleme de colonne
l'enonce est simple et un simple exemple va te faire comprendre
dans le fichier que j'ai mis sur cijoint:
la premiere ligne "pain au chocolat" de la feuille "liste produit"
si je mets "non" pour qu'elle n'apparaisse plus dans la liste comptage stock
avec ton code ca fonctionne
et bien il faudrait qu'en plus les cinque colonne E à J de la feuille
Surgeles soient masquées...
et ce pour tous les produits sinon ca serait pas rigolo...
Lionel

"Corona" a écrit dans le message de
news:
Bonsoir Lionel,
J'ai constaté effectivement un problème lorsque j'ai cliqué sur le
bouton 'Mise à jour' de la feuille "Liste produit" mais comme le code
source est protégé par un mot de passe, je n'ai pas put en connaître la
raison.
Ton problème vient vraisemblablement d'une macro où il y a par
exemple une erreur de syntaxe (Un return ou un end if qui manquerait)
Aussi, j'ai copié toutes les feuilles du classeur sur un nouveau
classeur afin de travailler sur un classeur épuré des codes VBA existant
et là je n'ai pas de problème avec le code que je t'ai envoyé, les
lignes de la feuille "Feuille de comptage stock" sont bien masquées si
elle répondent aux conditions.
J'ai constaté aussi un phénomène curieux dans la validation de
données de la colonne 'A' de la feuille "Liste produit". Le choix est
Oui chaque fois. J'ai donc vérifié la propriété 'source' de la
validation qui renvoie à 2 lignes de la même colonne ( '=$A$224:$A$225'
j'avoue ne pas bien comprendre) mais bon pour mon test j'ai modifié ces
paramètres afin de pouvoir sélectionner 'Oui' ou 'Non'
Pour ton problème de masquage de colonnes en fonction de la boucle i
je ne comprends pas très bien ce que tu veux sachant que i dans cette
boucle balaie des lignes
Voici le lien où j'ai placé le fichier
http://www.cijoint.fr/cjlink.php?file=cj200912/cijiqs1jB2.xls
Philippe

Lionel a écrit :
> voici son lien
> J'ai supprimé des pages pour le poids du fichier
> et il est totalement terminé ....
> http://www.cijoint.fr/cjlink.php?file=cj200912/cij27IVZag.xls
>
> Merci
> Lionel
>
> "Corona" a écrit dans le message de
> news:%
>> Lionel,
>> Pour le message d'erreur, c'est curieux.
>> Je viens de renommer les feuilles avec les mêmes noms et n'ai eu
>> aucun soucis.
>> Pour les colonnes je regarderai tout à l'heure sauf si d'ici là un
>> autre contributeur t'apporte la solution.
>> Si tu as l'occasion et si ce n'est pas confidentiel place ton
>> classeur sur cijoint.
>> Dim I As Integer
>> For I = 2 To 196
>> If Sheets("Liste Produits").Range("a" & I) = "Oui" Then
>> Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden False
>> Else
>> Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden True
>> End If
>> Next I
>> Philippe
>>
>> Lionel a écrit :
>>> re - Bonjour
>>>
>>> D'abord MERCI de prendre du temps
>>> Cela va sans dire mais c'est mieux en le disant
>>>
>>> j'obtiens un message d'erreur de syntaxe ! ??
>>> J'ai pourtant juste redonné le vrai nom des feuilles...
>>>
>>> For i = 2 To 196
>>> If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = False
> Else
>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = True
>>> Next i
>>>
>>> Par ailleurs comment ajouter avec la meme condition fans la feuille3
> pour
>>> i = 2 que les colonnes EàJ soient invisibles si "non" et visibles si
> "oui"
>>> i=3 que les colonnes KàP soient invisibles si "non " et visibles si
> "oui"
>>> j'ai essayé de rajouter dans la feuille "liste produits" 2 colonnes


qui
> pour
>>> chaque lignes donne la premiere et la derniere colonne à masquer ou
> afficher
>>> suivant le choix oui ou non
>>>
>>> Ex
>>>
>>> ligne 2
>>> colonne A choix oui ou non
>>> colonne B Nom Produit
>>> Colonne C 1ère colonne à masquer/afficher (E pour la ligne 2)
>>> Colonne D derniere colonnne à masquer/afficher(J pour la ligne 2)
>>>
>>> Tout ce que j'ai essayé foire....
>>>
>>> Sheet("feuil3").Columns(range("Liste Produits").range("c"& i):
> range("Liste
>>> Produits").range("d"& i)) .hidden=true
>>>
>>> ca ne fonctionne pas...
>>> si vous avez une idée ... je suis preneur
>>>
>>>
>>> "Corona" a écrit dans le message de
>>> news:
>>>> Lionel,
>>>> J'avais mal lu la question
>>>> For i = 2 To 196
>>>> If Range("a" & i) = "Oui" Then
>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = True Else
>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = False
>>>> Next i
>>>> Philippe
>>>> Lionel a écrit :
>>>>> 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
rthompson
Bonsoir

Je dis peut-être une connerie

Mais pourquoi ne pas utiliser une lise cascade comme ceux de JB?

Sur Excelabo (Mâtin quel site!) fait une recherche sur "Cascade"

Il y a toute une série de trucs pas mal du tout

A bientôt

Rex


"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
Corona
Bonjour Lionel,
Le fichier avec exemple de ligne + colonne masquée ici
http://www.cijoint.fr/cjlink.php?file=cj200912/cij4pBClZv.xls
Pour Excel 2003 le maximum de produits à masquer est de 42. Etant
donné que tu as 6 colonnes par ligne de produits + les 4 colonnes de
début, on dépasse le maximum de 256 colonnes au 43ème produit
Philippe

Lionel a écrit :
Ok Philippe,
là ca fonctionne
En ce qui concerne mon probleme de colonne
l'enonce est simple et un simple exemple va te faire comprendre
dans le fichier que j'ai mis sur cijoint:
la premiere ligne "pain au chocolat" de la feuille "liste produit"
si je mets "non" pour qu'elle n'apparaisse plus dans la liste comptage stock
avec ton code ca fonctionne
et bien il faudrait qu'en plus les cinque colonne E à J de la feuille
Surgeles soient masquées...
et ce pour tous les produits sinon ca serait pas rigolo...
Lionel

"Corona" a écrit dans le message de
news:
Bonsoir Lionel,
J'ai constaté effectivement un problème lorsque j'ai cliqué sur le
bouton 'Mise à jour' de la feuille "Liste produit" mais comme le code
source est protégé par un mot de passe, je n'ai pas put en connaître la
raison.
Ton problème vient vraisemblablement d'une macro où il y a par
exemple une erreur de syntaxe (Un return ou un end if qui manquerait)
Aussi, j'ai copié toutes les feuilles du classeur sur un nouveau
classeur afin de travailler sur un classeur épuré des codes VBA existant
et là je n'ai pas de problème avec le code que je t'ai envoyé, les
lignes de la feuille "Feuille de comptage stock" sont bien masquées si
elle répondent aux conditions.
J'ai constaté aussi un phénomène curieux dans la validation de
données de la colonne 'A' de la feuille "Liste produit". Le choix est
Oui chaque fois. J'ai donc vérifié la propriété 'source' de la
validation qui renvoie à 2 lignes de la même colonne ( '=$A$224:$A$225'
j'avoue ne pas bien comprendre) mais bon pour mon test j'ai modifié ces
paramètres afin de pouvoir sélectionner 'Oui' ou 'Non'
Pour ton problème de masquage de colonnes en fonction de la boucle i
je ne comprends pas très bien ce que tu veux sachant que i dans cette
boucle balaie des lignes
Voici le lien où j'ai placé le fichier
http://www.cijoint.fr/cjlink.php?file=cj200912/cijiqs1jB2.xls
Philippe

Lionel a écrit :
voici son lien
J'ai supprimé des pages pour le poids du fichier
et il est totalement terminé ....
http://www.cijoint.fr/cjlink.php?file=cj200912/cij27IVZag.xls

Merci
Lionel

"Corona" a écrit dans le message de
news:%
Lionel,
Pour le message d'erreur, c'est curieux.
Je viens de renommer les feuilles avec les mêmes noms et n'ai eu
aucun soucis.
Pour les colonnes je regarderai tout à l'heure sauf si d'ici là un
autre contributeur t'apporte la solution.
Si tu as l'occasion et si ce n'est pas confidentiel place ton
classeur sur cijoint.
Dim I As Integer
For I = 2 To 196
If Sheets("Liste Produits").Range("a" & I) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden > False
Else
Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden > True
End If
Next I
Philippe

Lionel a écrit :
re - Bonjour

D'abord MERCI de prendre du temps
Cela va sans dire mais c'est mieux en le disant

j'obtiens un message d'erreur de syntaxe ! ??
J'ai pourtant juste redonné le vrai nom des feuilles...

For i = 2 To 196
If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = False




Else
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = True
Next i

Par ailleurs comment ajouter avec la meme condition fans la feuille3




pour
i = 2 que les colonnes EàJ soient invisibles si "non" et visibles si




"oui"
i=3 que les colonnes KàP soient invisibles si "non " et visibles si




"oui"
j'ai essayé de rajouter dans la feuille "liste produits" 2 colonnes








qui
pour
chaque lignes donne la premiere et la derniere colonne à masquer ou




afficher
suivant le choix oui ou non

Ex

ligne 2
colonne A choix oui ou non
colonne B Nom Produit
Colonne C 1ère colonne à masquer/afficher (E pour la ligne 2)
Colonne D derniere colonnne à masquer/afficher(J pour la ligne 2)

Tout ce que j'ai essayé foire....

Sheet("feuil3").Columns(range("Liste Produits").range("c"& i):




range("Liste
Produits").range("d"& i)) .hidden=true

ca ne fonctionne pas...
si vous avez une idée ... je suis preneur


"Corona" a écrit dans le message de
news:
Lionel,
J'avais mal lu la question
For i = 2 To 196
If Range("a" & i) = "Oui" Then
Sheets("Feuil2").Rows(i).EntireRow.Hidden = True Else
Sheets("Feuil2").Rows(i).EntireRow.Hidden = False
Next i
Philippe
Lionel a écrit :
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
Salut en ce dimanche morose
Le fichier envoyé ne fait rien ! pas de macro rien!!
en ce qui concerne le nombre de produits, je sais, 42 par feuille
c'est pour cela qu'il y en a plusieurs...feuilles ;-)
c'est aussi pour cela que dans liste produit j'ai mis dans 2 colonnes le
premiere et la derniere colonne a masquer ou afficher pour chaque produit...
il faut faire autant de boucles que de pages de 42 produits...
je ne sais pas comment appeler ces colonnes avec la fonction
Columns((sheets("liste produits").range("g"&i).value):(sheets("liste
produits").range("g"&i).value)).entirehidden=true
peut etre?

Lionel




"Corona" a écrit dans le message de
news:
Bonjour Lionel,
Le fichier avec exemple de ligne + colonne masquée ici
http://www.cijoint.fr/cjlink.php?file=cj200912/cij4pBClZv.xls
Pour Excel 2003 le maximum de produits à masquer est de 42. Etant
donné que tu as 6 colonnes par ligne de produits + les 4 colonnes de
début, on dépasse le maximum de 256 colonnes au 43ème produit
Philippe

Lionel a écrit :
> Ok Philippe,
> là ca fonctionne
> En ce qui concerne mon probleme de colonne
> l'enonce est simple et un simple exemple va te faire comprendre
> dans le fichier que j'ai mis sur cijoint:
> la premiere ligne "pain au chocolat" de la feuille "liste produit"
> si je mets "non" pour qu'elle n'apparaisse plus dans la liste comptage


stock
> avec ton code ca fonctionne
> et bien il faudrait qu'en plus les cinque colonne E à J de la feuille
> Surgeles soient masquées...
> et ce pour tous les produits sinon ca serait pas rigolo...
> Lionel
>
> "Corona" a écrit dans le message de
> news:
>> Bonsoir Lionel,
>> J'ai constaté effectivement un problème lorsque j'ai cliqué sur le
>> bouton 'Mise à jour' de la feuille "Liste produit" mais comme le code
>> source est protégé par un mot de passe, je n'ai pas put en connaître la
>> raison.
>> Ton problème vient vraisemblablement d'une macro où il y a par
>> exemple une erreur de syntaxe (Un return ou un end if qui manquerait)
>> Aussi, j'ai copié toutes les feuilles du classeur sur un nouveau
>> classeur afin de travailler sur un classeur épuré des codes VBA


existant
>> et là je n'ai pas de problème avec le code que je t'ai envoyé, les
>> lignes de la feuille "Feuille de comptage stock" sont bien masquées si
>> elle répondent aux conditions.
>> J'ai constaté aussi un phénomène curieux dans la validation de
>> données de la colonne 'A' de la feuille "Liste produit". Le choix est
>> Oui chaque fois. J'ai donc vérifié la propriété 'source' de la
>> validation qui renvoie à 2 lignes de la même colonne ( '=$A$224:$A$225'
>> j'avoue ne pas bien comprendre) mais bon pour mon test j'ai modifié ces
>> paramètres afin de pouvoir sélectionner 'Oui' ou 'Non'
>> Pour ton problème de masquage de colonnes en fonction de la boucle i
>> je ne comprends pas très bien ce que tu veux sachant que i dans cette
>> boucle balaie des lignes
>> Voici le lien où j'ai placé le fichier
>> http://www.cijoint.fr/cjlink.php?file=cj200912/cijiqs1jB2.xls
>> Philippe
>>
>> Lionel a écrit :
>>> voici son lien
>>> J'ai supprimé des pages pour le poids du fichier
>>> et il est totalement terminé ....
>>> http://www.cijoint.fr/cjlink.php?file=cj200912/cij27IVZag.xls
>>>
>>> Merci
>>> Lionel
>>>
>>> "Corona" a écrit dans le message de
>>> news:%
>>>> Lionel,
>>>> Pour le message d'erreur, c'est curieux.
>>>> Je viens de renommer les feuilles avec les mêmes noms et n'ai eu
>>>> aucun soucis.
>>>> Pour les colonnes je regarderai tout à l'heure sauf si d'ici là un
>>>> autre contributeur t'apporte la solution.
>>>> Si tu as l'occasion et si ce n'est pas confidentiel place ton
>>>> classeur sur cijoint.
>>>> Dim I As Integer
>>>> For I = 2 To 196
>>>> If Sheets("Liste Produits").Range("a" & I) = "Oui" Then
>>>> Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden > > False
>>>> Else
>>>> Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden > > True
>>>> End If
>>>> Next I
>>>> Philippe
>>>>
>>>> Lionel a écrit :
>>>>> re - Bonjour
>>>>>
>>>>> D'abord MERCI de prendre du temps
>>>>> Cela va sans dire mais c'est mieux en le disant
>>>>>
>>>>> j'obtiens un message d'erreur de syntaxe ! ??
>>>>> J'ai pourtant juste redonné le vrai nom des feuilles...
>>>>>
>>>>> For i = 2 To 196
>>>>> If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
>>>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = False
>>> Else
>>>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = True
>>>>> Next i
>>>>>
>>>>> Par ailleurs comment ajouter avec la meme condition fans la feuille3
>>> pour
>>>>> i = 2 que les colonnes EàJ soient invisibles si "non" et visibles


si
>>> "oui"
>>>>> i=3 que les colonnes KàP soient invisibles si "non " et visibles si
>>> "oui"
>>>>> j'ai essayé de rajouter dans la feuille "liste produits" 2 colonnes
> qui
>>> pour
>>>>> chaque lignes donne la premiere et la derniere colonne à masquer ou
>>> afficher
>>>>> suivant le choix oui ou non
>>>>>
>>>>> Ex
>>>>>
>>>>> ligne 2
>>>>> colonne A choix oui ou non
>>>>> colonne B Nom Produit
>>>>> Colonne C 1ère colonne à masquer/afficher (E pour la ligne 2)
>>>>> Colonne D derniere colonnne à masquer/afficher(J pour la ligne 2)
>>>>>
>>>>> Tout ce que j'ai essayé foire....
>>>>>
>>>>> Sheet("feuil3").Columns(range("Liste Produits").range("c"& i):
>>> range("Liste
>>>>> Produits").range("d"& i)) .hidden=true
>>>>>
>>>>> ca ne fonctionne pas...
>>>>> si vous avez une idée ... je suis preneur
>>>>>
>>>>>
>>>>> "Corona" a écrit dans le message de
>>>>> news:
>>>>>> Lionel,
>>>>>> J'avais mal lu la question
>>>>>> For i = 2 To 196
>>>>>> If Range("a" & i) = "Oui" Then
>>>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = True Else
>>>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = False
>>>>>> Next i
>>>>>> Philippe
>>>>>> Lionel a écrit :
>>>>>>> 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
Corona
Lionel,
Le code se trouve dans la feuille "Liste produits", exactement où tu
avais mis le tien. Clique sur le bouton "Mise à jour" et tu verras que
les colonnes correspondantes aux produits sont masquées si la ligne de
la colonne "A" indique "Non".
Philippe
Lionel a écrit :
Salut en ce dimanche morose
Le fichier envoyé ne fait rien ! pas de macro rien!!
en ce qui concerne le nombre de produits, je sais, 42 par feuille
c'est pour cela qu'il y en a plusieurs...feuilles ;-)
c'est aussi pour cela que dans liste produit j'ai mis dans 2 colonnes le
premiere et la derniere colonne a masquer ou afficher pour chaque produit...
il faut faire autant de boucles que de pages de 42 produits...
je ne sais pas comment appeler ces colonnes avec la fonction
Columns((sheets("liste produits").range("g"&i).value):(sheets("liste
produits").range("g"&i).value)).entirehidden=true
peut etre?

Lionel




"Corona" a écrit dans le message de
news:
Bonjour Lionel,
Le fichier avec exemple de ligne + colonne masquée ici
http://www.cijoint.fr/cjlink.php?file=cj200912/cij4pBClZv.xls
Pour Excel 2003 le maximum de produits à masquer est de 42. Etant
donné que tu as 6 colonnes par ligne de produits + les 4 colonnes de
début, on dépasse le maximum de 256 colonnes au 43ème produit
Philippe

Lionel a écrit :
Ok Philippe,
là ca fonctionne
En ce qui concerne mon probleme de colonne
l'enonce est simple et un simple exemple va te faire comprendre
dans le fichier que j'ai mis sur cijoint:
la premiere ligne "pain au chocolat" de la feuille "liste produit"
si je mets "non" pour qu'elle n'apparaisse plus dans la liste comptage




stock
avec ton code ca fonctionne
et bien il faudrait qu'en plus les cinque colonne E à J de la feuille
Surgeles soient masquées...
et ce pour tous les produits sinon ca serait pas rigolo...
Lionel

"Corona" a écrit dans le message de
news:
Bonsoir Lionel,
J'ai constaté effectivement un problème lorsque j'ai cliqué sur le
bouton 'Mise à jour' de la feuille "Liste produit" mais comme le code
source est protégé par un mot de passe, je n'ai pas put en connaître la
raison.
Ton problème vient vraisemblablement d'une macro où il y a par
exemple une erreur de syntaxe (Un return ou un end if qui manquerait)
Aussi, j'ai copié toutes les feuilles du classeur sur un nouveau
classeur afin de travailler sur un classeur épuré des codes VBA






existant
et là je n'ai pas de problème avec le code que je t'ai envoyé, les
lignes de la feuille "Feuille de comptage stock" sont bien masquées si
elle répondent aux conditions.
J'ai constaté aussi un phénomène curieux dans la validation de
données de la colonne 'A' de la feuille "Liste produit". Le choix est
Oui chaque fois. J'ai donc vérifié la propriété 'source' de la
validation qui renvoie à 2 lignes de la même colonne ( '=$A$224:$A$225'
j'avoue ne pas bien comprendre) mais bon pour mon test j'ai modifié ces
paramètres afin de pouvoir sélectionner 'Oui' ou 'Non'
Pour ton problème de masquage de colonnes en fonction de la boucle i
je ne comprends pas très bien ce que tu veux sachant que i dans cette
boucle balaie des lignes
Voici le lien où j'ai placé le fichier
http://www.cijoint.fr/cjlink.php?file=cj200912/cijiqs1jB2.xls
Philippe

Lionel a écrit :
voici son lien
J'ai supprimé des pages pour le poids du fichier
et il est totalement terminé ....
http://www.cijoint.fr/cjlink.php?file=cj200912/cij27IVZag.xls

Merci
Lionel

"Corona" a écrit dans le message de
news:%
Lionel,
Pour le message d'erreur, c'est curieux.
Je viens de renommer les feuilles avec les mêmes noms et n'ai eu
aucun soucis.
Pour les colonnes je regarderai tout à l'heure sauf si d'ici là un
autre contributeur t'apporte la solution.
Si tu as l'occasion et si ce n'est pas confidentiel place ton
classeur sur cijoint.
Dim I As Integer
For I = 2 To 196
If Sheets("Liste Produits").Range("a" & I) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden >>> False
Else
Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden >>> True
End If
Next I
Philippe

Lionel a écrit :
re - Bonjour

D'abord MERCI de prendre du temps
Cela va sans dire mais c'est mieux en le disant

j'obtiens un message d'erreur de syntaxe ! ??
J'ai pourtant juste redonné le vrai nom des feuilles...

For i = 2 To 196
If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = False




Else
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = True
Next i

Par ailleurs comment ajouter avec la meme condition fans la feuille3




pour
i = 2 que les colonnes EàJ soient invisibles si "non" et visibles












si
"oui"
i=3 que les colonnes KàP soient invisibles si "non " et visibles si




"oui"
j'ai essayé de rajouter dans la feuille "liste produits" 2 colonnes








qui
pour
chaque lignes donne la premiere et la derniere colonne à masquer ou




afficher
suivant le choix oui ou non

Ex

ligne 2
colonne A choix oui ou non
colonne B Nom Produit
Colonne C 1ère colonne à masquer/afficher (E pour la ligne 2)
Colonne D derniere colonnne à masquer/afficher(J pour la ligne 2)

Tout ce que j'ai essayé foire....

Sheet("feuil3").Columns(range("Liste Produits").range("c"& i):




range("Liste
Produits").range("d"& i)) .hidden=true

ca ne fonctionne pas...
si vous avez une idée ... je suis preneur


"Corona" a écrit dans le message de
news:
Lionel,
J'avais mal lu la question
For i = 2 To 196
If Range("a" & i) = "Oui" Then
Sheets("Feuil2").Rows(i).EntireRow.Hidden = True Else
Sheets("Feuil2").Rows(i).EntireRow.Hidden = False
Next i
Philippe
Lionel a écrit :
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
C'est cool ! ca fonctionne pour la premiere page !
J'ai adapté pour les pages suivantes mais ca bloque des la deuxieme...

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

Je vois pas ce qui bloque
Le message "impossible de definir la propriete hidden de la classe range " ?
alors que ca fonctionne poour la page "surgeles"
N'y aurait il pas un blocage lorsque une colonne est 'hidden' et qu'on
relance a nouveau la macro pour la cacher...?

Lionel


"Corona" a écrit dans le message de
news:OuY7$C%
Lionel,
Le code se trouve dans la feuille "Liste produits", exactement où tu
avais mis le tien. Clique sur le bouton "Mise à jour" et tu verras que
les colonnes correspondantes aux produits sont masquées si la ligne de
la colonne "A" indique "Non".
Philippe
Lionel a écrit :
> Salut en ce dimanche morose
> Le fichier envoyé ne fait rien ! pas de macro rien!!
> en ce qui concerne le nombre de produits, je sais, 42 par feuille
> c'est pour cela qu'il y en a plusieurs...feuilles ;-)
> c'est aussi pour cela que dans liste produit j'ai mis dans 2 colonnes le
> premiere et la derniere colonne a masquer ou afficher pour chaque


produit...
> il faut faire autant de boucles que de pages de 42 produits...
> je ne sais pas comment appeler ces colonnes avec la fonction
> Columns((sheets("liste produits").range("g"&i).value):(sheets("liste
> produits").range("g"&i).value)).entirehidden=true
> peut etre?
>
> Lionel
>
>
>
>
> "Corona" a écrit dans le message de
> news:
>> Bonjour Lionel,
>> Le fichier avec exemple de ligne + colonne masquée ici
>> http://www.cijoint.fr/cjlink.php?file=cj200912/cij4pBClZv.xls
>> Pour Excel 2003 le maximum de produits à masquer est de 42. Etant
>> donné que tu as 6 colonnes par ligne de produits + les 4 colonnes de
>> début, on dépasse le maximum de 256 colonnes au 43ème produit
>> Philippe
>>
>> Lionel a écrit :
>>> Ok Philippe,
>>> là ca fonctionne
>>> En ce qui concerne mon probleme de colonne
>>> l'enonce est simple et un simple exemple va te faire comprendre
>>> dans le fichier que j'ai mis sur cijoint:
>>> la premiere ligne "pain au chocolat" de la feuille "liste produit"
>>> si je mets "non" pour qu'elle n'apparaisse plus dans la liste comptage
> stock
>>> avec ton code ca fonctionne
>>> et bien il faudrait qu'en plus les cinque colonne E à J de la feuille
>>> Surgeles soient masquées...
>>> et ce pour tous les produits sinon ca serait pas rigolo...
>>> Lionel
>>>
>>> "Corona" a écrit dans le message de
>>> news:
>>>> Bonsoir Lionel,
>>>> J'ai constaté effectivement un problème lorsque j'ai cliqué sur le
>>>> bouton 'Mise à jour' de la feuille "Liste produit" mais comme le code
>>>> source est protégé par un mot de passe, je n'ai pas put en connaître


la
>>>> raison.
>>>> Ton problème vient vraisemblablement d'une macro où il y a par
>>>> exemple une erreur de syntaxe (Un return ou un end if qui manquerait)
>>>> Aussi, j'ai copié toutes les feuilles du classeur sur un nouveau
>>>> classeur afin de travailler sur un classeur épuré des codes VBA
> existant
>>>> et là je n'ai pas de problème avec le code que je t'ai envoyé, les
>>>> lignes de la feuille "Feuille de comptage stock" sont bien masquées


si
>>>> elle répondent aux conditions.
>>>> J'ai constaté aussi un phénomène curieux dans la validation de
>>>> données de la colonne 'A' de la feuille "Liste produit". Le choix est
>>>> Oui chaque fois. J'ai donc vérifié la propriété 'source' de la
>>>> validation qui renvoie à 2 lignes de la même colonne (


'=$A$224:$A$225'
>>>> j'avoue ne pas bien comprendre) mais bon pour mon test j'ai modifié


ces
>>>> paramètres afin de pouvoir sélectionner 'Oui' ou 'Non'
>>>> Pour ton problème de masquage de colonnes en fonction de la boucle


i
>>>> je ne comprends pas très bien ce que tu veux sachant que i dans cette
>>>> boucle balaie des lignes
>>>> Voici le lien où j'ai placé le fichier
>>>> http://www.cijoint.fr/cjlink.php?file=cj200912/cijiqs1jB2.xls
>>>> Philippe
>>>>
>>>> Lionel a écrit :
>>>>> voici son lien
>>>>> J'ai supprimé des pages pour le poids du fichier
>>>>> et il est totalement terminé ....
>>>>> http://www.cijoint.fr/cjlink.php?file=cj200912/cij27IVZag.xls
>>>>>
>>>>> Merci
>>>>> Lionel
>>>>>
>>>>> "Corona" a écrit dans le message de
>>>>> news:%
>>>>>> Lionel,
>>>>>> Pour le message d'erreur, c'est curieux.
>>>>>> Je viens de renommer les feuilles avec les mêmes noms et n'ai eu
>>>>>> aucun soucis.
>>>>>> Pour les colonnes je regarderai tout à l'heure sauf si d'ici là


un
>>>>>> autre contributeur t'apporte la solution.
>>>>>> Si tu as l'occasion et si ce n'est pas confidentiel place ton
>>>>>> classeur sur cijoint.
>>>>>> Dim I As Integer
>>>>>> For I = 2 To 196
>>>>>> If Sheets("Liste Produits").Range("a" & I) = "Oui" Then
>>>>>> Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden > >>> False
>>>>>> Else
>>>>>> Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden > >>> True
>>>>>> End If
>>>>>> Next I
>>>>>> Philippe
>>>>>>
>>>>>> Lionel a écrit :
>>>>>>> re - Bonjour
>>>>>>>
>>>>>>> D'abord MERCI de prendre du temps
>>>>>>> Cela va sans dire mais c'est mieux en le disant
>>>>>>>
>>>>>>> j'obtiens un message d'erreur de syntaxe ! ??
>>>>>>> J'ai pourtant juste redonné le vrai nom des feuilles...
>>>>>>>
>>>>>>> For i = 2 To 196
>>>>>>> If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
>>>>>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden False
>>>>> Else
>>>>>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden True
>>>>>>> Next i
>>>>>>>
>>>>>>> Par ailleurs comment ajouter avec la meme condition fans la


feuille3
>>>>> pour
>>>>>>> i = 2 que les colonnes EàJ soient invisibles si "non" et visibles
> si
>>>>> "oui"
>>>>>>> i=3 que les colonnes KàP soient invisibles si "non " et visibles


si
>>>>> "oui"
>>>>>>> j'ai essayé de rajouter dans la feuille "liste produits" 2


colonnes
>>> qui
>>>>> pour
>>>>>>> chaque lignes donne la premiere et la derniere colonne à masquer


ou
>>>>> afficher
>>>>>>> suivant le choix oui ou non
>>>>>>>
>>>>>>> Ex
>>>>>>>
>>>>>>> ligne 2
>>>>>>> colonne A choix oui ou non
>>>>>>> colonne B Nom Produit
>>>>>>> Colonne C 1ère colonne à masquer/afficher (E pour la ligne 2)
>>>>>>> Colonne D derniere colonnne à masquer/afficher(J pour la ligne 2)
>>>>>>>
>>>>>>> Tout ce que j'ai essayé foire....
>>>>>>>
>>>>>>> Sheet("feuil3").Columns(range("Liste Produits").range("c"& i):
>>>>> range("Liste
>>>>>>> Produits").range("d"& i)) .hidden=true
>>>>>>>
>>>>>>> ca ne fonctionne pas...
>>>>>>> si vous avez une idée ... je suis preneur
>>>>>>>
>>>>>>>
>>>>>>> "Corona" a écrit dans le message de
>>>>>>> news:
>>>>>>>> Lionel,
>>>>>>>> J'avais mal lu la question
>>>>>>>> For i = 2 To 196
>>>>>>>> If Range("a" & i) = "Oui" Then
>>>>>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = True Else
>>>>>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = False
>>>>>>>> Next i
>>>>>>>> Philippe
>>>>>>>> Lionel a écrit :
>>>>>>>>> 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
Corona
Lionel,
C'est normal que cela ne fonctionne pas.
Tu m'as dit toi même que tu savais que la limite était de 42 produits
par feuille et que tu avais splité les produits sur plusieurs feuilles
Donc, ta boucle de lecture des lignes doit aller de 2 à n (n = 211 ?)
et tu dois adapter le calcul c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
en fonction des feuilles que tu visites.
C'est à dire que tu dois effectuer un calcul avec la variable i.
Philippe

Lionel a écrit :
C'est cool ! ca fonctionne pour la premiere page !
J'ai adapté pour les pages suivantes mais ca bloque des la deuxieme...

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

Je vois pas ce qui bloque
Le message "impossible de definir la propriete hidden de la classe range " ?
alors que ca fonctionne poour la page "surgeles"
N'y aurait il pas un blocage lorsque une colonne est 'hidden' et qu'on
relance a nouveau la macro pour la cacher...?

Lionel


"Corona" a écrit dans le message de
news:OuY7$C%
Lionel,
Le code se trouve dans la feuille "Liste produits", exactement où tu
avais mis le tien. Clique sur le bouton "Mise à jour" et tu verras que
les colonnes correspondantes aux produits sont masquées si la ligne de
la colonne "A" indique "Non".
Philippe
Lionel a écrit :
Salut en ce dimanche morose
Le fichier envoyé ne fait rien ! pas de macro rien!!
en ce qui concerne le nombre de produits, je sais, 42 par feuille
c'est pour cela qu'il y en a plusieurs...feuilles ;-)
c'est aussi pour cela que dans liste produit j'ai mis dans 2 colonnes le
premiere et la derniere colonne a masquer ou afficher pour chaque




produit...
il faut faire autant de boucles que de pages de 42 produits...
je ne sais pas comment appeler ces colonnes avec la fonction
Columns((sheets("liste produits").range("g"&i).value):(sheets("liste
produits").range("g"&i).value)).entirehidden=true
peut etre?

Lionel




"Corona" a écrit dans le message de
news:
Bonjour Lionel,
Le fichier avec exemple de ligne + colonne masquée ici
http://www.cijoint.fr/cjlink.php?file=cj200912/cij4pBClZv.xls
Pour Excel 2003 le maximum de produits à masquer est de 42. Etant
donné que tu as 6 colonnes par ligne de produits + les 4 colonnes de
début, on dépasse le maximum de 256 colonnes au 43ème produit
Philippe

Lionel a écrit :
Ok Philippe,
là ca fonctionne
En ce qui concerne mon probleme de colonne
l'enonce est simple et un simple exemple va te faire comprendre
dans le fichier que j'ai mis sur cijoint:
la premiere ligne "pain au chocolat" de la feuille "liste produit"
si je mets "non" pour qu'elle n'apparaisse plus dans la liste comptage




stock
avec ton code ca fonctionne
et bien il faudrait qu'en plus les cinque colonne E à J de la feuille
Surgeles soient masquées...
et ce pour tous les produits sinon ca serait pas rigolo...
Lionel

"Corona" a écrit dans le message de
news:
Bonsoir Lionel,
J'ai constaté effectivement un problème lorsque j'ai cliqué sur le
bouton 'Mise à jour' de la feuille "Liste produit" mais comme le code
source est protégé par un mot de passe, je n'ai pas put en connaître










la
raison.
Ton problème vient vraisemblablement d'une macro où il y a par
exemple une erreur de syntaxe (Un return ou un end if qui manquerait)
Aussi, j'ai copié toutes les feuilles du classeur sur un nouveau
classeur afin de travailler sur un classeur épuré des codes VBA






existant
et là je n'ai pas de problème avec le code que je t'ai envoyé, les
lignes de la feuille "Feuille de comptage stock" sont bien masquées










si
elle répondent aux conditions.
J'ai constaté aussi un phénomène curieux dans la validation de
données de la colonne 'A' de la feuille "Liste produit". Le choix est
Oui chaque fois. J'ai donc vérifié la propriété 'source' de la
validation qui renvoie à 2 lignes de la même colonne (










'=$A$224:$A$225'
j'avoue ne pas bien comprendre) mais bon pour mon test j'ai modifié










ces
paramètres afin de pouvoir sélectionner 'Oui' ou 'Non'
Pour ton problème de masquage de colonnes en fonction de la boucle










i
je ne comprends pas très bien ce que tu veux sachant que i dans cette
boucle balaie des lignes
Voici le lien où j'ai placé le fichier
http://www.cijoint.fr/cjlink.php?file=cj200912/cijiqs1jB2.xls
Philippe

Lionel a écrit :
voici son lien
J'ai supprimé des pages pour le poids du fichier
et il est totalement terminé ....
http://www.cijoint.fr/cjlink.php?file=cj200912/cij27IVZag.xls

Merci
Lionel

"Corona" a écrit dans le message de
news:%
Lionel,
Pour le message d'erreur, c'est curieux.
Je viens de renommer les feuilles avec les mêmes noms et n'ai eu
aucun soucis.
Pour les colonnes je regarderai tout à l'heure sauf si d'ici là














un
autre contributeur t'apporte la solution.
Si tu as l'occasion et si ce n'est pas confidentiel place ton
classeur sur cijoint.
Dim I As Integer
For I = 2 To 196
If Sheets("Liste Produits").Range("a" & I) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden >>>>> False
Else
Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden >>>>> True
End If
Next I
Philippe

Lionel a écrit :
re - Bonjour

D'abord MERCI de prendre du temps
Cela va sans dire mais c'est mieux en le disant

j'obtiens un message d'erreur de syntaxe ! ??
J'ai pourtant juste redonné le vrai nom des feuilles...

For i = 2 To 196
If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden > False




Else
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden > True
Next i

Par ailleurs comment ajouter avec la meme condition fans la
















feuille3
pour
i = 2 que les colonnes EàJ soient invisibles si "non" et visibles












si
"oui"
i=3 que les colonnes KàP soient invisibles si "non " et visibles
















si
"oui"
j'ai essayé de rajouter dans la feuille "liste produits" 2
















colonnes
qui
pour
chaque lignes donne la premiere et la derniere colonne à masquer
















ou
afficher
suivant le choix oui ou non

Ex

ligne 2
colonne A choix oui ou non
colonne B Nom Produit
Colonne C 1ère colonne à masquer/afficher (E pour la ligne 2)
Colonne D derniere colonnne à masquer/afficher(J pour la ligne 2)

Tout ce que j'ai essayé foire....

Sheet("feuil3").Columns(range("Liste Produits").range("c"& i):




range("Liste
Produits").range("d"& i)) .hidden=true

ca ne fonctionne pas...
si vous avez une idée ... je suis preneur


"Corona" a écrit dans le message de
news:
Lionel,
J'avais mal lu la question
For i = 2 To 196
If Range("a" & i) = "Oui" Then
Sheets("Feuil2").Rows(i).EntireRow.Hidden = True Else
Sheets("Feuil2").Rows(i).EntireRow.Hidden = False
Next i
Philippe
Lionel a écrit :
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
Rebonsoir

Je vois pas ce qui bloque
Le message "impossible de definir la propriete hidden de la classe range " ?
alors que ca fonctionne poour la page "surgeles"
N'y aurait il pas un blocage lorsque une colonne est 'hidden' et qu'on
relance a nouveau la macro pour la cacher...?

J'ai opté pour conserver les boucles 2 to 42
en adaptant la variable i pour la page comptage stock et du coup on
conserve le benefice des boucles colonnes à cacher inchangées
Mais ca ne fonctionne que sur le papier car le message d'erreur apparait
quoique je fasse...

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").Row(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

"Corona" a écrit dans le message de
news:
Lionel,
C'est normal que cela ne fonctionne pas.
Tu m'as dit toi même que tu savais que la limite était de 42 produits
par feuille et que tu avais splité les produits sur plusieurs feuilles
Donc, ta boucle de lecture des lignes doit aller de 2 à n (n = 211 ?)
et tu dois adapter le calcul c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
en fonction des feuilles que tu visites.
C'est à dire que tu dois effectuer un calcul avec la variable i.
Philippe

Lionel a écrit :
> C'est cool ! ca fonctionne pour la premiere page !
> J'ai adapté pour les pages suivantes mais ca bloque des la deuxieme...
>
> 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
>
> Je vois pas ce qui bloque
> Le message "impossible de definir la propriete hidden de la classe range


" ?
> alors que ca fonctionne poour la page "surgeles"
> N'y aurait il pas un blocage lorsque une colonne est 'hidden' et qu'on
> relance a nouveau la macro pour la cacher...?
>
> Lionel
>
>
> "Corona" a écrit dans le message de
> news:OuY7$C%
>> Lionel,
>> Le code se trouve dans la feuille "Liste produits", exactement où tu
>> avais mis le tien. Clique sur le bouton "Mise à jour" et tu verras que
>> les colonnes correspondantes aux produits sont masquées si la ligne de
>> la colonne "A" indique "Non".
>> Philippe
>> Lionel a écrit :
>>> Salut en ce dimanche morose
>>> Le fichier envoyé ne fait rien ! pas de macro rien!!
>>> en ce qui concerne le nombre de produits, je sais, 42 par feuille
>>> c'est pour cela qu'il y en a plusieurs...feuilles ;-)
>>> c'est aussi pour cela que dans liste produit j'ai mis dans 2 colonnes


le
>>> premiere et la derniere colonne a masquer ou afficher pour chaque
> produit...
>>> il faut faire autant de boucles que de pages de 42 produits...
>>> je ne sais pas comment appeler ces colonnes avec la fonction
>>> Columns((sheets("liste produits").range("g"&i).value):(sheets("liste
>>> produits").range("g"&i).value)).entirehidden=true
>>> peut etre?
>>>
>>> Lionel
>>>
>>>
>>>
>>>
>>> "Corona" a écrit dans le message de
>>> news:
>>>> Bonjour Lionel,
>>>> Le fichier avec exemple de ligne + colonne masquée ici
>>>> http://www.cijoint.fr/cjlink.php?file=cj200912/cij4pBClZv.xls
>>>> Pour Excel 2003 le maximum de produits à masquer est de 42. Etant
>>>> donné que tu as 6 colonnes par ligne de produits + les 4 colonnes de
>>>> début, on dépasse le maximum de 256 colonnes au 43ème produit
>>>> Philippe
>>>>
>>>> Lionel a écrit :
>>>>> Ok Philippe,
>>>>> là ca fonctionne
>>>>> En ce qui concerne mon probleme de colonne
>>>>> l'enonce est simple et un simple exemple va te faire comprendre
>>>>> dans le fichier que j'ai mis sur cijoint:
>>>>> la premiere ligne "pain au chocolat" de la feuille "liste produit"
>>>>> si je mets "non" pour qu'elle n'apparaisse plus dans la liste


comptage
>>> stock
>>>>> avec ton code ca fonctionne
>>>>> et bien il faudrait qu'en plus les cinque colonne E à J de la


feuille
>>>>> Surgeles soient masquées...
>>>>> et ce pour tous les produits sinon ca serait pas rigolo...
>>>>> Lionel
>>>>>
>>>>> "Corona" a écrit dans le message de
>>>>> news:
>>>>>> Bonsoir Lionel,
>>>>>> J'ai constaté effectivement un problème lorsque j'ai cliqué sur


le
>>>>>> bouton 'Mise à jour' de la feuille "Liste produit" mais comme le


code
>>>>>> source est protégé par un mot de passe, je n'ai pas put en


connaître
> la
>>>>>> raison.
>>>>>> Ton problème vient vraisemblablement d'une macro où il y a par
>>>>>> exemple une erreur de syntaxe (Un return ou un end if qui


manquerait)
>>>>>> Aussi, j'ai copié toutes les feuilles du classeur sur un nouveau
>>>>>> classeur afin de travailler sur un classeur épuré des codes VBA
>>> existant
>>>>>> et là je n'ai pas de problème avec le code que je t'ai envoyé,


les
>>>>>> lignes de la feuille "Feuille de comptage stock" sont bien masquées
> si
>>>>>> elle répondent aux conditions.
>>>>>> J'ai constaté aussi un phénomène curieux dans la validation de
>>>>>> données de la colonne 'A' de la feuille "Liste produit". Le choix


est
>>>>>> Oui chaque fois. J'ai donc vérifié la propriété 'source' de la
>>>>>> validation qui renvoie à 2 lignes de la même colonne (
> '=$A$224:$A$225'
>>>>>> j'avoue ne pas bien comprendre) mais bon pour mon test j'ai modifié
> ces
>>>>>> paramètres afin de pouvoir sélectionner 'Oui' ou 'Non'
>>>>>> Pour ton problème de masquage de colonnes en fonction de la


boucle
> i
>>>>>> je ne comprends pas très bien ce que tu veux sachant que i dans


cette
>>>>>> boucle balaie des lignes
>>>>>> Voici le lien où j'ai placé le fichier
>>>>>> http://www.cijoint.fr/cjlink.php?file=cj200912/cijiqs1jB2.xls
>>>>>> Philippe
>>>>>>
>>>>>> Lionel a écrit :
>>>>>>> voici son lien
>>>>>>> J'ai supprimé des pages pour le poids du fichier
>>>>>>> et il est totalement terminé ....
>>>>>>> http://www.cijoint.fr/cjlink.php?file=cj200912/cij27IVZag.xls
>>>>>>>
>>>>>>> Merci
>>>>>>> Lionel
>>>>>>>
>>>>>>> "Corona" a écrit dans le message de
>>>>>>> news:%
>>>>>>>> Lionel,
>>>>>>>> Pour le message d'erreur, c'est curieux.
>>>>>>>> Je viens de renommer les feuilles avec les mêmes noms et n'ai


eu
>>>>>>>> aucun soucis.
>>>>>>>> Pour les colonnes je regarderai tout à l'heure sauf si d'ici



> un
>>>>>>>> autre contributeur t'apporte la solution.
>>>>>>>> Si tu as l'occasion et si ce n'est pas confidentiel place ton
>>>>>>>> classeur sur cijoint.
>>>>>>>> Dim I As Integer
>>>>>>>> For I = 2 To 196
>>>>>>>> If Sheets("Liste Produits").Range("a" & I) = "Oui" Then
>>>>>>>> Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden


> >>>>> False
>>>>>>>> Else
>>>>>>>> Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden


> >>>>> True
>>>>>>>> End If
>>>>>>>> Next I
>>>>>>>> Philippe
>>>>>>>>
>>>>>>>> Lionel a écrit :
>>>>>>>>> re - Bonjour
>>>>>>>>>
>>>>>>>>> D'abord MERCI de prendre du temps
>>>>>>>>> Cela va sans dire mais c'est mieux en le disant
>>>>>>>>>
>>>>>>>>> j'obtiens un message d'erreur de syntaxe ! ??
>>>>>>>>> J'ai pourtant juste redonné le vrai nom des feuilles...
>>>>>>>>>
>>>>>>>>> For i = 2 To 196
>>>>>>>>> If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
>>>>>>>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden > > False
>>>>>>> Else
>>>>>>>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden > > True
>>>>>>>>> Next i
>>>>>>>>>
>>>>>>>>> Par ailleurs comment ajouter avec la meme condition fans la
> feuille3
>>>>>>> pour
>>>>>>>>> i = 2 que les colonnes EàJ soient invisibles si "non" et


visibles
>>> si
>>>>>>> "oui"
>>>>>>>>> i=3 que les colonnes KàP soient invisibles si "non " et visibles
> si
>>>>>>> "oui"
>>>>>>>>> j'ai essayé de rajouter dans la feuille "liste produits" 2
> colonnes
>>>>> qui
>>>>>>> pour
>>>>>>>>> chaque lignes donne la premiere et la derniere colonne à masquer
> ou
>>>>>>> afficher
>>>>>>>>> suivant le choix oui ou non
>>>>>>>>>
>>>>>>>>> Ex
>>>>>>>>>
>>>>>>>>> ligne 2
>>>>>>>>> colonne A choix oui ou non
>>>>>>>>> colonne B Nom Produit
>>>>>>>>> Colonne C 1ère colonne à masquer/afficher (E pour la ligne 2)
>>>>>>>>> Colonne D derniere colonnne à masquer/afficher(J pour la ligne


2)
>>>>>>>>>
>>>>>>>>> Tout ce que j'ai essayé foire....
>>>>>>>>>
>>>>>>>>> Sheet("feuil3").Columns(range("Liste Produits").range("c"& i):
>>>>>>> range("Liste
>>>>>>>>> Produits").range("d"& i)) .hidden=true
>>>>>>>>>
>>>>>>>>> ca ne fonctionne pas...
>>>>>>>>> si vous avez une idée ... je suis preneur
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> "Corona" a écrit dans le message de
>>>>>>>>> news:
>>>>>>>>>> Lionel,
>>>>>>>>>> J'avais mal lu la question
>>>>>>>>>> For i = 2 To 196
>>>>>>>>>> If Range("a" & i) = "Oui" Then
>>>>>>>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = True Else
>>>>>>>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = False
>>>>>>>>>> Next i
>>>>>>>>>> Philippe
>>>>>>>>>> Lionel a écrit :
>>>>>>>>>>> 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
Corona
Bonjour Lionel,
Je n'ai pas eu l'occasion de tester ton code étant donné que le
classeur que tu as déposé sur ci-joint ne contenait pas la feuille "SEC"
ni "FRAIS GENERAUX".
Toutefois en parcourant la lecture de ton code en vitesse, je
constate une erreur dans la première boucle
Sheets("Feuille de comptage stock").Row(i).EntireRow.Hidden = True
Il manque un S à rows il s'agit d'une collection rows et pas row une ligne
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = True
Philippe
Lionel a écrit :
Rebonsoir

Je vois pas ce qui bloque
Le message "impossible de definir la propriete hidden de la classe range " ?
alors que ca fonctionne poour la page "surgeles"
N'y aurait il pas un blocage lorsque une colonne est 'hidden' et qu'on
relance a nouveau la macro pour la cacher...?

J'ai opté pour conserver les boucles 2 to 42
en adaptant la variable i pour la page comptage stock et du coup on
conserve le benefice des boucles colonnes à cacher inchangées
Mais ca ne fonctionne que sur le papier car le message d'erreur apparait
quoique je fasse...

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").Row(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

"Corona" a écrit dans le message de
news:
Lionel,
C'est normal que cela ne fonctionne pas.
Tu m'as dit toi même que tu savais que la limite était de 42 produits
par feuille et que tu avais splité les produits sur plusieurs feuilles
Donc, ta boucle de lecture des lignes doit aller de 2 à n (n = 211 ?)
et tu dois adapter le calcul c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
en fonction des feuilles que tu visites.
C'est à dire que tu dois effectuer un calcul avec la variable i.
Philippe

Lionel a écrit :
C'est cool ! ca fonctionne pour la premiere page !
J'ai adapté pour les pages suivantes mais ca bloque des la deuxieme...

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

Je vois pas ce qui bloque
Le message "impossible de definir la propriete hidden de la classe range




" ?
alors que ca fonctionne poour la page "surgeles"
N'y aurait il pas un blocage lorsque une colonne est 'hidden' et qu'on
relance a nouveau la macro pour la cacher...?

Lionel


"Corona" a écrit dans le message de
news:OuY7$C%
Lionel,
Le code se trouve dans la feuille "Liste produits", exactement où tu
avais mis le tien. Clique sur le bouton "Mise à jour" et tu verras que
les colonnes correspondantes aux produits sont masquées si la ligne de
la colonne "A" indique "Non".
Philippe
Lionel a écrit :
Salut en ce dimanche morose
Le fichier envoyé ne fait rien ! pas de macro rien!!
en ce qui concerne le nombre de produits, je sais, 42 par feuille
c'est pour cela qu'il y en a plusieurs...feuilles ;-)
c'est aussi pour cela que dans liste produit j'ai mis dans 2 colonnes








le
premiere et la derniere colonne a masquer ou afficher pour chaque




produit...
il faut faire autant de boucles que de pages de 42 produits...
je ne sais pas comment appeler ces colonnes avec la fonction
Columns((sheets("liste produits").range("g"&i).value):(sheets("liste
produits").range("g"&i).value)).entirehidden=true
peut etre?

Lionel




"Corona" a écrit dans le message de
news:
Bonjour Lionel,
Le fichier avec exemple de ligne + colonne masquée ici
http://www.cijoint.fr/cjlink.php?file=cj200912/cij4pBClZv.xls
Pour Excel 2003 le maximum de produits à masquer est de 42. Etant
donné que tu as 6 colonnes par ligne de produits + les 4 colonnes de
début, on dépasse le maximum de 256 colonnes au 43ème produit
Philippe

Lionel a écrit :
Ok Philippe,
là ca fonctionne
En ce qui concerne mon probleme de colonne
l'enonce est simple et un simple exemple va te faire comprendre
dans le fichier que j'ai mis sur cijoint:
la premiere ligne "pain au chocolat" de la feuille "liste produit"
si je mets "non" pour qu'elle n'apparaisse plus dans la liste












comptage
stock
avec ton code ca fonctionne
et bien il faudrait qu'en plus les cinque colonne E à J de la












feuille
Surgeles soient masquées...
et ce pour tous les produits sinon ca serait pas rigolo...
Lionel

"Corona" a écrit dans le message de
news:
Bonsoir Lionel,
J'ai constaté effectivement un problème lorsque j'ai cliqué sur














le
bouton 'Mise à jour' de la feuille "Liste produit" mais comme le














code
source est protégé par un mot de passe, je n'ai pas put en














connaître
la
raison.
Ton problème vient vraisemblablement d'une macro où il y a par
exemple une erreur de syntaxe (Un return ou un end if qui














manquerait)
Aussi, j'ai copié toutes les feuilles du classeur sur un nouveau
classeur afin de travailler sur un classeur épuré des codes VBA






existant
et là je n'ai pas de problème avec le code que je t'ai envoyé,














les
lignes de la feuille "Feuille de comptage stock" sont bien masquées










si
elle répondent aux conditions.
J'ai constaté aussi un phénomène curieux dans la validation de
données de la colonne 'A' de la feuille "Liste produit". Le choix














est
Oui chaque fois. J'ai donc vérifié la propriété 'source' de la
validation qui renvoie à 2 lignes de la même colonne (










'=$A$224:$A$225'
j'avoue ne pas bien comprendre) mais bon pour mon test j'ai modifié










ces
paramètres afin de pouvoir sélectionner 'Oui' ou 'Non'
Pour ton problème de masquage de colonnes en fonction de la














boucle
i
je ne comprends pas très bien ce que tu veux sachant que i dans














cette
boucle balaie des lignes
Voici le lien où j'ai placé le fichier
http://www.cijoint.fr/cjlink.php?file=cj200912/cijiqs1jB2.xls
Philippe

Lionel a écrit :
voici son lien
J'ai supprimé des pages pour le poids du fichier
et il est totalement terminé ....
http://www.cijoint.fr/cjlink.php?file=cj200912/cij27IVZag.xls

Merci
Lionel

"Corona" a écrit dans le message de
news:%
Lionel,
Pour le message d'erreur, c'est curieux.
Je viens de renommer les feuilles avec les mêmes noms et n'ai


















eu
aucun soucis.
Pour les colonnes je regarderai tout à l'heure sauf si d'ici



















un
autre contributeur t'apporte la solution.
Si tu as l'occasion et si ce n'est pas confidentiel place ton
classeur sur cijoint.
Dim I As Integer
For I = 2 To 196
If Sheets("Liste Produits").Range("a" & I) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden


















>>>>>>> False
Else
Sheets("Feuille de comptage stock").Rows(I).EntireRow.Hidden


















>>>>>>> True
End If
Next I
Philippe

Lionel a écrit :
re - Bonjour

D'abord MERCI de prendre du temps
Cela va sans dire mais c'est mieux en le disant

j'obtiens un message d'erreur de syntaxe ! ??
J'ai pourtant juste redonné le vrai nom des feuilles...

For i = 2 To 196
If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden >>> False




Else
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden >>> True
Next i

Par ailleurs comment ajouter avec la meme condition fans la
















feuille3
pour
i = 2 que les colonnes EàJ soient invisibles si "non" et




















visibles
si
"oui"
i=3 que les colonnes KàP soient invisibles si "non " et visibles
















si
"oui"
j'ai essayé de rajouter dans la feuille "liste produits" 2
















colonnes
qui
pour
chaque lignes donne la premiere et la derniere colonne à masquer
















ou
afficher
suivant le choix oui ou non

Ex

ligne 2
colonne A choix oui ou non
colonne B Nom Produit
Colonne C 1ère colonne à masquer/afficher (E pour la ligne 2)
Colonne D derniere colonnne à masquer/afficher(J pour la ligne




















2)
Tout ce que j'ai essayé foire....

Sheet("feuil3").Columns(range("Liste Produits").range("c"& i):




range("Liste
Produits").range("d"& i)) .hidden=true

ca ne fonctionne pas...
si vous avez une idée ... je suis preneur


"Corona" a écrit dans le message de
news:
Lionel,
J'avais mal lu la question
For i = 2 To 196
If Range("a" & i) = "Oui" Then
Sheets("Feuil2").Rows(i).EntireRow.Hidden = True Else
Sheets("Feuil2").Rows(i).EntireRow.Hidden = False
Next i
Philippe
Lionel a écrit :
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,
Me revoila encore désolé !
J'ai remis le code a la fin du message et le probleme est
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

"Corona" a écrit dans le message de
news:
Bonjour Lionel,
Je n'ai pas eu l'occasion de tester ton code étant donné que le
classeur que tu as déposé sur ci-joint ne contenait pas la feuille "SEC"
ni "FRAIS GENERAUX".
Toutefois en parcourant la lecture de ton code en vitesse, je
constate une erreur dans la première boucle
Sheets("Feuille de comptage stock").Row(i).EntireRow.Hidden = True
Il manque un S à rows il s'agit d'une collection rows et pas row une ligne
Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden = True
Philippe
Lionel a écrit :
> Rebonsoir
>
> Je vois pas ce qui bloque
> Le message "impossible de definir la propriete hidden de la classe range


" ?
> alors que ca fonctionne poour la page "surgeles"
> N'y aurait il pas un blocage lorsque une colonne est 'hidden' et qu'on
> relance a nouveau la macro pour la cacher...?
>
> J'ai opté pour conserver les boucles 2 to 42
> en adaptant la variable i pour la page comptage stock et du coup on
> conserve le benefice des boucles colonnes à cacher inchangées
> Mais ca ne fonctionne que sur le papier car le message d'erreur apparait
> quoique je fasse...
>
> 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").Row(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
>
> "Corona" a écrit dans le message de
> news:
>> Lionel,
>> C'est normal que cela ne fonctionne pas.
>> Tu m'as dit toi même que tu savais que la limite était de 42


produits
>> par feuille et que tu avais splité les produits sur plusieurs feuilles
>> Donc, ta boucle de lecture des lignes doit aller de 2 à n (n = 211


?)
>> et tu dois adapter le calcul c = ((i - 1) * 6) - 1 To ((i - 1) * 6) + 5
>> en fonction des feuilles que tu visites.
>> C'est à dire que tu dois effectuer un calcul avec la variable i.
>> Philippe
>>
>> Lionel a écrit :
>>> C'est cool ! ca fonctionne pour la premiere page !
>>> J'ai adapté pour les pages suivantes mais ca bloque des la deuxieme...
>>>
>>> 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
>>>
>>> Je vois pas ce qui bloque
>>> Le message "impossible de definir la propriete hidden de la classe


range
> " ?
>>> alors que ca fonctionne poour la page "surgeles"
>>> N'y aurait il pas un blocage lorsque une colonne est 'hidden' et qu'on
>>> relance a nouveau la macro pour la cacher...?
>>>
>>> Lionel
>>>
>>>
>>> "Corona" a écrit dans le message de
>>> news:OuY7$C%
>>>> Lionel,
>>>> Le code se trouve dans la feuille "Liste produits", exactement où


tu
>>>> avais mis le tien. Clique sur le bouton "Mise à jour" et tu verras


que
>>>> les colonnes correspondantes aux produits sont masquées si la ligne


de
>>>> la colonne "A" indique "Non".
>>>> Philippe
>>>> Lionel a écrit :
>>>>> Salut en ce dimanche morose
>>>>> Le fichier envoyé ne fait rien ! pas de macro rien!!
>>>>> en ce qui concerne le nombre de produits, je sais, 42 par feuille
>>>>> c'est pour cela qu'il y en a plusieurs...feuilles ;-)
>>>>> c'est aussi pour cela que dans liste produit j'ai mis dans 2


colonnes
> le
>>>>> premiere et la derniere colonne a masquer ou afficher pour chaque
>>> produit...
>>>>> il faut faire autant de boucles que de pages de 42 produits...
>>>>> je ne sais pas comment appeler ces colonnes avec la fonction
>>>>> Columns((sheets("liste produits").range("g"&i).value):(sheets("liste
>>>>> produits").range("g"&i).value)).entirehidden=true
>>>>> peut etre?
>>>>>
>>>>> Lionel
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> "Corona" a écrit dans le message de
>>>>> news:
>>>>>> Bonjour Lionel,
>>>>>> Le fichier avec exemple de ligne + colonne masquée ici
>>>>>> http://www.cijoint.fr/cjlink.php?file=cj200912/cij4pBClZv.xls
>>>>>> Pour Excel 2003 le maximum de produits à masquer est de 42.


Etant
>>>>>> donné que tu as 6 colonnes par ligne de produits + les 4 colonnes


de
>>>>>> début, on dépasse le maximum de 256 colonnes au 43ème produit
>>>>>> Philippe
>>>>>>
>>>>>> Lionel a écrit :
>>>>>>> Ok Philippe,
>>>>>>> là ca fonctionne
>>>>>>> En ce qui concerne mon probleme de colonne
>>>>>>> l'enonce est simple et un simple exemple va te faire comprendre
>>>>>>> dans le fichier que j'ai mis sur cijoint:
>>>>>>> la premiere ligne "pain au chocolat" de la feuille "liste produit"
>>>>>>> si je mets "non" pour qu'elle n'apparaisse plus dans la liste
> comptage
>>>>> stock
>>>>>>> avec ton code ca fonctionne
>>>>>>> et bien il faudrait qu'en plus les cinque colonne E à J de la
> feuille
>>>>>>> Surgeles soient masquées...
>>>>>>> et ce pour tous les produits sinon ca serait pas rigolo...
>>>>>>> Lionel
>>>>>>>
>>>>>>> "Corona" a écrit dans le message de
>>>>>>> news:
>>>>>>>> Bonsoir Lionel,
>>>>>>>> J'ai constaté effectivement un problème lorsque j'ai cliqué


sur
> le
>>>>>>>> bouton 'Mise à jour' de la feuille "Liste produit" mais comme le
> code
>>>>>>>> source est protégé par un mot de passe, je n'ai pas put en
> connaître
>>> la
>>>>>>>> raison.
>>>>>>>> Ton problème vient vraisemblablement d'une macro où il y a par
>>>>>>>> exemple une erreur de syntaxe (Un return ou un end if qui
> manquerait)
>>>>>>>> Aussi, j'ai copié toutes les feuilles du classeur sur un


nouveau
>>>>>>>> classeur afin de travailler sur un classeur épuré des codes VBA
>>>>> existant
>>>>>>>> et là je n'ai pas de problème avec le code que je t'ai envoyé,
> les
>>>>>>>> lignes de la feuille "Feuille de comptage stock" sont bien


masquées
>>> si
>>>>>>>> elle répondent aux conditions.
>>>>>>>> J'ai constaté aussi un phénomène curieux dans la validation de
>>>>>>>> données de la colonne 'A' de la feuille "Liste produit". Le choix
> est
>>>>>>>> Oui chaque fois. J'ai donc vérifié la propriété 'source' de la
>>>>>>>> validation qui renvoie à 2 lignes de la même colonne (
>>> '=$A$224:$A$225'
>>>>>>>> j'avoue ne pas bien comprendre) mais bon pour mon test j'ai


modifié
>>> ces
>>>>>>>> paramètres afin de pouvoir sélectionner 'Oui' ou 'Non'
>>>>>>>> Pour ton problème de masquage de colonnes en fonction de la
> boucle
>>> i
>>>>>>>> je ne comprends pas très bien ce que tu veux sachant que i dans
> cette
>>>>>>>> boucle balaie des lignes
>>>>>>>> Voici le lien où j'ai placé le fichier
>>>>>>>> http://www.cijoint.fr/cjlink.php?file=cj200912/cijiqs1jB2.xls
>>>>>>>> Philippe
>>>>>>>>
>>>>>>>> Lionel a écrit :
>>>>>>>>> voici son lien
>>>>>>>>> J'ai supprimé des pages pour le poids du fichier
>>>>>>>>> et il est totalement terminé ....
>>>>>>>>> http://www.cijoint.fr/cjlink.php?file=cj200912/cij27IVZag.xls
>>>>>>>>>
>>>>>>>>> Merci
>>>>>>>>> Lionel
>>>>>>>>>
>>>>>>>>> "Corona" a écrit dans le message de
>>>>>>>>> news:%
>>>>>>>>>> Lionel,
>>>>>>>>>> Pour le message d'erreur, c'est curieux.
>>>>>>>>>> Je viens de renommer les feuilles avec les mêmes noms et


n'ai
> eu
>>>>>>>>>> aucun soucis.
>>>>>>>>>> Pour les colonnes je regarderai tout à l'heure sauf si d'ici
> là
>>> un
>>>>>>>>>> autre contributeur t'apporte la solution.
>>>>>>>>>> Si tu as l'occasion et si ce n'est pas confidentiel place


ton
>>>>>>>>>> classeur sur cijoint.
>>>>>>>>>> Dim I As Integer
>>>>>>>>>> For I = 2 To 196
>>>>>>>>>> If Sheets("Liste Produits").Range("a" & I) = "Oui" Then
>>>>>>>>>> Sheets("Feuille de comptage


stock").Rows(I).EntireRow.Hidden
> > >>>>>>> False
>>>>>>>>>> Else
>>>>>>>>>> Sheets("Feuille de comptage


stock").Rows(I).EntireRow.Hidden
> > >>>>>>> True
>>>>>>>>>> End If
>>>>>>>>>> Next I
>>>>>>>>>> Philippe
>>>>>>>>>>
>>>>>>>>>> Lionel a écrit :
>>>>>>>>>>> re - Bonjour
>>>>>>>>>>>
>>>>>>>>>>> D'abord MERCI de prendre du temps
>>>>>>>>>>> Cela va sans dire mais c'est mieux en le disant
>>>>>>>>>>>
>>>>>>>>>>> j'obtiens un message d'erreur de syntaxe ! ??
>>>>>>>>>>> J'ai pourtant juste redonné le vrai nom des feuilles...
>>>>>>>>>>>
>>>>>>>>>>> For i = 2 To 196
>>>>>>>>>>> If Sheets("Liste Produits").Range("a" & i) = "Oui" Then
>>>>>>>>>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden > >>> False
>>>>>>>>> Else
>>>>>>>>>>> Sheets("Feuille de comptage stock").Rows(i).EntireRow.Hidden > >>> True
>>>>>>>>>>> Next i
>>>>>>>>>>>
>>>>>>>>>>> Par ailleurs comment ajouter avec la meme condition fans la
>>> feuille3
>>>>>>>>> pour
>>>>>>>>>>> i = 2 que les colonnes EàJ soient invisibles si "non" et
> visibles
>>>>> si
>>>>>>>>> "oui"
>>>>>>>>>>> i=3 que les colonnes KàP soient invisibles si "non " et


visibles
>>> si
>>>>>>>>> "oui"
>>>>>>>>>>> j'ai essayé de rajouter dans la feuille "liste produits" 2
>>> colonnes
>>>>>>> qui
>>>>>>>>> pour
>>>>>>>>>>> chaque lignes donne la premiere et la derniere colonne à


masquer
>>> ou
>>>>>>>>> afficher
>>>>>>>>>>> suivant le choix oui ou non
>>>>>>>>>>>
>>>>>>>>>>> Ex
>>>>>>>>>>>
>>>>>>>>>>> ligne 2
>>>>>>>>>>> colonne A choix oui ou non
>>>>>>>>>>> colonne B Nom Produit
>>>>>>>>>>> Colonne C 1ère colonne à masquer/afficher (E pour la ligne 2)
>>>>>>>>>>> Colonne D derniere colonnne à masquer/afficher(J pour la ligne
> 2)
>>>>>>>>>>> Tout ce que j'ai essayé foire....
>>>>>>>>>>>
>>>>>>>>>>> Sheet("feuil3").Columns(range("Liste Produits").range("c"& i):
>>>>>>>>> range("Liste
>>>>>>>>>>> Produits").range("d"& i)) .hidden=true
>>>>>>>>>>>
>>>>>>>>>>> ca ne fonctionne pas...
>>>>>>>>>>> si vous avez une idée ... je suis preneur
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> "Corona" a écrit dans le message de
>>>>>>>>>>> news:
>>>>>>>>>>>> Lionel,
>>>>>>>>>>>> J'avais mal lu la question
>>>>>>>>>>>> For i = 2 To 196
>>>>>>>>>>>> If Range("a" & i) = "Oui" Then
>>>>>>>>>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = True Else
>>>>>>>>>>>> Sheets("Feuil2").Rows(i).EntireRow.Hidden = False
>>>>>>>>>>>> Next i
>>>>>>>>>>>> Philippe
>>>>>>>>>>>> Lionel a écrit :
>>>>>>>>>>>>> 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
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>
>
>


1 2 3