Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2011, 18h42   #1
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
Par défaut fonction de recherche

Bonjour,

J'ai créé un usf qui fait une recherche selon un ou plusieurs critères.

Lorsque la recherche est lancé, les lignes ne correspondant pas au critères définit dans les textbox sont cachées et non pas effacées. Je ferais un bouton pour les réafficher dans l'ordre ou c'était.

Code :
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Option Explicit
Option Compare Text
 
Private Sub Bouton_rechercher_Click()
 
    Dim cellule As Range
    Feuil1.Activate
 
    'recherche à partir du numéro de marché
    If (TextBox_num_marche.Value <> "") Then
        For Each cellule In Range("A1", Cells(Rows.Count, "A").End(xlUp))
 
                With cellule.Offset(1, 0)
                    .EntireRow.Hidden = .Value <> CStr(TextBox_num_marche.Value)
                End With
 
        Next
    End If
 
    'recherche à partir du titulaire du marché
    If (TextBox_titulaire_marche.Value <> "") Then
        For Each cellule In Range("G1", Cells(Rows.Count, "G").End(xlUp))
 
                With cellule.Offset(1, 0)
                    .EntireRow.Hidden = .Value <> CStr(TextBox_titulaire_marche.Value)
                End With
 
        Next
    End If
 
    'recherche en fonction d'une fourchette de prix
    If ((TextBox_prix_min.Value <> "") And (TextBox_prix_max.Value <> "")) Then
        For Each cellule In Range("M1", Cells(Rows.Count, "M").End(xlUp))
            If Not IsEmpty(cellule) Then
                With cellule.Offset(1, 0)
                    .EntireRow.Hidden = (.Value) <= CLng(TextBox_prix_min.Value) Or (.Value) >= CLng(TextBox_prix_max.Value)
                End With
            End If
        Next
    End If
 
    'recherche en fonction du type de maché
    If (TextBox_type_marche.Value <> "") Then
        For Each cellule In Range("B1", Cells(Rows.Count, "B").End(xlUp))
            If Not IsEmpty(cellule) Then
                With cellule.Offset(1, 0)
                    .EntireRow.Hidden = (.Value) <= CStr(TextBox_type_marche.Value)
                End With
            End If
        Next
    End If
 
    'Fermeture fenetre de recherche
    'Unload UserForm_rechercher
 
End Sub
 
