[EXCEL] Formule

Fermé
Eskow Messages postés 46 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 30 juillet 2009 - 19 juin 2009 à 11:15
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 7 mai 2015 à 15:17
Bonjour à tous,

Je suis actuellement en train de travailler sur un fichier excel pour mon entreprise et je bloque !

Le problème en question :

Onglet 1:

J'ai une base de données telle que :

Colonne A : Article
Exemple :
WH1000
WH1000
WH1000
WH1500
WH1500
WH2000
WH2000
WH2500
WH2500
WH2500
...etc...

Colonne B : Nomenclature
Exemple :
AB100
AB350
AB400
AB100
WP450
...etc...

Cela signifie que l'article WH1000 est composé des matières premières AB100, AB350 et AB400. L'article WH1500 est quant à lui composé des matières premières AB100 et WP450 ...etc...

J'aimerai faire en sorte que lorsque que quelqu'un tappe le nom d'un article sur un formulaire, toutes les nomenclatures de l'article en question apparaissent ligne après ligne, à l'aide par exemple de rechercheV.

Je suis complétement perdu, je ne pense pas avoir les acquis pour réaliser une telle formule, et je vous prie de m'aider.

J'espère une réponse de votre part, ou au moins quelques pistes qui m'empecheront de chercher là où je ne trouverai rien :)

Merci d'avance, je reste à votre disposition pour d'éventuelle explications détaillées de mon problème.

Bonne journée ;)

18 réponses

Le nom est il lié au code article à un moment ou à un autre.

J'ai eus quelques soucis avec mon excel et michel_m m'a très bien dépanné.

Ref :
http://www.commentcamarche.net/forum/affich 12938476 vba excel selectionner un plage

J'espère que ça pourra un peu t'éclairer.

Bon courage
0
TheRaptor60 Messages postés 1 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 19 juin 2009
19 juin 2009 à 11:31
pour cela tu peut creer d'autre tableaux pour chaque article et utilisé ensuite la recherche v
0
coco_rico Messages postés 32 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 19 juin 2009
19 juin 2009 à 11:36
bonjour,
la Recherchev s'arrête toujours à la première valeur trouvée, ce n'est pas idéal pour faire des listes, je pense qu'une petite macro s'impose pour résoudre ton problème.
0
Eskow Messages postés 46 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 30 juillet 2009 1
19 juin 2009 à 11:39
Merci Lila, je regarde çà.

En effet, j'ai un lien entre les articles et les nomenclatures.
Mon seul véritable problème réside en fait sur la recherchev.
Si je recherchev l'article saisie par une personne sur le formulaire, la recherchev va me renvoyer que la première matière première de l'article en question et non toutes les matières premières ligne après ligne.

Merci de vos réponses rapides en tout cas :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Eskow Messages postés 46 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 30 juillet 2009 1
19 juin 2009 à 11:44
Disons que je n'y connais pas grand chose en macro. Sans l'aide assistée de Excel, je ne sais pas en faire. Mais lui faire répéter les recherchev va toujours me revoyer la même, non ?
0
coco_rico Messages postés 32 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 19 juin 2009
19 juin 2009 à 11:53
l'idée c'est que pour chaque produit tu dois avoir autant de lignes qu'il a de nomenclatures, après une petite macro s'impose. la macro parcourera la colonne produit, quand elle voit le bon identifiant et tant que celui ne change pas, elle reportera la nomenclature correspondante dans une zone que tu choisiras.
mais construis déjà le tableau.
0
Eskow Messages postés 46 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 30 juillet 2009 1
19 juin 2009 à 12:01
Ce tableau en question existe déjà. C'est celui que j'ai décris dans l'explication. Sinon je ne vois pas vraiment de quel tableau tu parles.
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
19 juin 2009 à 12:15
Bonjour à tous,

J'interviens dans cette discussion car je me demande si la solution n'est pas dans l’astuce de Lermitte222 qui se trouve ici : http://www.commentcamarche.net/faq/sujet 12543 vba recherchev polyvalente. J'ai eu l'occasion de réfléchir à cette astuce, elle permet d'étendre la fonction de Recherchev.

Me dire si cela correspond et si éventuellement tu as besoin d'aide pour la mise en œuvre.

A+
0
Eskow Messages postés 46 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 30 juillet 2009 1
19 juin 2009 à 13:34
Ca m'a tout l'air d'être cela dont il s'agit Pilas, Merci beaucoup :)

