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

selection feuilles multi critères

7 réponses
Avatar
ed
bonjour,
Me revoici avec une problématique concernant la sélection de feuilles
J'ai des private sub avec sélection de feuilles selon les années.
Je souhaite rajouter une autre condition.

Si le mois de janvier est sélectionné ET un nom de client donné, alors les
feuilles du client du mois de janvier doivent apparaitre
Si le mois de janvier est sélectionné ET la valeur TOUT est sélectionnée,
alors toutes les feuilles du mois de janvier doivent apparaître.

Pour l'instant seule cette private sub fonctionne (une par mois)
Private Sub CheckBox1_Click()
For feuille= 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(feuille).Visible = CBool(CheckBox1.Value)
Next
End Sub


J'ai imaginé une autre
Private Sub List_Select()
Clt = Range("k15")
For feuille= 1 To Sheets.Count - 3
If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False
Next
End Sub

1. Le Message "Private Sub List_Select ne fonctionne pas,
Quand je mets "sub Client()" et que j'appelle ma macro dans la premiere
private sub, la sélection ne correspond pas.

J'ai pensé réunir les deux macros de la sorte... mais cela fonctionne tjs pas.
Private Sub CheckBox1_Click()
Clt = Range("k15")
For feuille = 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(facture).Visible = CBool(CheckBox1.Value)
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
True
Next
End Sub


Pourriez vous m'aider ?
Merci d'Avance
ed

7 réponses

Avatar
FFO
Salut ed

je n'ai pas essayé tes codes mais à leur seule lecture je te proposerai de
modifier ces lignes :

If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False

ainsi

If Clt = "TOUT" Then
ThisWorkbook.Sheets(facture).Visible = True
End if
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If
If Clt <> Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = False
End if


ou pour le 2° code les lignes :

If mois= 2701 Then
Sheets(facture).Visible = CBool(CheckBox1.Value)
End If
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If

Peut être celà devrait-il mieux fonctionner

A essayer

Dis moi !!!


bonjour,
Me revoici avec une problématique concernant la sélection de feuilles
J'ai des private sub avec sélection de feuilles selon les années.
Je souhaite rajouter une autre condition.

Si le mois de janvier est sélectionné ET un nom de client donné, alors les
feuilles du client du mois de janvier doivent apparaitre
Si le mois de janvier est sélectionné ET la valeur TOUT est sélectionnée,
alors toutes les feuilles du mois de janvier doivent apparaître.

Pour l'instant seule cette private sub fonctionne (une par mois)
Private Sub CheckBox1_Click()
For feuille= 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(feuille).Visible = CBool(CheckBox1.Value)
Next
End Sub


J'ai imaginé une autre
Private Sub List_Select()
Clt = Range("k15")
For feuille= 1 To Sheets.Count - 3
If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False
Next
End Sub

1. Le Message "Private Sub List_Select ne fonctionne pas,
Quand je mets "sub Client()" et que j'appelle ma macro dans la premiere
private sub, la sélection ne correspond pas.

J'ai pensé réunir les deux macros de la sorte... mais cela fonctionne tjs pas.
Private Sub CheckBox1_Click()
Clt = Range("k15")
For feuille = 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(facture).Visible = CBool(CheckBox1.Value)
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
True
Next
End Sub


Pourriez vous m'aider ?
Merci d'Avance
ed



Avatar
ed
Merci FFO

Visual Basic me répond :
"erreur de compilation : En If sans bloc If...
ed

"FFO" wrote:

Salut ed

je n'ai pas essayé tes codes mais à leur seule lecture je te proposerai de
modifier ces lignes :

If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False

ainsi

If Clt = "TOUT" Then
ThisWorkbook.Sheets(facture).Visible = True
End if
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If
If Clt <> Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = False
End if


ou pour le 2° code les lignes :

If mois= 2701 Then
Sheets(facture).Visible = CBool(CheckBox1.Value)
End If
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If

Peut être celà devrait-il mieux fonctionner

