Rechercher une valeur ds intervals de valeur

Résolu/Fermé
Martin - 16 oct. 2007 à 13:50
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 - 17 oct. 2007 à 15:10
Bonjour,
Voici mon probleme :
J'ai des "codes" et des "types de codes"
les types de codes sont identifiés par des plages (un code se trouve forcément dans une plage et a donc forcément un type de code):

Codes de 600000 à 799999

Types de codes :

Type de code1
de à
600000 619999
700000 749999
760000 789999

Type de code2
de à
620000 649999
750000 759999

Type de code3
de à
650000 699999
790000 799999


La j'ai simplifié parce que en réalité chaque type de code correspond à environ 10 plages différentes.

Je cherche une facon d'obtenir, en tapant le code dans une cellule, le type de code auquel il correspond (dans une autre cellule)
Quelque chose du genre :
si je met en 3 colonnes : "de" ; "à" ; "type de code"

-> "dans les colonnes de, à, type de code,
si code>de et code<à
alors ma cellule = type de code


Remarques :
il n'est pas possible d'utiliser des "si(...)" imbriqués car il y en aurait trop
je ne peux pas faire une liste exhaustive de tous les codes les uns en dessous des autres, il y en aurait trop (200 000)


Merci beaucoup d'avance pour votre aide!
Martin
martindh@hotmail.com si nécessaire

10 réponses

eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
16 oct. 2007 à 22:50
heuuu oui, c'est que j'ai oublié de joindre le fichier :-)
merci, je corrige
http://www.cijoint.fr/cij19034132428847.xls
Pour la version formule il faut recopier les cellules F13 à I13 vers le bas pour corriger le calcul....
eric
1
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 1 448
16 oct. 2007 à 23:32
Bonsoir eriiic,
Merci infiniment, c'est maintenant tout clair et très instructif.
Bonne fin de soirée.
0
Utilisateur anonyme
16 oct. 2007 à 14:58
Je suppose que c'est dans excel. Voir si l'écriture d'une macro qui se lancerait à l'open du fichier ne pourrait pas résoudre le pb.
0
oui j'ai oublié de préciser c'est bien dans Excel...
Pour la macro...elle ferait comment?
Je n'ai pas de préférence macro ou formule, tant que j'arrive à trouver mon résultat
sachant qu'une formule serait mieux car je voudrais dans un fichier contenant plein de code dans une colonne, mettre le type de code dans la cellule d'à coté...

Merci d'avance!
0
Utilisateur anonyme
16 oct. 2007 à 15:28
outils macro

puis on écrit en VB

exemple pour donner une valeur à une cellule

range("A3").value = quelquechose qui peut être le résultat d'un calcul ou de plein de chose;

Pour boucler on peut faire un truc du genre :

for i = 1 to 100
range("A"+Cstr(i)).value )= i
next i

quand on est dans outils macro, il y a une aide en ligne pour Visual basic
0

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

Posez votre question
Merci Giheller
en revanche je ne suis pas un pro des macros, que pensais tu obtenir avec ce genre d'itération?
J'ai un peu de mal à comprendre ou tu veux en venir...?


Pour préciser ma demande :
https://www.cjoint.com/?kqqkMt7ON2
Comment obtenir les résultats de la colonne F ?

Une formule à recopier serait idéale...
0
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
16 oct. 2007 à 17:32
Bonjour,

Ci joint une solution par formule sans vba
http://www.cijoint.fr/cij58617924028818.xls

J'ai modifié ta présentation de ta liste de code, triée par 'DE' et espaces supprimés.
Je t'ai décomposé la formule en 4 formules que tu puisses suivre le raisonnement et ne pas avoir un truc illisible

Teste et dis si ça te convient sinon on pourra faire une fonction personnalisée qui te ramera directement la valeur

eric
0
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
16 oct. 2007 à 19:54
PS:
une petite erreur c'est glissée sur la feuille pendant les tests.
Recopie la formule I13 sur I14:I17
eric
0
Utilisateur anonyme
16 oct. 2007 à 19:16
La solution d'Eric esr sans doute plus simple que la mienne, surtout si tu ne connais pas la façon de coder et de faire des macros. Désolé c'était une idée complexe.
Jean-Luc
0
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
16 oct. 2007 à 20:43
Re,

Nouvelle feuille avec la variante fonction personnalisée.
Utilisation :
tu sélectionnes ta cellule de destination
menu "insertion / fonction..." rubrique 'personnalisées'
tu choisis TypeCode ou Martin.xls!TypeCode si tu es dans un autre classeur.
Tu cliques sur la cellule contenant la reference à contrôler, et tu as ta réponse

Si tu travaille dans un autre classeur il faudra ouvrir celui-ci pour disposer de la fonction. A la limite une fois saisie ta liste tu peux le mettre en masqué pour ne pas gener, la fonction ser accessible.
eric
0
Le Pingou Messages postés 12155 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 septembre 2024 1 448
16 oct. 2007 à 22:26
Bonsoir eriiic,
C'est par hasard que j'ai regardé ce poste et j'ai admiré la manière de faire.
Par contre je n'arrive pas à comprendre ce dernier poste 8 ..... pouvez-vous éclairer ma lanterne...
Merci
0
Bonjour,
Alors vraiment un grand merci à tous.
Je pensais pas avoir une aussi grande réactivité.
Ca répond exactement à ce que je cherchais.
Eric ta solution est parfaite, d'autant que je ne connaissais pas la fonction personnalisée.
Juste une petite question : comment définir une fonction personnalisée?
Merci
Martin
0
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
17 oct. 2007 à 15:10
Bonjour,

une fonction personnalisée n'est rien d'autre qu'un programme en vba déclaré en tant que fonction... Bien sûr il faut connaitre un peu vba.
Fait un clic droit sur l'onglet de ta feuille et choisi 'visualiser le code', tu double-cliques sur le module 1 et tu peux lire la déclaration de la fonction :
Function TypeCode(Ref As Range) As String
    Dim c As Range, rep As String
    For Each c In Range("TypesCodes")
        If c.Offset(0, 1).Value <= Ref.Value And c.Offset(0, 2).Value >= Ref.Value Then
            rep = c.Value
            Exit For
        Else
            rep = "inconnu"
        End If
    Next c
    TypeCode = rep
End Function


Mainenant tu peux essayer d'en créer des simples pour découvrir, ensuite tu pourras souvent te simplifier tes pb. N'hésites pas à utiliser l'aide d'excel qui est très bien faite.

Si ça te parait complet n'oublie pas de mettre en résolu ici (en passant par 'voir mes interventions')
eric
0