Cependant, je n'y comprends pas grand chose. Si tu peux m'aider à m'être en place cette génialissime recherchev par rapport à mon problème, je t'en serai reconnaissant ! :)

Merci d'avance
0
coco_rico Messages postés 32 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 19 juin 2009
19 juin 2009 à 13:53
c'est tout à fait ça et plus même.

bon courage à vous.
0
coco_rico Messages postés 32 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 19 juin 2009
19 juin 2009 à 13:59
au fiat, j'ai oublié eskow, dans ton tableau si par exemple le poduit A possède 3 nomenclatures N1, N2, N3 tu dois avoir 3 lignes avec A comme produit associé avec les nomenclatures respectives.

A+
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
19 juin 2009 à 15:44
Re bonjour,

Voila, je te propose une illustration de l'utilisation de cette fonction dans le fichier joint :

http://www.cijoint.fr/cjlink.php?file=cj200906/cijUz6MjJd.xls

Regarde si tu peux l'adapter.

A+
0
Bonjour,
J'aimerai avoir une adaptation du fichier de "Pilas31".
En fait j'ai un listing reprenant le nom et le prénom, sachant qu'il peut y avoir plusieurs personnes portant le même nom.
Il me faudrait pouvoir en entrant le nom, avoir une liste déroulante pour pouvoir choisir le prénom.
Merci d'avance à tous.
Cordialement.
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643 > Renaud
14 oct. 2009 à 16:54
Bonjour,

Dans le fichier exemple que j'ai donné, il suffit de nommer la plage de résultat (insertion/ nom /définir dans Excel 2003)

Puis s'en servir comme liste de validation du champ prénom. (Données/validation autoriser liste et le nom de la liste défini plus haut, toujours dans Excel 2003)

Ma réponse est un peu courte car j'ai peu de temps, me dire si ce n'est pas clair, je peux alors être plus précis ce soir

(en attendant j'enlève le résolu de ce post)

A+
0
Renaud > pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020
14 oct. 2009 à 17:50
Merci de ta réponse si rapide mais j'ai énormément de noms et faire une liste pour chaque serai trop long (surtout que des nouveaux noms/prénoms vont peut être s'y ajouter).
En fait il me faudrait exactement la même chose que ton tableau mais à la place d'avoir plusieurs lignes (autant que de prénoms) dans la colonne "Résultats", il ne m'en faut qu'une seule avec possibilité de choisir le prénom dans cette cellule.
La ligne précédente et la ligne suivante contiennent eux aussi un nom/prénom.

Exemple :

Ligne 1 : Dupont Pierre
Ligne 2 : Durant Avoir une liste déroulante de tout les Durant
Ligne 3 : Martin Julien
...

Merci d'avance et si ce n'est pas assez clair, n'hésite pas à me demander.

Cordialement.
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643 > Renaud
15 oct. 2009 à 01:51
Bonsoir,

J'ai adapté mon fichier exemple à ton cas. J'espére avoir bien compris. Tu trouveras le fichier ici :

http://www.cijoint.fr/cjlink.php?file=cj200910/cijK2IakDV.xls

J'ai modifié la macro qui s'appelle à présent RechercheVmultiHor car elle cherche toujours dans une liste verticalement mais toutes les occurences trouvées se déclinent horizontalement.

Ainsi j'ai supposé que la liste complète des noms et prénoms se trouve dans une feuille "Base de Noms"

Dans la feuille 1 dans chaque ligne de nom, se trouvent toutes les occurences de prénom à partir de la colonne K. La colonne B dépend d'une liste prenant ces valeurs de K à Q dans l'exemple.

Voilà, dis moi si j'ai bien compris ta demande

A+
0
Pierre > pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020
5 mai 2015 à 11:40
Bonjour à vous et vraiment je vous trouve au top question solution

mon problème est que j'utilise la fonctions d epila qui marche super mais donne les résultat en vertical, je vois que tu as fait un fonctions pour les résultat en horizontal mais l'accés a ton fichier n'est plus valide et donc je ne vois pas ce qu'il faut changer dans la macro pour que ce soit horizontal

merci de votre aide
Pierre
0
Eskow Messages postés 46 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 30 juillet 2009 1
22 juin 2009 à 08:09
C'est exactement cela Pilas, merci beaucoup.