A essayer

Dis moi !!!


bonjour,
Me revoici avec une problématique concernant la sélection de feuilles
J'ai des private sub avec sélection de feuilles selon les années.
Je souhaite rajouter une autre condition.

Si le mois de janvier est sélectionné ET un nom de client donné, alors les
feuilles du client du mois de janvier doivent apparaitre
Si le mois de janvier est sélectionné ET la valeur TOUT est sélectionnée,
alors toutes les feuilles du mois de janvier doivent apparaître.

Pour l'instant seule cette private sub fonctionne (une par mois)
Private Sub CheckBox1_Click()
For feuille= 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(feuille).Visible = CBool(CheckBox1.Value)
Next
End Sub


J'ai imaginé une autre
Private Sub List_Select()
Clt = Range("k15")
For feuille= 1 To Sheets.Count - 3
If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False
Next
End Sub

1. Le Message "Private Sub List_Select ne fonctionne pas,
Quand je mets "sub Client()" et que j'appelle ma macro dans la premiere
private sub, la sélection ne correspond pas.

J'ai pensé réunir les deux macros de la sorte... mais cela fonctionne tjs pas.
Private Sub CheckBox1_Click()
Clt = Range("k15")
For feuille = 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(facture).Visible = CBool(CheckBox1.Value)
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
True
Next
End Sub


Pourriez vous m'aider ?
Merci d'Avance
ed





Avatar
FFO
Rebonjour à toi
as tu bien mis les lignes de cette manière :

If Clt = "TOUT" Then

ThisWorkbook.Sheets(facture).Visible = True

End if

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

If Clt <> Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = False

End if


ou

If mois= 2701 Then

Sheets(facture).Visible = CBool(CheckBox1.Value)

End If

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

Il est important de les décliner ainsi l'une sous l'autre !!!!

J'ai essayez sans aucune difficulté ces codes
Il doit en être de même pour toi !!!!

Dis moi !!!


Merci FFO

Visual Basic me répond :
"erreur de compilation : En If sans bloc If...
ed

"FFO" wrote:

Salut ed

je n'ai pas essayé tes codes mais à leur seule lecture je te proposerai de
modifier ces lignes :

If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False

ainsi

If Clt = "TOUT" Then
ThisWorkbook.Sheets(facture).Visible = True
End if
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If
If Clt <> Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = False
End if


ou pour le 2° code les lignes :

If mois= 2701 Then
Sheets(facture).Visible = CBool(CheckBox1.Value)
End If
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If

Peut être celà devrait-il mieux fonctionner

A essayer

Dis moi !!!


bonjour,
Me revoici avec une problématique concernant la sélection de feuilles
J'ai des private sub avec sélection de feuilles selon les années.
Je souhaite rajouter une autre condition.

Si le mois de janvier est sélectionné ET un nom de client donné, alors les
feuilles du client du mois de janvier doivent apparaitre
Si le mois de janvier est sélectionné ET la valeur TOUT est sélectionnée,
alors toutes les feuilles du mois de janvier doivent apparaître.

Pour l'instant seule cette private sub fonctionne (une par mois)
Private Sub CheckBox1_Click()
For feuille= 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(feuille).Visible = CBool(CheckBox1.Value)
Next
End Sub


J'ai imaginé une autre
Private Sub List_Select()
Clt = Range("k15")
For feuille= 1 To Sheets.Count - 3
If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False
Next
End Sub

1. Le Message "Private Sub List_Select ne fonctionne pas,
Quand je mets "sub Client()" et que j'appelle ma macro dans la premiere
private sub, la sélection ne correspond pas.

J'ai pensé réunir les deux macros de la sorte... mais cela fonctionne tjs pas.
Private Sub CheckBox1_Click()
Clt = Range("k15")
For feuille = 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(facture).Visible = CBool(CheckBox1.Value)
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
True
Next
End Sub


Pourriez vous m'aider ?
Merci d'Avance
ed







