Help!! très urgent!!

Résolu
cs_Ledaf Messages postés 22 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 26 septembre 2008 - 25 oct. 2007 à 19:50
cs_Ledaf Messages postés 22 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 26 septembre 2008 - 25 oct. 2007 à 23:33
Bonjour à tous,

voilà j'ai un petit pb que je vais de suite vous expliquer:

mon tableau excel contient 2 feuilles:
- la 1ère appelée "gamme" contient 3 colonnes:
            Numéro         Périodicité            Durée
            OPE 44            12                          1
            OPE 54            4                            5
               ....
Je vous ait mis un exemple pour que vous voyait un mieux ce que je veux dire

- la 2ème appeléé "planning" contient les 3 même colonnes que l'autre feuille sauf que la colonne "durée" est vide.

Mon but est que lorsque je rentre dans la feuille "planning" mon numéro et ma périodicité cela affiche directement la durée.
Le pb c'est qu'un numéro peut avoir plusieurs périodicité (que l'on retrouve sur plusieurs lignes) et que j'ai une bonne centaine de numéros.
J'ai besoin de ce code très rapidement, quelqu'un peut m'aider??

Ledaf

4 réponses

caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 décembre 2007
25 oct. 2007 à 21:04
C'est clair que dans ton cas, les fonctions excel ne suddisent pas.
Voilà la fonction que je te propose, chez moi ça marche bien.
Par contre, il faudra que t'y fasses quelques modif. En effet, la cellule référence que j'ai choisie est la cellule B3 (<=>cells(3,2)) de la feuille nommée "programme" donc il faut que tu aies exactement la même disposition. A toi de changer le code pour le faire correspondre à ta situation...

Function cherche_duree(num As Variant, period As Variant)
Dim feuil_ref As Worksheet
Dim cell_ref As Range
Dim i_tab As Long, nb_lig_tableau As Long

Set feuil_ref = ThisWorkbook.Worksheets("programme")
Set cell_ref = feuil_ref.Cells(3, 2)        'cellule choisie en B3

    i_tab = 0
    Do Until cell_ref.Offset(i_tab + 1, 0).Value = ""
        i_tab = i_tab + 1
    Loop
    nb_lig_tableau = i_tab
   
    For i_tab = 1 To nb_lig_tableau
        If cell_ref.Offset(i_tab, 0).Value = num Then
            If cell_ref.Offset(i_tab, 1).Value = period Then
                cherche_duree = cell_ref.Offset(i_tab, 2).Value
                Exit For
            End If
        End If
    Next i_tab

End Function

Une fois que tu as inséré cette fonction dans un module, tu n'as plus qu'à appeler la fonction dans ta case durée. Par exemple en D6 : =cherche_duree(B6;C6)

Voilà, bon courage

La haine aveugle n'est pas sourde
3
LePtitMarco Messages postés 1 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 25 octobre 2007
25 oct. 2007 à 21:39
Bonjour, je prends au vol et je m'apperçois que tu as une réponse..

A sujet compliqué réponse simple ?
Je te proposais une solution primaire :

insérer un colonne "réf" avant durée dans la feuille 'game',
y placer la formule : concatener(numéro;périodicité) = CONCATENER(A2;B2)
nommer " durées " la plage formée par les deux colonnes ("réf" et "durée")
entrer la formule =RECHERCHEV(CONCATENER(A2;B2);durées;2)

<col style=\"width: 60pt;\" span=\"2\" width=\"80\" /><col style=\"width: 11pt;\" width=\"14\" /><col style=\"width: 60pt;\" width=\"80\" /><col style=\"width: 60pt;\" width=\"80\" /><col style=\"width: 13pt;\" width=\"17\" />----
Numero, Périodicité, , réf, Durée, , ----
OPE 44, 1, , OPE 441, 10, , ----
OPE 45, 5, , OPE 455, 20, , ----
OPE 44, 7, , OPE 447, 30, , ----
OPE 47, 1, , OPE 471, 40, , ----
OPE 48, 7, , OPE 487, 50
<col style=\"width: 60pt;\" span=\"3\" width=\"80\" />----
numero, Périodicité, Durée, ----
OPE 44, 1, 10, ----
OPE 45, 5, 30, ----
OPE 44, 7, 30, ----
OPE 47, 1, 40, ----
OPE 48, 7, 50

Tu peux aussi récupérer les fonctions de recherche excel avec Worksheetfunction

Salut et à +
3
caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 décembre 2007
25 oct. 2007 à 21:54
TRES bonne idée de concaténer, ça évite le visual.
Je rajoute juste que dans ce cas, il vaut mieux mettre un symbole entre les 2 valeurs (genre" "/" ou ":").
En effet, concatener "OPE 7" et "15" donne "OPE 715" comme avec "OPE71" et "5"
Alors que "OPE 7/15" reste unique.

La haine aveugle n'est pas sourde
0
cs_Ledaf Messages postés 22 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 26 septembre 2008
25 oct. 2007 à 23:33
Merci à tous les deux de votre aide ça marche nikel, encore merci!!!

Ledaf
0
Rejoignez-nous