Bonjour,
Je dispose d'un tableau L(300)xC(100) dont mes données d'entrées sont mes colonnes et mes critères sont en ligne : d'après ce que j'ai lu sur internet, pour ce genre de configuration, la fonction "filtrer par ..." n'est plus adaptée car elle permet uniquement de filtrer par ligne (? corriger si nécessaire).
Je me lance donc donc des subroutines dans lesquelles je souhaite afficher ou ne pas afficher mes colonnes suivants mes critères de recherches:
1. CRITERE 1: Valeurs de la ligne 10 = entre 190 et 200 (exemple: si L10xC12 = 198, j'affiche la colonne C12 en entier, sinon je masque les autres colonnes ne répondant pas au critère1).
2. CRITERE 2: Texte de la ligne 1 = "High" / "Low" / ou "Average" (exemple: si L1xC5 = "Low", j'affiche la colonne C5 en entier, sinon je masque les autres colonnes ne répondant pas au critère2).
Ces routines doivent être indépendantes : je veux pouvoir chercher avec le critère 1 ou le critère 2 (séparément).
Mais également avec les critère 1 ET 2 simultanément!! (autrement dit si une colonne est déjà masquée par mon premier critère, elle devra le rester en appliquant mon second critère: ce qui me permettra d'affiner ma recherche ...)
J'ai donc commencé ceci (appelé dans un UserForm):
PROBLEME:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 Sub Lancement1() Dim FBP1 As Single Dim FBP2 As Single Dim i As Integer Application.ScreenUpdating = False On Error GoTo fin FBP1 = InputBox("Trier les data entre FBP1 et FBP2", "valeur FBP1") FBP2 = InputBox("Trier les data entre FBP1 et FBP2" ", "valeur FBP2") For i = 2 To 1000 If Columns(i).EntireColumn.Hidden = True Then GoTo suivant End If ' Je souhaite ici prendre en compte la possibilité qu'une colonne soit déjà masquée par un autre critère et la garder masquée ' ici cela ne semble pas marcher lorsque je cumule mes critères ... If Cells(10, i).Value < FBP1 Or Cells(10, i).Value > FBP2 Then Columns(i).EntireColumn.Hidden = True Else Columns(i).EntireColumn.Hidden = False End If suivant: Next Application.ScreenUpdating = True Exit Sub fin: MsgBox "Vous devez saisir une donnée valide" End Sub -------------------------------------------------------------------- Sub Lancement2() Dim CASE As String Dim z As String Dim i As Integer Application.ScreenUpdating = False On Error GoTo fin CASE = InputBox("CASE=?") For i = 2 To 1000 z = Cells(1, i).Value If Columns(i).EntireColumn.Hidden = True Then GoTo suivant End If ' Je souhaite ici prendre en compte la possibilité qu'une colonne soit déjà masquée par un autre critère et la garder masquée ' ici cela ne semble pas marcher lorsque je cumule mes critères ... If CASE Like z Then Columns(i).EntireColumn.Hidden = False Else Columns(i).EntireColumn.Hidden = True End If suivant: Next Application.ScreenUpdating = True Exit Sub fin: MsgBox "Vous devez saisir une donnée valide" End Sub
Je ne parviens pas à sévériser mes recherches lorsque j'applique la subroutine1 PUIS la subroutine2: la macro compile mais n'applique pas ce que je souhaite ? En effet, elle me garder des colonnes qui devraient être masquées (car hors de mes critères), ce qui montre que mes boucles de calcul sont mal agencées ... Je ne parvient donc pas à garder uniquement les colonnes avec LOW en ligne L1 ET 190-200 en ligne L10.
Qqun pourrait-il me déboguer SVP ? Merci par avance.
Partager