Avatar
ed
Merci FFO ! Je viens encore d'apprendre qqchose.
Sauf que ces fonctions ne font pas ET mais plutot OU... La est mon souci.
J'essaie actuellement :

If Clt = Sheets(feuille).[F1].Value & CBool(CheckBox1.Value) Then
Sheets(feuille).Visible = True
End If

Mais cela ne fonctionne pas... encore... Je n'ai pas encore trouvé la bonne
expression...
Bien cordialement
ed

"FFO" wrote:

Rebonjour à toi
as tu bien mis les lignes de cette manière :

If Clt = "TOUT" Then

ThisWorkbook.Sheets(facture).Visible = True

End if

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

If Clt <> Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = False

End if


ou

If mois= 2701 Then

Sheets(facture).Visible = CBool(CheckBox1.Value)

End If

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

Il est important de les décliner ainsi l'une sous l'autre !!!!

J'ai essayez sans aucune difficulté ces codes
Il doit en être de même pour toi !!!!

Dis moi !!!


Merci FFO

Visual Basic me répond :
"erreur de compilation : En If sans bloc If...
ed

"FFO" wrote:

Salut ed

je n'ai pas essayé tes codes mais à leur seule lecture je te proposerai de
modifier ces lignes :

If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False

ainsi

If Clt = "TOUT" Then
ThisWorkbook.Sheets(facture).Visible = True
End if
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If
If Clt <> Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = False
End if


ou pour le 2° code les lignes :

If mois= 2701 Then
Sheets(facture).Visible = CBool(CheckBox1.Value)
End If
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If

Peut être celà devrait-il mieux fonctionner

A essayer

Dis moi !!!


bonjour,
Me revoici avec une problématique concernant la sélection de feuilles
J'ai des private sub avec sélection de feuilles selon les années.
Je souhaite rajouter une autre condition.

Si le mois de janvier est sélectionné ET un nom de client donné, alors les
feuilles du client du mois de janvier doivent apparaitre
Si le mois de janvier est sélectionné ET la valeur TOUT est sélectionnée,
alors toutes les feuilles du mois de janvier doivent apparaître.

Pour l'instant seule cette private sub fonctionne (une par mois)
Private Sub CheckBox1_Click()
For feuille= 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(feuille).Visible = CBool(CheckBox1.Value)
Next
End Sub


J'ai imaginé une autre
Private Sub List_Select()
Clt = Range("k15")
For feuille= 1 To Sheets.Count - 3
If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False
Next
End Sub

1. Le Message "Private Sub List_Select ne fonctionne pas,
Quand je mets "sub Client()" et que j'appelle ma macro dans la premiere
private sub, la sélection ne correspond pas.

J'ai pensé réunir les deux macros de la sorte... mais cela fonctionne tjs pas.
Private Sub CheckBox1_Click()
Clt = Range("k15")
For feuille = 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(facture).Visible = CBool(CheckBox1.Value)
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
True
Next
End Sub


Pourriez vous m'aider ?
Merci d'Avance
ed









Avatar
ed
Merci FFO !
Tu m'as permis de trouver la solution gràce à nos échanges.
J'ai imbriqué trois if

Private Sub CheckBox1_Click()
Clt = Range("k2")
For feuille= 1 To Sheets.Count - 3
code = Sheets(feuille).[a2].Value
result = code & valfed
If Clt = 0 And valfed = 01 Then
Sheets(feuille).Visible = CBool(CheckBox1.Value)
Else
If result <> Clt & valfed Then
Sheets(feuille).Visible = False
Else
If Clt = 0 Or valfed = 01 Then
Sheets(feuille).Visible = CBool(CheckBox1.Value)
End If
End If
End If
Next
End Sub

Ce n'est pas très optimisé comme macro, (12 private sub de même) mais ça
marche, à condition de cliquer sur la checkbox pour revalider le choix Clt.

ed


"ed" wrote:

Merci FFO ! Je viens encore d'apprendre qqchose.
Sauf que ces fonctions ne font pas ET mais plutot OU... La est mon souci.
J'essaie actuellement :

If Clt = Sheets(feuille).[F1].Value & CBool(CheckBox1.Value) Then
Sheets(feuille).Visible = True
End If

Mais cela ne fonctionne pas... encore... Je n'ai pas encore trouvé la bonne
expression...
Bien cordialement
ed

"FFO" wrote:

Rebonjour à toi
as tu bien mis les lignes de cette manière :

If Clt = "TOUT" Then

ThisWorkbook.Sheets(facture).Visible = True

End if

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

If Clt <> Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = False

End if


ou

If mois= 2701 Then

Sheets(facture).Visible = CBool(CheckBox1.Value)

End If

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

Il est important de les décliner ainsi l'une sous l'autre !!!!

J'ai essayez sans aucune difficulté ces codes
Il doit en être de même pour toi !!!!

Dis moi !!!


Merci FFO

Visual Basic me répond :
"erreur de compilation : En If sans bloc If...
ed

"FFO" wrote:

Salut ed

je n'ai pas essayé tes codes mais à leur seule lecture je te proposerai de
modifier ces lignes :

If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False

ainsi

If Clt = "TOUT" Then
ThisWorkbook.Sheets(facture).Visible = True
End if
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If
If Clt <> Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = False
End if


ou pour le 2° code les lignes :

If mois= 2701 Then
Sheets(facture).Visible = CBool(CheckBox1.Value)
End If
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If

Peut être celà devrait-il mieux fonctionner

A essayer

Dis moi !!!


bonjour,
Me revoici avec une problématique concernant la sélection de feuilles
J'ai des private sub avec sélection de feuilles selon les années.
Je souhaite rajouter une autre condition.

Si le mois de janvier est sélectionné ET un nom de client donné, alors les
feuilles du client du mois de janvier doivent apparaitre
Si le mois de janvier est sélectionné ET la valeur TOUT est sélectionnée,
alors toutes les feuilles du mois de janvier doivent apparaître.

Pour l'instant seule cette private sub fonctionne (une par mois)
Private Sub CheckBox1_Click()
For feuille= 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(feuille).Visible = CBool(CheckBox1.Value)
Next
End Sub


J'ai imaginé une autre
Private Sub List_Select()
Clt = Range("k15")
For feuille= 1 To Sheets.Count - 3
If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False
Next
End Sub

1. Le Message "Private Sub List_Select ne fonctionne pas,
Quand je mets "sub Client()" et que j'appelle ma macro dans la premiere
private sub, la sélection ne correspond pas.

J'ai pensé réunir les deux macros de la sorte... mais cela fonctionne tjs pas.
Private Sub CheckBox1_Click()
Clt = Range("k15")
For feuille = 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(facture).Visible = CBool(CheckBox1.Value)
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
True
Next
End Sub


Pourriez vous m'aider ?
Merci d'Avance
ed











Avatar
FFO
Rebonjour ed
Tu es comme moi tu en apprends tous les jours

Effectivement tous ces If avec End if en correspondance mis les uns derriere
les autres sont des conditions associées à "OU" et non "ET" mais avec chacune
sa propre conséquence

Si tu les associes avec le même If/End If ainsi :

If Clt = "TOUT" or Clt = Sheets(feuille).[F1].Value Then

ThisWorkbook.Sheets(facture).Visible = True

Elles seront aussi associées à un "OU" mais avec la seule et même conséquence

Si tu souhaites les associer à "ET" tu dois les inclure dans une seule
condition
comme ceci :

If Clt = "TOUT" and Clt = Sheets(feuille).[F1].Value Then

ThisWorkbook.Sheets(facture).Visible = True

End if

Par exemple

Mais il est nécessaire que les conséquences soient identiques et que les
conditions ne soient pas contradictoires

Ce qui n'est pas le cas dans tes différents If/End If

