besoin code pour fonction vb - récupération valeur d'un tableau
4 réponses
Sandrine
Bonjour,
Quel serait le code pour récupérer via une fonction VB, la voire les valeur
d'une table.
Disons que j'ai un fichier EXCEL (ou txt tabulé) avec CP et VILLE
Dans un logiciel permettant de traiter des fonctions VB à travers une boite
de dialogue,
comment faire pour qu'en saisissant un code postal, il m'indique dans la
ville ??
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jean-marc
"Sandrine" a écrit dans le message de news:eavmk4$a50$
Bonjour,
Quel serait le code pour récupérer via une fonction VB, la voire les
valeur
d'une table.
Disons que j'ai un fichier EXCEL (ou txt tabulé) avec CP et VILLE
Dans un logiciel permettant de traiter des fonctions VB à travers une
boite
de dialogue, comment faire pour qu'en saisissant un code postal, il m'indique dans
la
ville ??
Bonjour,
il faut faire en 2 etapes: - Charger les données en mémoire - Ecrire la fonction qui à partir d'un CP donne la ville.
Je ne sais pas de quels pays sont les codes postaux dont tu parles, on va supposer que ce sont des codes postaux français donc sur 5 chiffres.
Une astuce consisite à déclarer un tableau de 99.999 entrées. Il suffit de lire dans le fichier les couples (CP;ville) et de stocker la ville dans la case correspobdant à la valeur de CP. Exemple: Rennes (35000) ira à la position 35000 du tableau.
POur faire simple, on va écrire une fonction DonneVille() qui se chargera elle même de s'initialiser. Voice le code pour faire cela (c'est un exemple):
Option Explicit
'-------------------------------------------------------------- ' Procedure : DonneVille ' DateTime : 4/08/2006 20:00 ' Author : Jean-Marc ' Purpose : Retourne la Ville correspondant à un code postal donné ' Note: la fonction se charge elle même de son init '-------------------------------------------------------------- ' Public Function DonneVille(CodePostal As String) As String Const MAX_CP As Long = 99999 Dim DataFile As String Static InitFaite As Boolean Static Villes(MAX_CP) As String Dim ValCP As Long Dim result As Boolean
' mettre ici l'emplacement du fichier de données DataFile = App.Path & "cpville.txt"
' si l'init n'est pas faite If Not InitFaite Then ' on la fait result = InitDonnees(DataFile, Villes) ' on vérifie que tout c'est bien passé If Not result Then ' si non on affiche par exemple un message d'erreur MsgBox "Une erreur s'est produite." ' Ici on peut quitter ou faire ce qu'on veut End If ' et on note que l'init est faite InitFaite = True End If ' on convertit le code postal passé en paramètre sous forme ' d'une chaine en une valeur numérique ValCP = Val(CodePostal) ' et on retourne la valeur du tableau à cet endroit DonneVille = Villes(ValCP) End Function
'----------------------------------------------------------------------- ---------------- ' Procedure : InitDonnees ' DateTime : 4/08/2006 20:01 ' Author : Jean-Marc ' Purpose : Initialisation de la fonction DonneVille ' Le fichier de données est un fichier tablué de la forme: ' code_postal;ville '----------------------------------------------------------------------- ---------------- ' Private Function InitDonnees(szDataFile As String, _ szAnArray() As String) As Boolean Dim f As Integer Dim CP As String Dim Ville As String Dim szData As String Dim p As Long
' trap l'erreur si par exemple le fichier ' n'existe pas On Error GoTo InitDonnees_ERR
' ouvre f = FreeFile Open szDataFile For Input As #f ' lire en boucle jqa la fin While Not EOF(f) ' lire une ligne Line Input #f, szData ' si pas vide If szData <> "" Then ' decouper en CP, VIlle p = InStr(szData, ";") If (p > 0) And (p < Len(szData)) Then CP = Mid$(szData, 1, p - 1) Ville = Mid$(szData, p + 1) ' ecrire dans le tableau à la bonne position szAnArray(Val(CP)) = Ville End If End If Wend ' on referme Close #f ' tout est ok InitDonnees = True ' et on quitte InitDonnees_END: Exit Function
InitDonnees_ERR: ' ici une erreur s'est produite ' la focntion va sortir en retournant FALSE Resume InitDonnees_END End Function
Private Sub Command1_Click() Dim CP As String Dim Ville As String
' ' Exemple d'utilisation ' CP = "56000" Ville = DonneVille(CP) MsgBox "CP = " & CP & " Ville=" & Ville
End Sub
Et voila, espérant t'avoir aidé.
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Sandrine" <contact@archives-nord.com> a écrit dans le message de
news:eavmk4$a50$1@s1.news.oleane.net...
Bonjour,
Quel serait le code pour récupérer via une fonction VB, la voire les
valeur
d'une table.
Disons que j'ai un fichier EXCEL (ou txt tabulé) avec CP et VILLE
Dans un logiciel permettant de traiter des fonctions VB à travers une
boite
de dialogue,
comment faire pour qu'en saisissant un code postal, il m'indique dans
la
ville ??
Bonjour,
il faut faire en 2 etapes:
- Charger les données en mémoire
- Ecrire la fonction qui à partir d'un CP donne la ville.
Je ne sais pas de quels pays sont les codes postaux dont tu
parles, on va supposer que ce sont des codes postaux français
donc sur 5 chiffres.
Une astuce consisite à déclarer un tableau de 99.999 entrées.
Il suffit de lire dans le fichier les couples (CP;ville) et de
stocker la ville dans la case correspobdant à la valeur de CP.
Exemple: Rennes (35000) ira à la position 35000 du tableau.
POur faire simple, on va écrire une fonction DonneVille() qui
se chargera elle même de s'initialiser.
Voice le code pour faire cela (c'est un exemple):
Option Explicit
'--------------------------------------------------------------
' Procedure : DonneVille
' DateTime : 4/08/2006 20:00
' Author : Jean-Marc
' Purpose : Retourne la Ville correspondant à un code postal donné
' Note: la fonction se charge elle même de son init
'--------------------------------------------------------------
'
Public Function DonneVille(CodePostal As String) As String
Const MAX_CP As Long = 99999
Dim DataFile As String
Static InitFaite As Boolean
Static Villes(MAX_CP) As String
Dim ValCP As Long
Dim result As Boolean
' mettre ici l'emplacement du fichier de données
DataFile = App.Path & "cpville.txt"
' si l'init n'est pas faite
If Not InitFaite Then
' on la fait
result = InitDonnees(DataFile, Villes)
' on vérifie que tout c'est bien passé
If Not result Then
' si non on affiche par exemple un message d'erreur
MsgBox "Une erreur s'est produite."
' Ici on peut quitter ou faire ce qu'on veut
End If
' et on note que l'init est faite
InitFaite = True
End If
' on convertit le code postal passé en paramètre sous forme
' d'une chaine en une valeur numérique
ValCP = Val(CodePostal)
' et on retourne la valeur du tableau à cet endroit
DonneVille = Villes(ValCP)
End Function
'-----------------------------------------------------------------------
----------------
' Procedure : InitDonnees
' DateTime : 4/08/2006 20:01
' Author : Jean-Marc
' Purpose : Initialisation de la fonction DonneVille
' Le fichier de données est un fichier tablué de la forme:
' code_postal;ville
'-----------------------------------------------------------------------
----------------
'
Private Function InitDonnees(szDataFile As String, _
szAnArray() As String) As Boolean
Dim f As Integer
Dim CP As String
Dim Ville As String
Dim szData As String
Dim p As Long
' trap l'erreur si par exemple le fichier
' n'existe pas
On Error GoTo InitDonnees_ERR
' ouvre
f = FreeFile
Open szDataFile For Input As #f
' lire en boucle jqa la fin
While Not EOF(f)
' lire une ligne
Line Input #f, szData
' si pas vide
If szData <> "" Then
' decouper en CP, VIlle
p = InStr(szData, ";")
If (p > 0) And (p < Len(szData)) Then
CP = Mid$(szData, 1, p - 1)
Ville = Mid$(szData, p + 1)
' ecrire dans le tableau à la bonne position
szAnArray(Val(CP)) = Ville
End If
End If
Wend
' on referme
Close #f
' tout est ok
InitDonnees = True
' et on quitte
InitDonnees_END:
Exit Function
InitDonnees_ERR:
' ici une erreur s'est produite
' la focntion va sortir en retournant FALSE
Resume InitDonnees_END
End Function
Private Sub Command1_Click()
Dim CP As String
Dim Ville As String
'
' Exemple d'utilisation
'
CP = "56000"
Ville = DonneVille(CP)
MsgBox "CP = " & CP & " Ville=" & Ville
End Sub
Et voila, espérant t'avoir aidé.
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"Sandrine" a écrit dans le message de news:eavmk4$a50$
Bonjour,
Quel serait le code pour récupérer via une fonction VB, la voire les
valeur
d'une table.
Disons que j'ai un fichier EXCEL (ou txt tabulé) avec CP et VILLE
Dans un logiciel permettant de traiter des fonctions VB à travers une
boite
de dialogue, comment faire pour qu'en saisissant un code postal, il m'indique dans
la
ville ??
Bonjour,
il faut faire en 2 etapes: - Charger les données en mémoire - Ecrire la fonction qui à partir d'un CP donne la ville.
Je ne sais pas de quels pays sont les codes postaux dont tu parles, on va supposer que ce sont des codes postaux français donc sur 5 chiffres.
Une astuce consisite à déclarer un tableau de 99.999 entrées. Il suffit de lire dans le fichier les couples (CP;ville) et de stocker la ville dans la case correspobdant à la valeur de CP. Exemple: Rennes (35000) ira à la position 35000 du tableau.
POur faire simple, on va écrire une fonction DonneVille() qui se chargera elle même de s'initialiser. Voice le code pour faire cela (c'est un exemple):
Option Explicit
'-------------------------------------------------------------- ' Procedure : DonneVille ' DateTime : 4/08/2006 20:00 ' Author : Jean-Marc ' Purpose : Retourne la Ville correspondant à un code postal donné ' Note: la fonction se charge elle même de son init '-------------------------------------------------------------- ' Public Function DonneVille(CodePostal As String) As String Const MAX_CP As Long = 99999 Dim DataFile As String Static InitFaite As Boolean Static Villes(MAX_CP) As String Dim ValCP As Long Dim result As Boolean
' mettre ici l'emplacement du fichier de données DataFile = App.Path & "cpville.txt"
' si l'init n'est pas faite If Not InitFaite Then ' on la fait result = InitDonnees(DataFile, Villes) ' on vérifie que tout c'est bien passé If Not result Then ' si non on affiche par exemple un message d'erreur MsgBox "Une erreur s'est produite." ' Ici on peut quitter ou faire ce qu'on veut End If ' et on note que l'init est faite InitFaite = True End If ' on convertit le code postal passé en paramètre sous forme ' d'une chaine en une valeur numérique ValCP = Val(CodePostal) ' et on retourne la valeur du tableau à cet endroit DonneVille = Villes(ValCP) End Function
'----------------------------------------------------------------------- ---------------- ' Procedure : InitDonnees ' DateTime : 4/08/2006 20:01 ' Author : Jean-Marc ' Purpose : Initialisation de la fonction DonneVille ' Le fichier de données est un fichier tablué de la forme: ' code_postal;ville '----------------------------------------------------------------------- ---------------- ' Private Function InitDonnees(szDataFile As String, _ szAnArray() As String) As Boolean Dim f As Integer Dim CP As String Dim Ville As String Dim szData As String Dim p As Long
' trap l'erreur si par exemple le fichier ' n'existe pas On Error GoTo InitDonnees_ERR
' ouvre f = FreeFile Open szDataFile For Input As #f ' lire en boucle jqa la fin While Not EOF(f) ' lire une ligne Line Input #f, szData ' si pas vide If szData <> "" Then ' decouper en CP, VIlle p = InStr(szData, ";") If (p > 0) And (p < Len(szData)) Then CP = Mid$(szData, 1, p - 1) Ville = Mid$(szData, p + 1) ' ecrire dans le tableau à la bonne position szAnArray(Val(CP)) = Ville End If End If Wend ' on referme Close #f ' tout est ok InitDonnees = True ' et on quitte InitDonnees_END: Exit Function
InitDonnees_ERR: ' ici une erreur s'est produite ' la focntion va sortir en retournant FALSE Resume InitDonnees_END End Function
Private Sub Command1_Click() Dim CP As String Dim Ville As String
' ' Exemple d'utilisation ' CP = "56000" Ville = DonneVille(CP) MsgBox "CP = " & CP & " Ville=" & Ville
End Sub
Et voila, espérant t'avoir aidé.
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
SAISAS
Juste une petite remarque :
il n'y a pas bijection entre code postal et ville, c'est à dire que plusieurs villes peuvent avoir un même code postal, et qu'un même code postal correspond à plusieurs villes.
Bonne réception.
"Sandrine" a écrit :
Bonjour,
Quel serait le code pour récupérer via une fonction VB, la voire les valeur d'une table.
Disons que j'ai un fichier EXCEL (ou txt tabulé) avec CP et VILLE
Dans un logiciel permettant de traiter des fonctions VB à travers une boite de dialogue, comment faire pour qu'en saisissant un code postal, il m'indique dans la ville ??
Merci beaucoup
Sandrine
Juste une petite remarque :
il n'y a pas bijection entre code postal et ville, c'est à dire que
plusieurs villes peuvent avoir un même code postal, et qu'un même code postal
correspond à plusieurs villes.
Bonne réception.
"Sandrine" a écrit :
Bonjour,
Quel serait le code pour récupérer via une fonction VB, la voire les valeur
d'une table.
Disons que j'ai un fichier EXCEL (ou txt tabulé) avec CP et VILLE
Dans un logiciel permettant de traiter des fonctions VB à travers une boite
de dialogue,
comment faire pour qu'en saisissant un code postal, il m'indique dans la
ville ??
il n'y a pas bijection entre code postal et ville, c'est à dire que plusieurs villes peuvent avoir un même code postal, et qu'un même code postal correspond à plusieurs villes.
Bonne réception.
"Sandrine" a écrit :
Bonjour,
Quel serait le code pour récupérer via une fonction VB, la voire les valeur d'une table.
Disons que j'ai un fichier EXCEL (ou txt tabulé) avec CP et VILLE
Dans un logiciel permettant de traiter des fonctions VB à travers une boite de dialogue, comment faire pour qu'en saisissant un code postal, il m'indique dans la ville ??
Merci beaucoup
Sandrine
Vincent Guichard
SAISAS a écrit :
Juste une petite remarque :
il n'y a pas bijection entre code postal et ville, c'est à dire que plusieurs villes peuvent avoir un même code postal, et qu'un même code postal correspond à plusieurs villes.
Bonne réception.
Sans oublier qu'une ville peut avoir plusieurs codes postaux (selon les arrondissements par exemple), même si cela ne posera pas de problèmes dans le cas présent, puisqu'on part du CP.
Vincent Guichard
SAISAS a écrit :
Juste une petite remarque :
il n'y a pas bijection entre code postal et ville, c'est à dire que
plusieurs villes peuvent avoir un même code postal, et qu'un même code postal
correspond à plusieurs villes.
Bonne réception.
Sans oublier qu'une ville peut avoir plusieurs codes postaux (selon les
arrondissements par exemple), même si cela ne posera pas de problèmes
dans le cas présent, puisqu'on part du CP.
il n'y a pas bijection entre code postal et ville, c'est à dire que plusieurs villes peuvent avoir un même code postal, et qu'un même code postal correspond à plusieurs villes.
Bonne réception.
Sans oublier qu'une ville peut avoir plusieurs codes postaux (selon les arrondissements par exemple), même si cela ne posera pas de problèmes dans le cas présent, puisqu'on part du CP.
Vincent Guichard
jm
"Vincent Guichard" wrote in message news:44db3feb$0$872$
SAISAS a écrit :
Juste une petite remarque :
il n'y a pas bijection entre code postal et ville, c'est à dire que plusieurs villes peuvent avoir un même code postal, et qu'un même code postal correspond à plusieurs villes.
Bonne réception.
Sans oublier qu'une ville peut avoir plusieurs codes postaux (selon les arrondissements par exemple), même si cela ne posera pas de problèmes dans le cas présent, puisqu'on part du CP.
Hello,
A ce propos vous vouvez télécharger une DB très sympa ici http://officesystem.access.free.fr/ex_codes_postaux.htm
Elle contient entre autre une table de "toutes" les communes de france avec leur CP associé.
On peut voir des choses amusantes, notamment le fait par exemple que le code postal 55300 correspond à 46 communes distinctes.
De même, la ville STE COLOMBE a 13 codes postaux, car elle existe dans 13 départements!
Dans cette table, Il ya en fait 38646 communes pour seulement 6049 CP.
A noter: certains CP existants ne sont pas repris dans cette table qui n'est donc pas strictement "complète", mais il ya déjà de quoi faire!
-- Jean-marc
"Vincent Guichard" <vg.bleuciel.sa@wanadoo.fr> wrote in message
news:44db3feb$0$872$ba4acef3@news.orange.fr...
SAISAS a écrit :
Juste une petite remarque :
il n'y a pas bijection entre code postal et ville, c'est à dire que
plusieurs villes peuvent avoir un même code postal, et qu'un même code
postal correspond à plusieurs villes.
Bonne réception.
Sans oublier qu'une ville peut avoir plusieurs codes postaux (selon les
arrondissements par exemple), même si cela ne posera pas de problèmes dans
le cas présent, puisqu'on part du CP.
Hello,
A ce propos vous vouvez télécharger une DB très sympa ici
http://officesystem.access.free.fr/ex_codes_postaux.htm
Elle contient entre autre une table de "toutes" les communes de france avec
leur CP associé.
On peut voir des choses amusantes, notamment le fait par exemple que le code
postal 55300 correspond à 46 communes distinctes.
De même, la ville STE COLOMBE a 13 codes postaux, car elle existe dans 13
départements!
Dans cette table, Il ya en fait 38646 communes pour seulement 6049 CP.
A noter: certains CP existants ne sont pas repris dans cette table qui n'est
donc pas strictement "complète", mais il ya déjà de quoi faire!
"Vincent Guichard" wrote in message news:44db3feb$0$872$
SAISAS a écrit :
Juste une petite remarque :
il n'y a pas bijection entre code postal et ville, c'est à dire que plusieurs villes peuvent avoir un même code postal, et qu'un même code postal correspond à plusieurs villes.
Bonne réception.
Sans oublier qu'une ville peut avoir plusieurs codes postaux (selon les arrondissements par exemple), même si cela ne posera pas de problèmes dans le cas présent, puisqu'on part du CP.
Hello,
A ce propos vous vouvez télécharger une DB très sympa ici http://officesystem.access.free.fr/ex_codes_postaux.htm
Elle contient entre autre une table de "toutes" les communes de france avec leur CP associé.
On peut voir des choses amusantes, notamment le fait par exemple que le code postal 55300 correspond à 46 communes distinctes.
De même, la ville STE COLOMBE a 13 codes postaux, car elle existe dans 13 départements!
Dans cette table, Il ya en fait 38646 communes pour seulement 6049 CP.
A noter: certains CP existants ne sont pas repris dans cette table qui n'est donc pas strictement "complète", mais il ya déjà de quoi faire!