OVH Cloud OVH Cloud

Faire une recherche a deux critére

12 réponses
Avatar
pellet15
Bonjour =E0 Tous

Dans le fichier attacher je voudrait une formule en D8
pour trouver la Long/Lat (G2:G87) la plus pr=E8s de la s=E9lection faite
en
B8 et C8.

http://cjoint.com/?lBrNIpYZwx
Merci

10 réponses

1 2
Avatar
FxM
pellet15 wrote:
Bonjour à Tous

Dans le fichier attacher je voudrait une formule en D8
pour trouver la Long/Lat (G2:G87) la plus près de la sélection faite
en
B8 et C8.

http://cjoint.com/?lBrNIpYZwx
Merci




Bonsoir,

A tester ..

Sub test()
subd = Sheets("GPS").Range("B8")
pmil = Sheets("GPS").Range("C8")
Sheets("GPS").Range("D8") = cherche(subd, pmil)
End Sub

Public Function cherche(subd, pmil)
Set liste = Sheets("GPS").Range("G1:G65000")
diff = 1000000000#: lig = -1
For Each celle In liste
If celle.Offset(0, -2).Text = subd Then
vale = celle.Offset(0, -1)
If (Abs(vale - pmil)) < diff Then
diff = Abs(vale - pmil): lig = celle.Row
End if
End If
Next celle
If lig > -1 Then cherche = Intersect(liste, Rows(lig))
End Function

@+
FxM

Avatar
pellet15
Bonsoir FxM

J'ai incorporer t'a réponce dans le fichier attacher mais
elle ne fonctionne pas :-((

peut tu regarder ou est l'erreur.
http://cjoint.com/?lCbOeMiOjZ

Merci
Avatar
FxM
pellet15 wrote:
Bonsoir FxM

J'ai incorporer t'a réponce dans le fichier attacher mais
elle ne fonctionne pas :-((

peut tu regarder ou est l'erreur.
http://cjoint.com/?lCbOeMiOjZ

Merci



Bonjour,

Dans la fonction perso cherche(...), remplace :
Set liste = Sheets("Donne").Range("AQ2:AQ65000")
par
Set liste = Sheets("Donne").Range("AR2:AR65000")

@+
FxM

Avatar
Modeste
Bonsour®
peut tu regarder ou est l'erreur.
http://cjoint.com/?lCbOeMiOjZ
j'ai pas trop compris l'objet de la question ... ni ce qu'a voulu faire le

"cramayot" ???

alors j'ai fait ça :
;o)))
http://cjoint.com/?lCvcABuj2l

liste de choix Pmil dépendante de la subdivision sélectionnée
(voir : nom definir ChoixPmil ,
utilisation de la fonction Décaler pour actualiser la liste
de meme pour definir dynamiquement la plage Subd)

puis affichage SUR le graphe de la position cherchée.
Affichage des coordonnées du point cherché avec hyperlien Maps google
et sans macro ... na...!!!
;o)))

@+
--
les news pas à jour ?? ne passez plus par votre FAI, les news à la source
!!!
placez ce raccourci dans la ligne de commande
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
pellet15
Bonsoir FxM

ok cela fonctionne mais très lent.

je le transfer dans mon fichier principal,il y a 10 foix plus de donner
:-((
Merci
Avatar
pellet15
Bonsoir Modeste

Le but est d'entré un millage et une Subd et de trouver la Lon/Lat
le plus près du mille.
On sélectionne la Subd et ont inscrie le mille désirer et je
voudrait qu'une fenêtre
souvre et me demande ci je veut exécuté la macro "nRoute" ou
"MapsGoogle".

Merci
Avatar
Modeste
Bonsour®
pellet15 wrote:
Le but est d'entré un millage et une Subd et de trouver la Lon/Lat
le plus près du mille.
On sélectionne la Subd et ont inscrie le mille désirer et je
voudrait qu'une fenêtre
souvre et me demande ci je veut exécuté la macro "nRoute" ou
"MapsGoogle".


l'exemple que j'ai fourni :
choix d'une Subdivision dans la liste (Butler, St-Hyacinte, Raccordement,
Montreal, Kingston)
puis choix DANS LA LISTE d'un millage (parmi les millages appartenant à
cette subdivision)
provoque l'affichage des coordonnées de ce millage (zone bleu ciel $AO$1 )
un double-click sur cette zone execute la macro MapsGoogle.

je pense que ceci correspond à ta demande,

mais comme déja répondu précédement,
je n'ai aucun idée de la façon dont ces millages sont calculés :
? distance sur la voie par rapport à un point d'origine
? quel est ce point d'origine
Notament :
dans la subdivision Montréal (si tel est cas!) , la succesion des millages
n'est pas respectée !!!
il y également superposition partielle des subdivisions Kingston et Montréal

le petit plus ;o)))
j'ai ajouté une représentation graphique du réseau (limité aux données
fournies)
avec une couleur par subdivision
et la position du millage choisi
bien entendu l'échelle est non significative, mais je pense que les
proportions sont correctes
la difficulté due à l'étendue géographique du réseau fait qu'il est
difficile de mettre une image en fond de plan

ce que j'avais fait dans ma réponse de septembre ;o)))