Cependant, je n'arrive pas à faire fonctionner cette fonction quand 2 critères de la recherchevmulti se situe dans un autre classeur que la cellule critère.

J'ai l'impression que la recherchevmulti ne trouve pas de résultat car elle me renvoit #FAUTE.

Si tu as encore une petite idée, je suis preneur.
Si je trouve, je te dirai çà, merci d'avance :)

EDIT : Voilà ma recherchevmulti
=RECHERCHEVmulti('[Classeur1.xls]Articles'!$A$3;$G$3;'[Classeur1.xls]Articles'!$K$3)

Dans [Classeur1.xls]Articles'!$A$3, j'ai la colonne des articles.
Dans $G$3, j'ai la cellule dans laquelle l'utilisateur saisie un nom d'article.
Dans [Classeur1.xls]Articles'!$K$3, j'ai la colonne des nomenclatures.
0
effectivement, les références de la fonction nécessitent que le classeur dans lequel s'effectue la recherche soit ouvert. Pour que ça marche, il faut l'ouvrir puis écrire (ou ré-écrire la formule).

bonne journée.
0
Eskow Messages postés 46 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 30 juillet 2009 1
22 juin 2009 à 10:35
Les deux classeurs sont ouverts, je n'ai pas écrit [Classeur1.xls]Articles'!$A$3, j'ai juste cliqué sur la cellule en question dans le classeur 1.
Cela ne marche toujours pas, mais merci d'essayer coco_rico :)
0
bonjour, chez moi ça marche. n'oublie pas de ré-écrire la formule dans toute la colonne des formules après ouverture du classeur de recherche.

bon courage.
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
22 juin 2009 à 11:24
Bonjour à tous,

Oui, effectivement, il y avait un problème quand le classeur de recherche n'est pas le même que celui qui utilise la fonction.

Je viens de faire une adaptation de la fonction pour qu'elle fonctionne dans tous les cas.

Tu peux remplacer la fonction et me dire si c'est correct

Merci.


Option Explicit

'RD =cellule où commencer la recherche
'RC = cellule critère
'RDT = cellule où chercher la donnée
'Ligne rechercher jusque ligne... (optional) si 0 cherche jusqu'au bout de la ligne

Public Function RechercheVmulti(RD As Range, RC As Range, RDT As Range, _
            Optional Ligne As Long = 0)

Dim i As Integer, e As Integer, Txt As String
Dim LigE As Long, ColE As Long 'où écrire résultats
Dim Col As Integer
Dim Lig As Long, Occ As Long
Dim FeuilE As Worksheet, FeuilRD As Worksheet, FeuilRDT As Worksheet

    On Error GoTo sortie
    LigE = Application.Caller.Row
    ColE = Application.Caller.Column
    Set FeuilE = Application.Caller.Parent
    Application.Volatile
    Lig = RD.Row ' Ligne où commencer la recherche
    Col = RD.Column 'Colonne où commencer la recherche
    Set FeuilRD = RD.Parent
    Set FeuilRDT = RDT.Parent
    If Ligne = 0 Then
        Ligne = Range(FeuilRD.Cells(65536, Col), FeuilRD.Cells(65536, Col)).End(xlUp).Row
    End If
    'Recherche le numéro de l'occurrence à trouver
    For Occ = LigE - 1 To 1 Step -1
        Txt = FeuilE.Cells(Occ, ColE).Formula
        If Txt = FeuilE.Cells(LigE, ColE).Formula Then
            e = e + 1
        End If
    Next Occ
    For i = Lig To Ligne
        If FeuilRD.Cells(i, Col) = RC Then
            If e <> 0 Then
                e = e - 1
            Else
                RechercheVmulti = FeuilRDT.Cells(i, RDT.Column)
                Exit Function
            End If
        End If
    Next i
    'Si plus trouvé de concordance
    RechercheVmulti = ""
Exit Function
sortie:
    'si erreur dans la formule, non détectée par Excel.
    RechercheVmulti = "#FAUTE!"
End Function
0
Eskow Messages postés 46 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 30 juillet 2009 1
22 juin 2009 à 11:32
Miracle, ou pas, çà fonctionne.

Merci beaucoup Pilas, cette outil est génial, nul doute que je m'en servirai très souvent.

Bonne continuation, je passe le sujet en résolu :)
0