Private Sub TextBox_prix_max_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 
    'Seule une valeur numérique peut être entrée
    If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
 
    'Si le caractère saisi est le 1er et qu'il s'agit d'un point alors j'ajoute 0 devant
    If Len(TextBox_prix_max) = 1 And TextBox_prix_max = "." Then TextBox_prix_max = "0."
 
    'Si un point est déjà dans la chaine on ne peut pas en taper un autre
    If InStr(TextBox_prix_max.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0
 
    'S'il existe un point dans le TextBox : InStr(TextBox_prix_max.Value, ".") <> 0
    'et que la longueur de la chaine contenue dans le textbox : Len(TextBox_prix_max.Value)
    'est supérieure à la place du . dans la chaine + 1 > InStr(TextBox_prix_max.Value, ".") + 1
    'alors on annule la saisie : Then KeyAscii = 0
    If InStr(TextBox_prix_max.Value, ".") <> 0 And Len(TextBox_prix_max.Value) > InStr(TextBox_prix_max.Value, ".") + 1 Then KeyAscii = 0
 
End Sub
 
Private Sub TextBox_prix_min_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 
    'Seule une valeur numérique peut être entrée
    If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
 
    'Si le caractère saisi est le 1er et qu'il s'agit d'un point alors j'ajoute 0 devant
    If Len(TextBox_prix_min) = 1 And TextBox_prix_min = "." Then TextBox_prix_min = "0."
 
    'Si un point est déjà dans la chaine on ne peut pas en taper un autre
    If InStr(TextBox_prix_min.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0
 
    'S'il existe un point dans le TextBox : InStr(TextBox_prix_min.Value, ".") <> 0
    'et que la longueur de la chaine contenue dans le textbox : Len(TextBox_prix_min.Value)
    'est supérieure à la place du . dans la chaine + 1 > InStr(TextBox_prix_min.Value, ".") + 1
    'alors on annule la saisie : Then KeyAscii = 0
    If InStr(TextBox_prix_min.Value, ".") <> 0 And Len(TextBox_prix_min.Value) > InStr(TextBox_prix_min.Value, ".") + 1 Then KeyAscii = 0
 
End Sub
Mais voilà, j'ai un souci dans le code car lorsque je rentre dans type de marche le mot service ça déconne. J'ai des lignes avec le mot fourniture et d'autres qui sont vides.

Si vous voulez le fichier je le mettrais.
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 19h49   #2
Invité régulier
 
Homme
Inscription : septembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 6
Points : 7
Points : 7
Salut,

Etant donné que le type de marché est un critère texte, la condition de test doit s'écrire

Code :
.EntireRow.Hidden = (.Value) <> CStr(TextBox_type_marche.Value)
plutôt que

Code :
.EntireRow.Hidden = (.Value) <= CStr(TextBox_type_marche.Value)
Cordialement,
n.
neozenfragance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 20h25   #3
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Salut.

Perso, je résudrais ce genre de cas en utilisant les filtres automatiques en VBA. C'est 1000 fois plus simple que de boucler sur les lignes, et tu dégages la logique de filtre du VBA.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h10   #4
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
Le copier coller c'est pas terrible. Pour les filtres automatiques en vba , j'en ai jamais utilisés mais pourquoi pas le tenter.

On peut faire plus de deux criteria?
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h13   #5
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Citation:
Envoyé par Chicard Voir le message
On peut faire plus de deux criteria?
Sous Excel 2003 je ne crois pas (il n'y a que Criteria1 et Criteria 2 quand tu regardes dans l'explorateur de projets).
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h30   #6
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
Donc vu que j'ai 5 critères, utiliser les filtres vba peux être possible que si j'en spécifie deux au maximum mais mon but est de pouvoir en spécifier 5 (même si ça n'arrivera peut-être jamais).


En attendant mon code ne fonctionne toujours pas.

Apparemment pas d'erreur de compil mais surement dans le code du traitement mais je vois pas ou:
Code :
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Option Explicit
Option Compare Text
 
Private Sub Bouton_rechercher_Click()
 
    Dim cellule As Range
    Feuil1.Activate
 
    'recherche à partir du numéro de marché
    If (TextBox_num_marche.Value <> "") Then
        For Each cellule In Range("A1", Cells(Rows.Count, "A").End(xlUp))
 
                With cellule.Offset(1, 0)
                    .EntireRow.Hidden = .Value <> CStr(TextBox_num_marche.Value)
                End With
 
        Next
    End If
 
    'recherche à partir du titulaire du marché
    If (TextBox_titulaire_marche.Value <> "") Then
        For Each cellule In Range("G1", Cells(Rows.Count, "G").End(xlUp))
 
                With cellule.Offset(1, 0)
                    .EntireRow.Hidden = .Value <> CStr(TextBox_titulaire_marche.Value)
                End With
 
        Next
    End If
 
    'recherche en fonction d'une fourchette de prix
    If ((TextBox_prix_min.Value <> "") And (TextBox_prix_max.Value <> "")) Then
        For Each cellule In Range("M1", Cells(Rows.Count, "M").End(xlUp))
            If Not IsEmpty(cellule) Then
                With cellule.Offset(1, 0)
                    .EntireRow.Hidden = (.Value) <= CLng(TextBox_prix_min.Value) Or (.Value) >= CLng(TextBox_prix_max.Value)
                End With
            End If
        Next
    End If
 
    'recherche en fonction du type de maché
    If (TextBox_type_marche.Value <> "") Then
        For Each cellule In Range("B1", Cells(Rows.Count, "B").End(xlUp))
            If Not IsEmpty(cellule) Then
                With cellule.Offset(1, 0)
                    .EntireRow.Hidden = (.Value) <> CStr(TextBox_type_marche.Value)
                End With
            End If
        Next
    End If
 
    'Fermeture fenetre de recherche
    'Unload UserForm_rechercher
 
End Sub
 
Private Sub TextBox_prix_max_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 
    'Seule une valeur numérique peut être entrée
    If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
 
    'Si le caractère saisi est le 1er et qu'il s'agit d'un point alors j'ajoute 0 devant
    If Len(TextBox_prix_max) = 1 And TextBox_prix_max = "." Then TextBox_prix_max = "0."
 
    'Si un point est déjà dans la chaine on ne peut pas en taper un autre
    If InStr(TextBox_prix_max.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0
 
    'S'il existe un point dans le TextBox : InStr(TextBox_prix_max.Value, ".") <> 0
    'et que la longueur de la chaine contenue dans le textbox : Len(TextBox_prix_max.Value)
    'est supérieure à la place du . dans la chaine + 1 > InStr(TextBox_prix_max.Value, ".") + 1
    'alors on annule la saisie : Then KeyAscii = 0
    If InStr(TextBox_prix_max.Value, ".") <> 0 And Len(TextBox_prix_max.Value) > InStr(TextBox_prix_max.Value, ".") + 1 Then KeyAscii = 0
 
End Sub
 
Private Sub TextBox_prix_min_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 
    'Seule une valeur numérique peut être entrée
    If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
 
    'Si le caractère saisi est le 1er et qu'il s'agit d'un point alors j'ajoute 0 devant
    If Len(TextBox_prix_min) = 1 And TextBox_prix_min = "." Then TextBox_prix_min = "0."
 
    'Si un point est déjà dans la chaine on ne peut pas en taper un autre
    If InStr(TextBox_prix_min.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0
 
    'S'il existe un point dans le TextBox : InStr(TextBox_prix_min.Value, ".") <> 0
    'et que la longueur de la chaine contenue dans le textbox : Len(TextBox_prix_min.Value)
    'est supérieure à la place du . dans la chaine + 1 > InStr(TextBox_prix_min.Value, ".") + 1
    'alors on annule la saisie : Then KeyAscii = 0
    If InStr(TextBox_prix_min.Value, ".") <> 0 And Len(TextBox_prix_min.Value) > InStr(TextBox_prix_min.Value, ".") + 1 Then KeyAscii = 0
 
End Sub
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 12h27   #7
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Personnellement, j'ai tendance à privilégier Excel à VBA.

Pourquoi? Justemement parce que tu dis
Citation:
j'en spécifie deux au maximum mais mon but est de pouvoir en spécifier 5 (même si ça n'arrivera peut-être jamais)
Si le nombre de tes critères est fluctuant, tu vas devoir modifier ton code VBA à chaque fois que ce nombre change ou chaque fois que les critères porteront sur d'autres colonnes.

Solution: Utiliser Excel et VBA en bonne intelligence.
  • à droite de ton tableau (dans la première colonne disponible), rédiger la formule qui renvoie vrai lorsque tes critères sont respectés ;
  • filtrer sur la valeur VRAI de cette colonne.
Ainsi, tu dégages du VBA toute la logique de tes critères en ne devant modifier ton code VBA que sur une seule ligne, celle qui passe la formule dans la colonne de droite. Tu évites ainsi du code vba spaghetti qui doit être modfié fondamentalement lorsque la logique de tes critères sera modifiée.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 13h27   #8
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
D'où mon code qui contient le nombre de champ maximum possible. Le but étant de faire une recherche sur au moins un critère et au plus 5.

Donc le code spaghetti comme tu dis ne sera pas employé. Le seul changement fondamental qui sera fait c'est si je veux plus de champs (en gros 5 lignes si mon code daigne fonctionner ce qui n'est pas le cas) autrement rien ne bougera.

Pour en revenir au code, ce type de code (quasiment le même) fonctionne sur un autre programme mais ici il ne tourne même pas. J'ai vraiment pas d'idée.

Test:
- Le critère numéro marché enlève bien tous les marché sauf celui désirés donc cette partie est bonne.

- Les autres critères ne fonctionnent pas ou mal
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 13h42   #9
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
Ce qui m'intéresserait ce serait que le titulaire du marché fonctionne ce qui n'est pas encore le cas.

Est-ce que le fait d'avoir plusieurs lignes dans une seule cellule peut poser problème lors de la recherche? Car dans ma cellule sur le titulaire, j'ai le nom du titulaire, son adresse complète ainsi que la ville et le code postal (BP, cedex aussi) ainsi qu'éventuellement le prénom et nom de la personne référente son numéro de tel et de fax. Certains de ces composant peuvent être manquant sauf le premier qui est le titulaire du marché.
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 14h24   #10
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Pour le titulaire, tu fais comme ci la valeur tu textbox devait être égale à la valeur de la cellule, alors qu'en fait, tu dois déterminer si la chaine de ton titulaire est présente dans la cellule.

Tu dois donc faire quelque chose du genre
Code :
.EntireRow.Hidden = (instr(1,.Value,CStr(TextBox_titulaire_marche.Value))=0)
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 16h59   #11
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
Effectivement pour le titulaire ça marche carrément mieux. Mais cela ne règle pas tout parce que ça ne marche pas pour le service (j'ai essayé).

Le problème du service c'est que certaine cellule sont vide et donc lors de la recherche sur un service il me faut juste les lignes contenant le service. Si rien n'est rentré dans service un des autres critères (ou plusieurs) sera (ont) renseigné(s).

Code :
1
2
3
4
5
6
7
8
9
If (TextBox_type_marche.Value <> "") Then
        For Each cellule In Range("B1", Cells(Rows.Count, "B").End(xlUp))
            If Not IsEmpty(cellule) Then
                With cellule.Offset(1, 0)
                    .EntireRow.Hidden = (.Value) <> CStr(TextBox_type_marche.Value)
                End With
            End If
        Next
    End If
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 21h55   #12
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Pas sûr d'avoir compris ce que tu souhaites masquer en fonction du service...
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 09h00   #13
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
la seule chose que je souhaite cacher au niveau de la recherche par service c'est les lignes ne contenant pas le mot service ou fourniture ainsi que les lignes vides.

d'où le not isempty (variable) qui doit ignorer les lignes vide (qui n'apparaitront pas à la fin de la recherche)
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 09h04   #14
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Si j'ai bien compris, c'est le même problème que pour les titulaires. La cellule contient une chaine de caractères qui peut contenir le mot recherché.

Si c'est cela, tu peux appliquer la même technique (instr) que pour le titulaire. Tu peux aussi utiliser l'opérateur NOT LIKE "*administration*" pour masquer les lignes ne contenant pas administration, par exemple.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 10h40   #15
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
J'avais déjà essayé de refaire comme pour le titulaire mais n'ayant pas changé le textbox forcément ça ne fonctionnait pas.

La différence avec le titulaire c'est que la j'ai des type de marché vide et que bien qu'il fasse la recherche il me garde les types vides choses que je ne veux pas. C'est pourquoi il y avait la ligne "if not empty" qui du coup fonctionne pas.
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 10h50   #16
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Le test sur not isempty fait que tu ne masqueras pas la ligne vide.

Si tu veux masquer les types de marché vides, enlève le test et ne garde que la ligne de code qui masque les lignes de la feuille sur le type de marché...

Non?
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 13h23   #17
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
Non. Il me cache bien tout ce qui autre mais me place les ligne vides au dessous au lieu de me montrer que les lignes qui sont au dessous (qui elles sont correctes)
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h49   #18
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Rien compris
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 16h15   #19
Membre du Club
 
Homme
Inscription : janvier 2004
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : janvier 2004
Messages : 239
Points : 63
Points : 63
Envoyer un message via MSN à Chicard
Quand je fais une recherche sur un champ (en l'occurrence le type de marché) des fois il est renseigné des fois il ne l'est pas.

Lorsque j'effectue ma recherche (juste sur le type de marché) il me cache les lignes ne correspondant pas à ma recherche (ce qui est normal et ce qui est le but recherché) mais il me garde les lignes ou le type de service est absent (ce que je ne veux pas).

Est-ce plus clair?
Chicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 16h22   #20
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Oui, c'est plus clair... Mais ce n'es pas normal...

Si ton criètère n'est pas vide, il doit masquer les lignes vides... Es-tu sûr de bien inclure toute la zone de données?

Pourrais-tu rendre ton code, car je suppose qu'il a été modifié depuis le début de la discussion?
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h26.


 
 
 
 
Partenaires

Hébergement Web