OVH Cloud OVH Cloud

Choix automatique dans une liste déroulante en fonction de critères

12 réponses
Avatar
jb38
Bonjour,

voil=E0 mon probl=E8me du jour (fichier d'exemple disponible si besoin):


J'ai une colonne avec une liste de produits et leurs d=E9signations et
je souhaite dans la colonne d'=E0 cot=E9 affecter =E0 chaque produit une
cat=E9gorie (elec, visserie, tolerie...) Pour cela avec Donn=E9e,
validation liste, j'ai cr=E9=E9 dans chaque case de la colonne d'=E0 cot=E9
un liste d=E9roulante avec les diff=E9rentes cat=E9gories possibles.
Maintenant pour gagner une peu de temps (la liste de produit =E9tant
longue) je souhaite qu'en fonction de mots clefs que je d=E9finirai, si
ce mot est pr=E9sent dans la d=E9signation du produit alors la cat=E9gorie
associ=E9e =E0 ce mot est directement s=E9lectionn=E9e dans la liste
d=E9roulante. (tout en me laissant la possibilit=E9 de modifier
manuellement ce choix ensuite en s=E9lectionnant une autre cat=E9gorie
dans la liste d=E9roulante)
Si aucun mot clef n'est reconnu dans la d=E9signation du composant alors
la case reste vide avec la liste de choix d=E9roulante.

je souhaiterai que ceci se fasse automatiquement pour tous les produits
de la liste, il n'y aurait ensuite qu'=E0 v=E9rifier et modifier
manuellement pour les cas particuliers.

Exemple :
En A14 le mot clef "ecrou" apparait dans la d=E9signation, alors en B14
la cat=E9gorie associ=E9e "Visserie" est automatiquement s=E9lectionn=E9e
dans la liste d=E9roulante. Mais je veux quand m=EAme garder la
possibilit=E9 de modifier ce choix en s=E9lectionnant une autre
cat=E9gorie pour cet ecrou via la liste d=E9roulante si je consid=E8re
qu'il fait plutot partie d'un ensemble elec
En A10 il n'y a pas de mot clef reconnu, la case reste vide avec la
liste d=E9roulante.

Merci de votre aide

@+

2 réponses

1 2
Avatar
jb38
Bon j'ai mis la fonction dans un module standard et elle est maintenant
reconnue mais par contre ca lance le débuggeur en indiquant erreur de
compil "EndIf sans bloc If".

voila tel que c'est dans le module :

"
Function Catégorie(Désignation, TmotsClésCatégorie As Range)
Application.Volatile
For Each m In Application.Index(TmotsClésCatégorie, , 1)
If InStr(UCase(Désignation), UCase(m.Value)) > 0 And m.Value <> ""
Then Catégorie = m.Offset(0, 1)
Exit Function
End If
Next m
Catégorie = ""
End Function
"

J'ai essayé en enlevant le End if, ca a fonctionné pour ma première
ligne mais pour les autres ça affichait 0 même s'il y avait un mot
clef dans la désignation.

Je ne comprends pas tout Merci de votre aide

@+



Ca ne fonctionne pas chez moi mais c'est la première fois que
j'utilise les fonctions et je ne suis pas sure d'avoir fait les bonnes
manip.
J'ai recopié de "function à End function" dans la feuille préchoix
automatique dans général
ensuite j'ai recopié "Êtégorie(A2;$E$2:$F$9)" dans les cases où
sont les listes déroulantes.

Mais là ça affiche l'erreur #NOM

Ai je oublié de valider une étape?

merci

@+



Fonction renvoyant la catégorie d'une désignation:
:
Function Catégorie(Désignation, TmotsClésCatégorie As Range)
Application.Volatile
For Each m In Application.Index(TmotsClésCatégorie, , 1)
If InStr(UCase(Désignation), UCase(m.Value)) > 0 And m.Value <> ""
Then
Catégorie = m.Offset(0, 1)
Exit Function
End If
Next m
Catégorie = ""
End Function

Êtégorie(A2;$E$2:$F$9)

JB


Bon he bien voila ca fonctionne bien avec une macro. Merci.

De mon coté j'essai d'y arriver sans macro mais je ne sais pas si
c'est possible. Je cherche comment avec la fonction equiv index ou
recherche, trouver si un des mots d'une liste est présent dans une
phrase. Il faut que je cherche ce qu'il y a sur le web sur ce sujet.

je vous dirai si je trouve. Si il y en a qui ont des idées elles so nt
les bienvenues

@+


MotsClés champ nommé (D5:D18)


Sub essai()
For Each c In Range([A2], [A65000].End(xlUp))
For Each m In [motsclés]
If InStr(UCase(c.Value), UCase(m.Value)) > 0 Then
c.Offset(0, 1) = m.Offset(0, 1)
Exit For
End If
Next m
Next c
End Sub

JB




Merci pour les exemples. Je ne connais déjà ce fichier très bien
foutu et qui m'a bien aidé pour comprendre et établir des tas de
listes en cascade.

Par contre, je ne dois pas avoir le niveau suffisant ou je ne sai s pas
mais je n'arrive pas à trouver dans ce fichier le moyen de fair e ce
que je veux c'est à dire faire présélectionner à Excel un e valeur
dans la liste en fonction du mot clef reconnu dans la désignati on.

Pourriez vous me guider un peu plus avec un exemple

Merci

@+




Bonjour,

Qq exemples:
http://www.excelabo.net/moteurs/compteclic.php?nom=jb-listesc ascade

JB


Bonjour,

voilà mon problème du jour (fichier d'exemple disponible si besoin):


J'ai une colonne avec une liste de produits et leurs désign ations et
je souhaite dans la colonne d'à coté affecter à chaque produit une
catégorie (elec, visserie, tolerie...) Pour cela avec Donn ée,
validation liste, j'ai créé dans chaque case de la colonn e d'à coté
un liste déroulante avec les différentes catégories pos sibles.
Maintenant pour gagner une peu de temps (la liste de produit étant
longue) je souhaite qu'en fonction de mots clefs que je déf inirai, si
ce mot est présent dans la désignation du produit alors l a catégorie
associée à ce mot est directement sélectionnée dans l a liste
déroulante. (tout en me laissant la possibilité de modifi er
manuellement ce choix ensuite en sélectionnant une autre ca tégorie
dans la liste déroulante)
Si aucun mot clef n'est reconnu dans la désignation du comp osant alors
la case reste vide avec la liste de choix déroulante.

je souhaiterai que ceci se fasse automatiquement pour tous le s produits
de la liste, il n'y aurait ensuite qu'à vérifier et modif ier
manuellement pour les cas particuliers.

Exemple :
En A14 le mot clef "ecrou" apparait dans la désignation, al ors en B14
la catégorie associée "Visserie" est automatiquement sé lectionnée
dans la liste déroulante. Mais je veux quand même garder la
possibilité de modifier ce choix en sélectionnant une aut re
catégorie pour cet ecrou via la liste déroulante si je co nsidère
qu'il fait plutot partie d'un ensemble elec
En A10 il n'y a pas de mot clef reconnu, la case reste vide a vec la
liste déroulante.

Merci de votre aide

@+














Avatar
jb38
Maintenant ça fonctionne, c'était un problème de retour à la ligne
que j'avais mal placé au niveau du Then.

Merci à ceux qui ont lu le sujet et surtout merci JB !

"
Function Catégorie(Désignation, TmotsClésCatégorie As Range)
Application.Volatile
For Each m In Application.Index(TmotsClésCatégorie, , 1)

If (InStr(UCase(Désignation), UCase(m.Value)) > 0 And m.Value <> "")
Then
Catégorie = m.Offset(0, 1)
Exit Function
End If

Next m
Catégorie = "???"
End Function


Bon j'ai mis la fonction dans un module standard et elle est maintenant
reconnue mais par contre ca lance le débuggeur en indiquant erreur de
compil "EndIf sans bloc If".

voila tel que c'est dans le module :

"
Function Catégorie(Désignation, TmotsClésCatégorie As Range)
Application.Volatile
For Each m In Application.Index(TmotsClésCatégorie, , 1)
If InStr(UCase(Désignation), UCase(m.Value)) > 0 And m.Value <> ""
Then Catégorie = m.Offset(0, 1)
Exit Function
End If
Next m
Catégorie = ""
End Function
"

J'ai essayé en enlevant le End if, ca a fonctionné pour ma première
ligne mais pour les autres ça affichait 0 même s'il y avait un mot
clef dans la désignation.

Je ne comprends pas tout Merci de votre aide

@+



Ca ne fonctionne pas chez moi mais c'est la première fois que
j'utilise les fonctions et je ne suis pas sure d'avoir fait les bonnes
manip.
J'ai recopié de "function à End function" dans la feuille préchoix
automatique dans général
ensuite j'ai recopié "Êtégorie(A2;$E$2:$F$9)" dans les cases o ù
sont les listes déroulantes.

Mais là ça affiche l'erreur #NOM

Ai je oublié de valider une étape?

merci

@+



Fonction renvoyant la catégorie d'une désignation:
:
Function Catégorie(Désignation, TmotsClésCatégorie As Range)
Application.Volatile
For Each m In Application.Index(TmotsClésCatégorie, , 1)
If InStr(UCase(Désignation), UCase(m.Value)) > 0 And m.Value <> ""
Then
Catégorie = m.Offset(0, 1)
Exit Function
End If
Next m
Catégorie = ""
End Function

Êtégorie(A2;$E$2:$F$9)

JB


Bon he bien voila ca fonctionne bien avec une macro. Merci.

De mon coté j'essai d'y arriver sans macro mais je ne sais pas si
c'est possible. Je cherche comment avec la fonction equiv index ou
recherche, trouver si un des mots d'une liste est présent dans une
phrase. Il faut que je cherche ce qu'il y a sur le web sur ce sujet.

je vous dirai si je trouve. Si il y en a qui ont des idées elles sont
les bienvenues

@+


MotsClés champ nommé (D5:D18)


Sub essai()
For Each c In Range([A2], [A65000].End(xlUp))
For Each m In [motsclés]
If InStr(UCase(c.Value), UCase(m.Value)) > 0 Then
c.Offset(0, 1) = m.Offset(0, 1)
Exit For
End If
Next m
Next c
End Sub

JB




Merci pour les exemples. Je ne connais déjà ce fichier tr ès bien
foutu et qui m'a bien aidé pour comprendre et établir des t as de
listes en cascade.

Par contre, je ne dois pas avoir le niveau suffisant ou je ne s ais pas
mais je n'arrive pas à trouver dans ce fichier le moyen de fa ire ce
que je veux c'est à dire faire présélectionner à Excel une valeur
dans la liste en fonction du mot clef reconnu dans la désigna tion.

Pourriez vous me guider un peu plus avec un exemple

Merci

@+




Bonjour,

Qq exemples:
http://www.excelabo.net/moteurs/compteclic.php?nom=jb-liste scascade

JB


Bonjour,

voilà mon problème du jour (fichier d'exemple disponibl e si besoin):


J'ai une colonne avec une liste de produits et leurs dési gnations et
je souhaite dans la colonne d'à coté affecter à chaqu e produit une
catégorie (elec, visserie, tolerie...) Pour cela avec Don née,
validation liste, j'ai créé dans chaque case de la colo nne d'à coté
un liste déroulante avec les différentes catégories p ossibles.
Maintenant pour gagner une peu de temps (la liste de produi t étant
longue) je souhaite qu'en fonction de mots clefs que je d éfinirai, si
ce mot est présent dans la désignation du produit alors la catégorie
associée à ce mot est directement sélectionnée dans la liste
déroulante. (tout en me laissant la possibilité de modi fier
manuellement ce choix ensuite en sélectionnant une autre catégorie
dans la liste déroulante)
Si aucun mot clef n'est reconnu dans la désignation du co mposant alors
la case reste vide avec la liste de choix déroulante.

je souhaiterai que ceci se fasse automatiquement pour tous les produits
de la liste, il n'y aurait ensuite qu'à vérifier et mod ifier
manuellement pour les cas particuliers.

Exemple :
En A14 le mot clef "ecrou" apparait dans la désignation, alors en B14
la catégorie associée "Visserie" est automatiquement s électionnée
dans la liste déroulante. Mais je veux quand même garde r la
possibilité de modifier ce choix en sélectionnant une a utre
catégorie pour cet ecrou via la liste déroulante si je considère
qu'il fait plutot partie d'un ensemble elec
En A10 il n'y a pas de mot clef reconnu, la case reste vide avec la
liste déroulante.

Merci de votre aide

@+
















1 2