If Clt = Sheets(feuille).[F1].Value Then
If Clt <> Sheets(feuille).[F1].Value Then
sont des conditions contradictoires

Sheets(feuille).Visible = True
Sheets(feuille).Visible = False

Sont des conséquences opposées

IL est donc impossible de les associer à un "ET"


J'espère qu'avec toutes ces explications tu vas pouvoir réaliser le bon code

A ta disposition pour t'aider



Merci FFO ! Je viens encore d'apprendre qqchose.
Sauf que ces fonctions ne font pas ET mais plutot OU... La est mon souci.
J'essaie actuellement :

If Clt = Sheets(feuille).[F1].Value & CBool(CheckBox1.Value) Then
Sheets(feuille).Visible = True
End If

Mais cela ne fonctionne pas... encore... Je n'ai pas encore trouvé la bonne
expression...
Bien cordialement
ed

"FFO" wrote:

Rebonjour à toi
as tu bien mis les lignes de cette manière :

If Clt = "TOUT" Then

ThisWorkbook.Sheets(facture).Visible = True

End if

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

If Clt <> Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = False

End if


ou

If mois= 2701 Then

Sheets(facture).Visible = CBool(CheckBox1.Value)

End If

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

Il est important de les décliner ainsi l'une sous l'autre !!!!

J'ai essayez sans aucune difficulté ces codes
Il doit en être de même pour toi !!!!

Dis moi !!!


Merci FFO

Visual Basic me répond :
"erreur de compilation : En If sans bloc If...
ed

"FFO" wrote:

Salut ed

je n'ai pas essayé tes codes mais à leur seule lecture je te proposerai de
modifier ces lignes :

If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False

ainsi

If Clt = "TOUT" Then
ThisWorkbook.Sheets(facture).Visible = True
End if
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If
If Clt <> Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = False
End if


ou pour le 2° code les lignes :

If mois= 2701 Then
Sheets(facture).Visible = CBool(CheckBox1.Value)
End If
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If

Peut être celà devrait-il mieux fonctionner

A essayer

Dis moi !!!


bonjour,
Me revoici avec une problématique concernant la sélection de feuilles
J'ai des private sub avec sélection de feuilles selon les années.
Je souhaite rajouter une autre condition.

Si le mois de janvier est sélectionné ET un nom de client donné, alors les
feuilles du client du mois de janvier doivent apparaitre
Si le mois de janvier est sélectionné ET la valeur TOUT est sélectionnée,
alors toutes les feuilles du mois de janvier doivent apparaître.

Pour l'instant seule cette private sub fonctionne (une par mois)
Private Sub CheckBox1_Click()
For feuille= 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(feuille).Visible = CBool(CheckBox1.Value)
Next
End Sub


J'ai imaginé une autre
Private Sub List_Select()
Clt = Range("k15")
For feuille= 1 To Sheets.Count - 3
If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False
Next
End Sub

1. Le Message "Private Sub List_Select ne fonctionne pas,
Quand je mets "sub Client()" et que j'appelle ma macro dans la premiere
private sub, la sélection ne correspond pas.

J'ai pensé réunir les deux macros de la sorte... mais cela fonctionne tjs pas.
Private Sub CheckBox1_Click()
Clt = Range("k15")
For feuille = 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(facture).Visible = CBool(CheckBox1.Value)
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
True
Next
End Sub


Pourriez vous m'aider ?
Merci d'Avance
ed











Avatar
FFO
Rebonjour ed

Trés heureux de t'avoir aidé et que tu es pu par toi même réaliser ton code

A ta disposition pour d'autres questions


Merci FFO !
Tu m'as permis de trouver la solution gràce à nos échanges.
J'ai imbriqué trois if