@+

--
les news pas à jour ?? ne passez plus par votre FAI, les news à la source
!!!
placez ce raccourci dans la ligne de commande
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
Daniel
Bonsoir Modeste

L'idée est de'inscrire un mille rechercher pour après voir ou est cituer ce
millage
dans le programme "nRoute" ou dans "MapsGoogle".
Merci

"Modeste" a écrit dans le message de news:

Bonsour®
pellet15 wrote:
Le but est d'entré un millage et une Subd et de trouver la Lon/Lat
le plus près du mille.
On sélectionne la Subd et ont inscrie le mille désirer et je
voudrait qu'une fenêtre
souvre et me demande ci je veut exécuté la macro "nRoute" ou
"MapsGoogle".


l'exemple que j'ai fourni :
choix d'une Subdivision dans la liste (Butler, St-Hyacinte, Raccordement,
Montreal, Kingston)
puis choix DANS LA LISTE d'un millage (parmi les millages appartenant à
cette subdivision)
provoque l'affichage des coordonnées de ce millage (zone bleu ciel $AO$1 )
un double-click sur cette zone execute la macro MapsGoogle.

je pense que ceci correspond à ta demande,

mais comme déja répondu précédement,
je n'ai aucun idée de la façon dont ces millages sont calculés :
? distance sur la voie par rapport à un point d'origine
? quel est ce point d'origine
Notament :
dans la subdivision Montréal (si tel est cas!) , la succesion des
millages n'est pas respectée !!!
il y également superposition partielle des subdivisions Kingston et
Montréal

le petit plus ;o)))
j'ai ajouté une représentation graphique du réseau (limité aux données
fournies)
avec une couleur par subdivision
et la position du millage choisi
bien entendu l'échelle est non significative, mais je pense que les
proportions sont correctes
la difficulté due à l'étendue géographique du réseau fait qu'il est
difficile de mettre une image en fond de plan

ce que j'avais fait dans ma réponse de septembre ;o)))

@+

--
les news pas à jour ?? ne passez plus par votre FAI, les news à la source
!!!
placez ce raccourci dans la ligne de commande
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr





Avatar
FxM
pellet15 wrote:
Bonsoir FxM

ok cela fonctionne mais très lent.

je le transfer dans mon fichier principal,il y a 10 foix plus de donner
:-((
Merci



Bonsoir,

Excuses-moi du délai, je rentre de déplacement. D'ailleurs, il vaut
mieux ne pas s'absenter ... 895 messages en 4 jours sur MPFE !

Ceci étant dit, si tu es sûr que tes 'subd' sont regroupés et qu'il n'y
a donc pas d'isolés, tu peux terminer la boucle beaucoup plus
rapidement. C'est l'objet de la variable 'rep' rajoutée ci-dessous en
plusieurs endroits. Le 'if rep > 10' laisse une petite tolérance ;o)

Teste et dis-moi.

@+
FxM

Public Function cherche(subd, pmil)
Set liste = Sheets("Donne").Range("AR2:AR65000")
diff = 1000000000#: lig = -1: rep = 0
For Each celle In liste
If celle.Offset(0, -2).Text = subd Then
vale = celle.Offset(0, -1): rep = rep + 1
If (Abs(vale - pmil)) < diff Then
diff = Abs(vale - pmil): lig = celle.Row: rep = 0
End If
End If
If rep > 10 Then Exit For
Next celle
If lig > -1 Then cherche = Intersect(liste, Rows(lig))
End Function



PS pour AV : Alain, n'aurais-tu pas un petit .find (que je ne maîtrise
pas du tout) en stock ? :o)

Avatar
Daniel
Bonsoir FxM

c'est ok
Merci

"FxM" a écrit dans le message de news:

pellet15 wrote:
Bonsoir FxM

ok cela fonctionne mais très lent.

je le transfer dans mon fichier principal,il y a 10 foix plus de donner
:-((
Merci



Bonsoir,

Excuses-moi du délai, je rentre de déplacement. D'ailleurs, il vaut mieux
ne pas s'absenter ... 895 messages en 4 jours sur MPFE !

Ceci étant dit, si tu es sûr que tes 'subd' sont regroupés et qu'il n'y a
donc pas d'isolés, tu peux terminer la boucle beaucoup plus rapidement.
C'est l'objet de la variable 'rep' rajoutée ci-dessous en plusieurs
endroits. Le 'if rep > 10' laisse une petite tolérance ;o)

Teste et dis-moi.

@+
FxM

Public Function cherche(subd, pmil)
Set liste = Sheets("Donne").Range("AR2:AR65000")
diff = 1000000000#: lig = -1: rep = 0
For Each celle In liste
If celle.Offset(0, -2).Text = subd Then
vale = celle.Offset(0, -1): rep = rep + 1
If (Abs(vale - pmil)) < diff Then
diff = Abs(vale - pmil): lig = celle.Row: rep = 0
End If
End If
If rep > 10 Then Exit For
Next celle
If lig > -1 Then cherche = Intersect(liste, Rows(lig))
End Function



PS pour AV : Alain, n'aurais-tu pas un petit .find (que je ne maîtrise pas
du tout) en stock ? :o)



1 2