.../... or je voudrais qu'il me sélectionne tous les mots contenant ces
lettres qqsoit l'ordre .
Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données /
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE DE
TITRE) de ta plage à filtrer
AsW représente les caractères que tu veux vérifier la présence,
cette procédure n'est pas sensible à la casse
des caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
.../... or je voudrais qu'il me sélectionne tous les mots contenant ces
lettres qqsoit l'ordre .
Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données /
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE DE
TITRE) de ta plage à filtrer
AsW représente les caractères que tu veux vérifier la présence,
cette procédure n'est pas sensible à la casse
des caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:O8mAK3$NEHA.3712@TK2MSFTNGP10.phx.gbl...
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
.../... or je voudrais qu'il me sélectionne tous les mots contenant ces
lettres qqsoit l'ordre .
Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données /
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE DE
TITRE) de ta plage à filtrer
AsW représente les caractères que tu veux vérifier la présence,
cette procédure n'est pas sensible à la casse
des caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans le
message de
news:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données /
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE DE
TITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la présence,
cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans le
message de
news:OmCuIpCOEHA.3752@TK2MSFTNGP12.phx.gbl...
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!
.../... or je voudrais qu'il me sélectionne tous les mots contenant ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
#5L97UCOEHA.892@TK2MSFTNGP09.phx.gbl...
Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données /
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE DE
TITRE) de ta plage à filtrer
AsW représente les caractères que tu veux vérifier la présence,
cette procédure n'est pas sensible à la casse
des caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:O8mAK3$NEHA.3712@TK2MSFTNGP10.phx.gbl...
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans le
message de
news:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données /
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE DE
TITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la présence,
cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans le
message de
news:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données /
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE DE
TITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la présence,
cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans le
message de
news:OmCuIpCOEHA.3752@TK2MSFTNGP12.phx.gbl...
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!
.../... or je voudrais qu'il me sélectionne tous les mots contenant ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
#5L97UCOEHA.892@TK2MSFTNGP09.phx.gbl...
Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données /
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE DE
TITRE) de ta plage à filtrer
AsW représente les caractères que tu veux vérifier la présence,
cette procédure n'est pas sensible à la casse
des caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:O8mAK3$NEHA.3712@TK2MSFTNGP10.phx.gbl...
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans le
message de
news:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données /
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE DE
TITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la présence,
cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour grodep.
Voici une solution inspirée de la suggestion de michdenis.
Les mots du dictionnaire sont réputés se trouver dans les colonnes A à F.
Les mots de la rangée A ne font pas partie du dictionnaire. Ils seront
considérés comme Titres des colonnes.
Les colonnes H à M seront utilisées pour recevoir le résultat de la
recherche.
1. Peser sur ALT-F11 - Pour accéder à l'éditeur Microsoft Visual Basic
2. Menu Insertion/Module - Pour créer un nouveau module
3. Coller dans le module le code ci-dessous
'##################################### Début du code
'Copier Dans un module
Sub ChaineDeCaractere()
NomDeLaFeuille = ActiveSheet.Name
Sheets(NomDeLaFeuille).Select
Sheets(NomDeLaFeuille).Columns("H:M").Select
Selection.ClearContents
Sheets(NomDeLaFeuille).Range("G1").Select
Lettres = Trim(Sheets(NomDeLaFeuille).[G1])
Exact = Trim(UCase(Sheets(NomDeLaFeuille).[G2]))
Sheets(NomDeLaFeuille).Range("H2").Formula = _
"=Check(A2,""" & Lettres & """,""" & Exact & """)"
Sheets(NomDeLaFeuille).Range("H2").Select
Selection.AutoFill _
Destination:=Range("H2:M2"), Type:=xlFillDefault
Columns("A:A").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("H1:H2"), _
CopyToRange:=Range("H4"), Unique:úlse
Columns("B:B").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("I1:I2"), _
CopyToRange:=Range("I4"), Unique:úlse
Columns("C:C").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("J1:J2"), _
CopyToRange:=Range("J4"), Unique:úlse
Columns("D:D").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("K1:K2"), _
CopyToRange:=Range("K4"), Unique:úlse
Columns("E:E").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("L1:L2"), _
CopyToRange:=Range("L4"), Unique:úlse
Columns("F:F").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("M1:M2"), _
CopyToRange:=Range("M4"), Unique:úlse
End Sub
Function Check(rg As Range, Lettre As String, Exact As String) As Boolean
L = Lettre
While L <> ""
c = Mid(L, 1, 1)
L = Mid(L, 2)
NombreDeCetteLettre = 1
b = InStr(L, c)
While b > 0
L = Mid(L, 1, b - 1) & Mid(L, b + 1)
NombreDeCetteLettre = NombreDeCetteLettre + 1
b = InStr(L, c)
Wend
strNombreExactDeCetteLettre = "*"
For i = 1 To NombreDeCetteLettre
strNombreExactDeCetteLettre = strNombreExactDeCetteLettre & c & "*"
Next
strTropDeCetteLettre = strNombreExactDeCetteLettre & c & "*"
If Not (UCase(rg) Like UCase(strNombreExactDeCetteLettre)) Then
Exit Function
End If
If UCase(Exact) = "EXACT" Then
If UCase(rg) Like UCase(strTropDeCetteLettre) Then
Exit Function
End If
End If
Wend
Check = True
End Function
4. Entrer dans la cellule G1 les lettres que les mots doivent contenir.
Exemple: AEE
5. Entrer dans la case G2 le mot EXACT pour que les résultats contiennent
le
même nombre de lettres que celles spécifiées en G1.
6. Menu Outils/Macros/Macros.
Sélectionner ChaineDeCaractere et cliquer sur le bouton Exécuter.
"grodep" wrote in message
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour grodep.
Voici une solution inspirée de la suggestion de michdenis.
Les mots du dictionnaire sont réputés se trouver dans les colonnes A à F.
Les mots de la rangée A ne font pas partie du dictionnaire. Ils seront
considérés comme Titres des colonnes.
Les colonnes H à M seront utilisées pour recevoir le résultat de la
recherche.
1. Peser sur ALT-F11 - Pour accéder à l'éditeur Microsoft Visual Basic
2. Menu Insertion/Module - Pour créer un nouveau module
3. Coller dans le module le code ci-dessous
'##################################### Début du code
'Copier Dans un module
Sub ChaineDeCaractere()
NomDeLaFeuille = ActiveSheet.Name
Sheets(NomDeLaFeuille).Select
Sheets(NomDeLaFeuille).Columns("H:M").Select
Selection.ClearContents
Sheets(NomDeLaFeuille).Range("G1").Select
Lettres = Trim(Sheets(NomDeLaFeuille).[G1])
Exact = Trim(UCase(Sheets(NomDeLaFeuille).[G2]))
Sheets(NomDeLaFeuille).Range("H2").Formula = _
"=Check(A2,""" & Lettres & """,""" & Exact & """)"
Sheets(NomDeLaFeuille).Range("H2").Select
Selection.AutoFill _
Destination:=Range("H2:M2"), Type:=xlFillDefault
Columns("A:A").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("H1:H2"), _
CopyToRange:=Range("H4"), Unique:úlse
Columns("B:B").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("I1:I2"), _
CopyToRange:=Range("I4"), Unique:úlse
Columns("C:C").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("J1:J2"), _
CopyToRange:=Range("J4"), Unique:úlse
Columns("D:D").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("K1:K2"), _
CopyToRange:=Range("K4"), Unique:úlse
Columns("E:E").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("L1:L2"), _
CopyToRange:=Range("L4"), Unique:úlse
Columns("F:F").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("M1:M2"), _
CopyToRange:=Range("M4"), Unique:úlse
End Sub
Function Check(rg As Range, Lettre As String, Exact As String) As Boolean
L = Lettre
While L <> ""
c = Mid(L, 1, 1)
L = Mid(L, 2)
NombreDeCetteLettre = 1
b = InStr(L, c)
While b > 0
L = Mid(L, 1, b - 1) & Mid(L, b + 1)
NombreDeCetteLettre = NombreDeCetteLettre + 1
b = InStr(L, c)
Wend
strNombreExactDeCetteLettre = "*"
For i = 1 To NombreDeCetteLettre
strNombreExactDeCetteLettre = strNombreExactDeCetteLettre & c & "*"
Next
strTropDeCetteLettre = strNombreExactDeCetteLettre & c & "*"
If Not (UCase(rg) Like UCase(strNombreExactDeCetteLettre)) Then
Exit Function
End If
If UCase(Exact) = "EXACT" Then
If UCase(rg) Like UCase(strTropDeCetteLettre) Then
Exit Function
End If
End If
Wend
Check = True
End Function
4. Entrer dans la cellule G1 les lettres que les mots doivent contenir.
Exemple: AEE
5. Entrer dans la case G2 le mot EXACT pour que les résultats contiennent
le
même nombre de lettres que celles spécifiées en G1.
6. Menu Outils/Macros/Macros.
Sélectionner ChaineDeCaractere et cliquer sur le bouton Exécuter.
"grodep" <grodep@hoOtmail.com> wrote in message
news:O8mAK3$NEHA.3712@TK2MSFTNGP10.phx.gbl...
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour grodep.
Voici une solution inspirée de la suggestion de michdenis.
Les mots du dictionnaire sont réputés se trouver dans les colonnes A à F.
Les mots de la rangée A ne font pas partie du dictionnaire. Ils seront
considérés comme Titres des colonnes.
Les colonnes H à M seront utilisées pour recevoir le résultat de la
recherche.
1. Peser sur ALT-F11 - Pour accéder à l'éditeur Microsoft Visual Basic
2. Menu Insertion/Module - Pour créer un nouveau module
3. Coller dans le module le code ci-dessous
'##################################### Début du code
'Copier Dans un module
Sub ChaineDeCaractere()
NomDeLaFeuille = ActiveSheet.Name
Sheets(NomDeLaFeuille).Select
Sheets(NomDeLaFeuille).Columns("H:M").Select
Selection.ClearContents
Sheets(NomDeLaFeuille).Range("G1").Select
Lettres = Trim(Sheets(NomDeLaFeuille).[G1])
Exact = Trim(UCase(Sheets(NomDeLaFeuille).[G2]))
Sheets(NomDeLaFeuille).Range("H2").Formula = _
"=Check(A2,""" & Lettres & """,""" & Exact & """)"
Sheets(NomDeLaFeuille).Range("H2").Select
Selection.AutoFill _
Destination:=Range("H2:M2"), Type:=xlFillDefault
Columns("A:A").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("H1:H2"), _
CopyToRange:=Range("H4"), Unique:úlse
Columns("B:B").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("I1:I2"), _
CopyToRange:=Range("I4"), Unique:úlse
Columns("C:C").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("J1:J2"), _
CopyToRange:=Range("J4"), Unique:úlse
Columns("D:D").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("K1:K2"), _
CopyToRange:=Range("K4"), Unique:úlse
Columns("E:E").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("L1:L2"), _
CopyToRange:=Range("L4"), Unique:úlse
Columns("F:F").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("M1:M2"), _
CopyToRange:=Range("M4"), Unique:úlse
End Sub
Function Check(rg As Range, Lettre As String, Exact As String) As Boolean
L = Lettre
While L <> ""
c = Mid(L, 1, 1)
L = Mid(L, 2)
NombreDeCetteLettre = 1
b = InStr(L, c)
While b > 0
L = Mid(L, 1, b - 1) & Mid(L, b + 1)
NombreDeCetteLettre = NombreDeCetteLettre + 1
b = InStr(L, c)
Wend
strNombreExactDeCetteLettre = "*"
For i = 1 To NombreDeCetteLettre
strNombreExactDeCetteLettre = strNombreExactDeCetteLettre & c & "*"
Next
strTropDeCetteLettre = strNombreExactDeCetteLettre & c & "*"
If Not (UCase(rg) Like UCase(strNombreExactDeCetteLettre)) Then
Exit Function
End If
If UCase(Exact) = "EXACT" Then
If UCase(rg) Like UCase(strTropDeCetteLettre) Then
Exit Function
End If
End If
Wend
Check = True
End Function
4. Entrer dans la cellule G1 les lettres que les mots doivent contenir.
Exemple: AEE
5. Entrer dans la case G2 le mot EXACT pour que les résultats contiennent
le
même nombre de lettres que celles spécifiées en G1.
6. Menu Outils/Macros/Macros.
Sélectionner ChaineDeCaractere et cliquer sur le bouton Exécuter.
"grodep" wrote in message
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour grodep,
Je me suis permis de t'envoyer un fichier exemple dans ta Bal.
Salutations!
"grodep" a écrit dans le message de
news:er$
je me suis p'tetre gourré qqpart (surement ) mais le résultat me renvoie :
nom de champ introuvable ou incorrect dans la plage d'extraction
"michdenis" a écrit dans le message de
news:Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas
lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans le
message denews:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant
ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données
/
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste
de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE
DE
TITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la
présence,
cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des
lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour grodep,
Je me suis permis de t'envoyer un fichier exemple dans ta Bal.
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:er$aR6DOEHA.624@TK2MSFTNGP11.phx.gbl...
je me suis p'tetre gourré qqpart (surement ) mais le résultat me renvoie :
nom de champ introuvable ou incorrect dans la plage d'extraction
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:eP2sYtCOEHA.2780@TK2MSFTNGP09.phx.gbl...
Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas
lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans le
message de
news:OmCuIpCOEHA.3752@TK2MSFTNGP12.phx.gbl...
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!
.../... or je voudrais qu'il me sélectionne tous les mots contenant
ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
#5L97UCOEHA.892@TK2MSFTNGP09.phx.gbl...
Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données
/
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste
de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE
DE
TITRE) de ta plage à filtrer
AsW représente les caractères que tu veux vérifier la
présence,
cette procédure n'est pas sensible à la casse
des caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:O8mAK3$NEHA.3712@TK2MSFTNGP10.phx.gbl...
bonjour je cherche une fonction qui permettrait en précisant des
lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour grodep,
Je me suis permis de t'envoyer un fichier exemple dans ta Bal.
Salutations!
"grodep" a écrit dans le message de
news:er$
je me suis p'tetre gourré qqpart (surement ) mais le résultat me renvoie :
nom de champ introuvable ou incorrect dans la plage d'extraction
"michdenis" a écrit dans le message de
news:Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas
lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans le
message denews:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant
ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données
/
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste
de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE
DE
TITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la
présence,
cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des
lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour grodep,
Je me suis permis de t'envoyer un fichier exemple dans ta Bal.
Salutations!
"grodep" a écrit dans le message de
news:er$
je me suis p'tetre gourré qqpart (surement ) mais le résultat me renvoie :
nom de champ introuvable ou incorrect dans la plage d'extraction
"michdenis" a écrit dans le message de
news:Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas
lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans le
message denews:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant
ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données
/
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste
de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE
DE
TITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la
présence,
cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des
lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour grodep,
Je me suis permis de t'envoyer un fichier exemple dans ta Bal.
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:er$aR6DOEHA.624@TK2MSFTNGP11.phx.gbl...
je me suis p'tetre gourré qqpart (surement ) mais le résultat me renvoie :
nom de champ introuvable ou incorrect dans la plage d'extraction
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:eP2sYtCOEHA.2780@TK2MSFTNGP09.phx.gbl...
Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas
lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans le
message de
news:OmCuIpCOEHA.3752@TK2MSFTNGP12.phx.gbl...
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!
.../... or je voudrais qu'il me sélectionne tous les mots contenant
ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
#5L97UCOEHA.892@TK2MSFTNGP09.phx.gbl...
Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données
/
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste
de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE
DE
TITRE) de ta plage à filtrer
AsW représente les caractères que tu veux vérifier la
présence,
cette procédure n'est pas sensible à la casse
des caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:O8mAK3$NEHA.3712@TK2MSFTNGP10.phx.gbl...
bonjour je cherche une fonction qui permettrait en précisant des
lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Bonjour grodep,
Je me suis permis de t'envoyer un fichier exemple dans ta Bal.
Salutations!
"grodep" a écrit dans le message de
news:er$
je me suis p'tetre gourré qqpart (surement ) mais le résultat me renvoie :
nom de champ introuvable ou incorrect dans la plage d'extraction
"michdenis" a écrit dans le message de
news:Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas
lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans le
message denews:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant
ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus / données
/
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste
de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE
DE
TITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la
présence,
cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des
lettres
deme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Le fichier a été créé avec Excel 2002, tu travailles à partir de quelle
version ?
à tout hasard, je te fais parvenir une autre copie !
Salutations!
"grodep" a écrit dans le message de
news:
merci beaucoup malheureusement le fichier n'a semble t'il ps supporté le
voyage : Excel répare ton fichier lorsque je l'ouvre , je te mets en copie
le fichier repair qu'il crée : Journal de réparation de fichiers Microsoft
Excel
Des erreurs ont été détectées dans le fichier 'C:Documents and
SettingscédricMes documentsExemple Filtre.xls'
Liste des réparations :
Projet Visual Basic perdu.
Contrôles ActiveX perdus.
Si tu sais d'ou celà peut provenir ...
"michdenis" a écrit dans le message de
news:Bonjour grodep,
Je me suis permis de t'envoyer un fichier exemple dans ta Bal.
Salutations!
"grodep" a écrit dans le message de
news:er$je me suis p'tetre gourré qqpart (surement ) mais le résultat me renvoie
:
nom de champ introuvable ou incorrect dans la plage d'extraction
"michdenis" a écrit dans le message de
news:Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas
lutout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans
le
message denews:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant
ceslettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus /
données
/filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste
demots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE
DETITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la
présence,cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des
lettresdeme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Le fichier a été créé avec Excel 2002, tu travailles à partir de quelle
version ?
à tout hasard, je te fais parvenir une autre copie !
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:uNZicqGOEHA.2920@tk2msftngp13.phx.gbl...
merci beaucoup malheureusement le fichier n'a semble t'il ps supporté le
voyage : Excel répare ton fichier lorsque je l'ouvre , je te mets en copie
le fichier repair qu'il crée : Journal de réparation de fichiers Microsoft
Excel
Des erreurs ont été détectées dans le fichier 'C:Documents and
SettingscédricMes documentsExemple Filtre.xls'
Liste des réparations :
Projet Visual Basic perdu.
Contrôles ActiveX perdus.
Si tu sais d'ou celà peut provenir ...
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:eIa07EFOEHA.2716@tk2msftngp13.phx.gbl...
Bonjour grodep,
Je me suis permis de t'envoyer un fichier exemple dans ta Bal.
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:er$aR6DOEHA.624@TK2MSFTNGP11.phx.gbl...
je me suis p'tetre gourré qqpart (surement ) mais le résultat me renvoie
:
nom de champ introuvable ou incorrect dans la plage d'extraction
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:eP2sYtCOEHA.2780@TK2MSFTNGP09.phx.gbl...
Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas
lu
tout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans
le
message de
news:OmCuIpCOEHA.3752@TK2MSFTNGP12.phx.gbl...
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!
.../... or je voudrais qu'il me sélectionne tous les mots contenant
ces
lettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
#5L97UCOEHA.892@TK2MSFTNGP09.phx.gbl...
Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus /
données
/
filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste
de
mots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE
DE
TITRE) de ta plage à filtrer
AsW représente les caractères que tu veux vérifier la
présence,
cette procédure n'est pas sensible à la casse
des caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" <grodep@hoOtmail.com> a écrit dans le message de
news:O8mAK3$NEHA.3712@TK2MSFTNGP10.phx.gbl...
bonjour je cherche une fonction qui permettrait en précisant des
lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Le fichier a été créé avec Excel 2002, tu travailles à partir de quelle
version ?
à tout hasard, je te fais parvenir une autre copie !
Salutations!
"grodep" a écrit dans le message de
news:
merci beaucoup malheureusement le fichier n'a semble t'il ps supporté le
voyage : Excel répare ton fichier lorsque je l'ouvre , je te mets en copie
le fichier repair qu'il crée : Journal de réparation de fichiers Microsoft
Excel
Des erreurs ont été détectées dans le fichier 'C:Documents and
SettingscédricMes documentsExemple Filtre.xls'
Liste des réparations :
Projet Visual Basic perdu.
Contrôles ActiveX perdus.
Si tu sais d'ou celà peut provenir ...
"michdenis" a écrit dans le message de
news:Bonjour grodep,
Je me suis permis de t'envoyer un fichier exemple dans ta Bal.
Salutations!
"grodep" a écrit dans le message de
news:er$je me suis p'tetre gourré qqpart (surement ) mais le résultat me renvoie
:
nom de champ introuvable ou incorrect dans la plage d'extraction
"michdenis" a écrit dans le message de
news:Bonjour Pascal,
Je croyais que tous les mots étaient dans une colonne...Je n'avais pas
lutout le fil ....
Il n'a qu'à refaire la même procédure 6 fois !!! ;-))
Salutations!
"Pascal Engelmajer" a écrit dans
le
message denews:
Salut,
si ceci fonctionne c'est que j'ai pas compris la question !!!.../... or je voudrais qu'il me sélectionne tous les mots contenant
ceslettres qqsoit l'ordre .
et non pas les lignes...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"michdenis" a écrit dans le message de news:
#Bonjour grodep,
Une procédure qui devrait marcher !
A )Dans un module standard, tu copie la procédure suivante :
'-------------------------------
Function Check(rg As Range, Lettre As String) As Boolean
For A = 1 To Len(Lettre)
If InStr(1, rg, Mid(Lettre, A, 1), vbTextCompare) <> 0 Then
Check = True
Exit Function
End If
Next
End Function
'-------------------------------
B ) Tu appelle la commande "Filtre élaboré" (barre des menus /
données
/filtre / filtre élaboré)
C ) tu choisis comme plage pour le filtre la colonne où est ta liste
demots
D ) Tu définis ta zone de critère comme suit :
G1 : tu laisses la cellule vide
G2 : =Check(A2;"AsW")
Donc Zone de critère : G1:G2
A2 représente la première ligne de DONNÉES(EXCLUANT LA LIGNE
DETITRE) de ta plage à filtrerAsW représente les caractères que tu veux vérifier la
présence,cette procédure n'est pas sensible à la cassedes caractères.
E ) Observe le résultat !!!
Salutations!
"grodep" a écrit dans le message de
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des
lettresdeme sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
bonjour je cherche une fonction qui permettrait en précisant des lettres de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
bonjour je cherche une fonction qui permettrait en précisant des lettres de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
bonjour je cherche une fonction qui permettrait en précisant des lettres de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Salut grodep,
Si tu es encore intéressé, voici un bout de code (à mettre dans un nouveau
module) qui extrait en une colonne des mots choisis d'une plage
bi-dimensionnelle. Ces mots "choisis" doivent contenir au moins autant des
mêmes
lettres qui le motclef (celui mis en B1 dans l'exemple soumis).
Le code est très facile à adapter si tu veux qui les mots choisis aient
EXACTEMENT les mêmes lettres (en même nombre) que celles du motclef (on
change
">" pour "<>" dans le code).
Tu DOIS changer les plages pour y mettre celles à partir desquelles tu
travailles (voir les lignes 'à adapter) dans la procédure
TrouveChainesContenantToutesLesLettresDuMotClef().
Salutations,
Daniel M.
' Début du code
Public MotClef As String
Public nLP As Integer
Public LesLettres(1 To 255) As Integer
Sub PrepareLettres(Optional Bidon As Boolean)
Dim i As Integer, C As String * 1
Erase LesLettres ' on remet tout à zéro
nLP = Len(MotClef)
MotClef = LCase(MotClef) ' mise en minuscule
For i = 1 To nLP ' pour chacune des lettres du motclef
C = Mid(MotClef, i, 1)
LesLettres(Asc(C)) = nLP - Len(Replace(MotClef, C, ""))
' combien de lettre 'c' dans le motclef et reporter le
' résultat dans un tableau LesLettres() où l'indice
' correspond à Asc(c)
Next i
End Sub
Function Lettres(CeMot As String) As Boolean
Dim i As Integer, j As Integer
Dim C As String * 1, S As String
Lettres = True
j = Len(CeMot)
S = LCase(CeMot)
For i = 1 To nLP ' pour chacune des lettres du MotClef
C = Mid(MotClef, i, 1)
If LesLettres(Asc(C)) > j - Len(Replace(S, C, "")) Then
' on doit avoir au minimum le nombre de lettres
Lettres = False: Exit For
End If
Next i
End Function
Sub TrouveChainesContenantToutesLesLettresDuMotClef()
Dim InPlage As Range, OutPlage As Range
Dim nLi As Long, nCol As Integer
Dim LesColsOut As Range
Dim i As Long, j As Integer, k As Long
MotClef = Range("B1") ' ou MotClef = "aes", à adapter
Set InPlage = Range("A2:F65000") ' à adapter
nLi = InPlage.Rows.Count
nCol = InPlage.Columns.Count
Set OutPlage = Range("H2") ' à adapter
PrepareLettres ' Appelée 1 seule fois. Accélère le traitement
For i = 1 To nLi
For j = 1 To nCol
If Lettres(InPlage(i, j)) Then k = k + 1: OutPlage(k) = InPlage(i, j)
Next j
Next i
End Sub
"grodep" wrote in message
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Salut grodep,
Si tu es encore intéressé, voici un bout de code (à mettre dans un nouveau
module) qui extrait en une colonne des mots choisis d'une plage
bi-dimensionnelle. Ces mots "choisis" doivent contenir au moins autant des
mêmes
lettres qui le motclef (celui mis en B1 dans l'exemple soumis).
Le code est très facile à adapter si tu veux qui les mots choisis aient
EXACTEMENT les mêmes lettres (en même nombre) que celles du motclef (on
change
">" pour "<>" dans le code).
Tu DOIS changer les plages pour y mettre celles à partir desquelles tu
travailles (voir les lignes 'à adapter) dans la procédure
TrouveChainesContenantToutesLesLettresDuMotClef().
Salutations,
Daniel M.
' Début du code
Public MotClef As String
Public nLP As Integer
Public LesLettres(1 To 255) As Integer
Sub PrepareLettres(Optional Bidon As Boolean)
Dim i As Integer, C As String * 1
Erase LesLettres ' on remet tout à zéro
nLP = Len(MotClef)
MotClef = LCase(MotClef) ' mise en minuscule
For i = 1 To nLP ' pour chacune des lettres du motclef
C = Mid(MotClef, i, 1)
LesLettres(Asc(C)) = nLP - Len(Replace(MotClef, C, ""))
' combien de lettre 'c' dans le motclef et reporter le
' résultat dans un tableau LesLettres() où l'indice
' correspond à Asc(c)
Next i
End Sub
Function Lettres(CeMot As String) As Boolean
Dim i As Integer, j As Integer
Dim C As String * 1, S As String
Lettres = True
j = Len(CeMot)
S = LCase(CeMot)
For i = 1 To nLP ' pour chacune des lettres du MotClef
C = Mid(MotClef, i, 1)
If LesLettres(Asc(C)) > j - Len(Replace(S, C, "")) Then
' on doit avoir au minimum le nombre de lettres
Lettres = False: Exit For
End If
Next i
End Function
Sub TrouveChainesContenantToutesLesLettresDuMotClef()
Dim InPlage As Range, OutPlage As Range
Dim nLi As Long, nCol As Integer
Dim LesColsOut As Range
Dim i As Long, j As Integer, k As Long
MotClef = Range("B1") ' ou MotClef = "aes", à adapter
Set InPlage = Range("A2:F65000") ' à adapter
nLi = InPlage.Rows.Count
nCol = InPlage.Columns.Count
Set OutPlage = Range("H2") ' à adapter
PrepareLettres ' Appelée 1 seule fois. Accélère le traitement
For i = 1 To nLi
For j = 1 To nCol
If Lettres(InPlage(i, j)) Then k = k + 1: OutPlage(k) = InPlage(i, j)
Next j
Next i
End Sub
"grodep" <grodep@hoOtmail.com> wrote in message
news:O8mAK3$NEHA.3712@TK2MSFTNGP10.phx.gbl...
bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses
Salut grodep,
Si tu es encore intéressé, voici un bout de code (à mettre dans un nouveau
module) qui extrait en une colonne des mots choisis d'une plage
bi-dimensionnelle. Ces mots "choisis" doivent contenir au moins autant des
mêmes
lettres qui le motclef (celui mis en B1 dans l'exemple soumis).
Le code est très facile à adapter si tu veux qui les mots choisis aient
EXACTEMENT les mêmes lettres (en même nombre) que celles du motclef (on
change
">" pour "<>" dans le code).
Tu DOIS changer les plages pour y mettre celles à partir desquelles tu
travailles (voir les lignes 'à adapter) dans la procédure
TrouveChainesContenantToutesLesLettresDuMotClef().
Salutations,
Daniel M.
' Début du code
Public MotClef As String
Public nLP As Integer
Public LesLettres(1 To 255) As Integer
Sub PrepareLettres(Optional Bidon As Boolean)
Dim i As Integer, C As String * 1
Erase LesLettres ' on remet tout à zéro
nLP = Len(MotClef)
MotClef = LCase(MotClef) ' mise en minuscule
For i = 1 To nLP ' pour chacune des lettres du motclef
C = Mid(MotClef, i, 1)
LesLettres(Asc(C)) = nLP - Len(Replace(MotClef, C, ""))
' combien de lettre 'c' dans le motclef et reporter le
' résultat dans un tableau LesLettres() où l'indice
' correspond à Asc(c)
Next i
End Sub
Function Lettres(CeMot As String) As Boolean
Dim i As Integer, j As Integer
Dim C As String * 1, S As String
Lettres = True
j = Len(CeMot)
S = LCase(CeMot)
For i = 1 To nLP ' pour chacune des lettres du MotClef
C = Mid(MotClef, i, 1)
If LesLettres(Asc(C)) > j - Len(Replace(S, C, "")) Then
' on doit avoir au minimum le nombre de lettres
Lettres = False: Exit For
End If
Next i
End Function
Sub TrouveChainesContenantToutesLesLettresDuMotClef()
Dim InPlage As Range, OutPlage As Range
Dim nLi As Long, nCol As Integer
Dim LesColsOut As Range
Dim i As Long, j As Integer, k As Long
MotClef = Range("B1") ' ou MotClef = "aes", à adapter
Set InPlage = Range("A2:F65000") ' à adapter
nLi = InPlage.Rows.Count
nCol = InPlage.Columns.Count
Set OutPlage = Range("H2") ' à adapter
PrepareLettres ' Appelée 1 seule fois. Accélère le traitement
For i = 1 To nLi
For j = 1 To nCol
If Lettres(InPlage(i, j)) Then k = k + 1: OutPlage(k) = InPlage(i, j)
Next j
Next i
End Sub
"grodep" wrote in message
news:O8mAK3$bonjour je cherche une fonction qui permettrait en précisant des lettres
de
me sortir tous les mots qui les contiennent parmi une liste donnée.
Merci de vos réponses