Private Sub CheckBox1_Click()
Clt = Range("k2")
For feuille= 1 To Sheets.Count - 3
code = Sheets(feuille).[a2].Value
result = code & valfed
If Clt = 0 And valfed = 01 Then
Sheets(feuille).Visible = CBool(CheckBox1.Value)
Else
If result <> Clt & valfed Then
Sheets(feuille).Visible = False
Else
If Clt = 0 Or valfed = 01 Then
Sheets(feuille).Visible = CBool(CheckBox1.Value)
End If
End If
End If
Next
End Sub

Ce n'est pas très optimisé comme macro, (12 private sub de même) mais ça
marche, à condition de cliquer sur la checkbox pour revalider le choix Clt.

ed


"ed" wrote:

Merci FFO ! Je viens encore d'apprendre qqchose.
Sauf que ces fonctions ne font pas ET mais plutot OU... La est mon souci.
J'essaie actuellement :

If Clt = Sheets(feuille).[F1].Value & CBool(CheckBox1.Value) Then
Sheets(feuille).Visible = True
End If

Mais cela ne fonctionne pas... encore... Je n'ai pas encore trouvé la bonne
expression...
Bien cordialement
ed

"FFO" wrote:

Rebonjour à toi
as tu bien mis les lignes de cette manière :

If Clt = "TOUT" Then

ThisWorkbook.Sheets(facture).Visible = True

End if

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

If Clt <> Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = False

End if


ou

If mois= 2701 Then

Sheets(facture).Visible = CBool(CheckBox1.Value)

End If

If Clt = Sheets(feuille).[F1].Value Then

Sheets(feuille).Visible = True

End If

Il est important de les décliner ainsi l'une sous l'autre !!!!

J'ai essayez sans aucune difficulté ces codes
Il doit en être de même pour toi !!!!

Dis moi !!!


Merci FFO

Visual Basic me répond :
"erreur de compilation : En If sans bloc If...
ed

"FFO" wrote:

Salut ed

je n'ai pas essayé tes codes mais à leur seule lecture je te proposerai de
modifier ces lignes :

If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False

ainsi

If Clt = "TOUT" Then
ThisWorkbook.Sheets(facture).Visible = True
End if
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If
If Clt <> Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = False
End if


ou pour le 2° code les lignes :

If mois= 2701 Then
Sheets(facture).Visible = CBool(CheckBox1.Value)
End If
If Clt = Sheets(feuille).[F1].Value Then
Sheets(feuille).Visible = True
End If

Peut être celà devrait-il mieux fonctionner

A essayer

Dis moi !!!


bonjour,
Me revoici avec une problématique concernant la sélection de feuilles
J'ai des private sub avec sélection de feuilles selon les années.
Je souhaite rajouter une autre condition.

Si le mois de janvier est sélectionné ET un nom de client donné, alors les
feuilles du client du mois de janvier doivent apparaitre
Si le mois de janvier est sélectionné ET la valeur TOUT est sélectionnée,
alors toutes les feuilles du mois de janvier doivent apparaître.

Pour l'instant seule cette private sub fonctionne (une par mois)
Private Sub CheckBox1_Click()
For feuille= 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(feuille).Visible = CBool(CheckBox1.Value)
Next
End Sub


J'ai imaginé une autre
Private Sub List_Select()
Clt = Range("k15")
For feuille= 1 To Sheets.Count - 3
If Clt = "TOUT" Then ThisWorkbook.Sheets(facture).Visible = True
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible = True
If Clt <> Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
False
Next
End Sub

1. Le Message "Private Sub List_Select ne fonctionne pas,
Quand je mets "sub Client()" et que j'appelle ma macro dans la premiere
private sub, la sélection ne correspond pas.

J'ai pensé réunir les deux macros de la sorte... mais cela fonctionne tjs pas.
Private Sub CheckBox1_Click()
Clt = Range("k15")
For feuille = 1 To Sheets.Count - 3
If mois= 2701 Then Sheets(facture).Visible = CBool(CheckBox1.Value)
If Clt = Sheets(feuille).[F1].Value Then Sheets(feuille).Visible =
True
Next
End Sub


Pourriez vous m'aider ?
Merci d'Avance
ed