recherche de code insee

  • Initiateur de la discussion Initiateur de la discussion sri75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sri75

XLDnaute Occasionnel
bonjour, j'au un fichier excel de 36000 communes issu du site de l'insee mais ou le code insee, normalement de 5 chiffres est sur 2 colonnes ( 2 1er en colonne A et les 3 autres en colonne B ). j'ai réussi à forcer l'affichage , mais je n'arrive pas à concatener mes deux colonnes pour avoir en visuel mon code à 5 chiffres.

Deuxième chose, je voudrais pouvoir utiliser une sorte de moteur de recherche dans mon fichier ( userform ? ) pour taper tout ou partie du nom de la commune et voir s'afficher les codes insee correspondants.

J'ai récupéré des bouts de code sur le forum que je vais tenter d'adapter mais en attendant je suis preneur de toutes vos idées.

le meme fichier existe aussi au format txt et dbf si cela peut aider.

Merci d'avance à tous pour vos conseils
 

Pièces jointes

Re : recherche de code insee

Merci pour vos réponses, j'ai trouvé comment faire mais avec un code trouvé sur le forum , mais meme compressé le fichier fait 180ko et je ne peut l'uploader.

c'est un spreadsheet mais le pb c'est qu'il recherche dès le premier caractère tapé et donc comme c'est sur 36000 lignes ca rame à mort.

voila le code

Sub aaa()
Spreadsheet1.Calculation = xlCalculationManual
Spreadsheet1.ScreenUpdating = False


Spreadsheet1.Range("a2:d40000").ClearContents
ville = TextBox1.Value & "*"

If ville = "*" Then GoTo vider

Dim r As Range

Dim code

For Each r In Sheets(1).Range("b6:b40000")


If r.Value Like ville And ville <> "" And ville <> 0 Then
code = Replace(Sheets(1).Cells(r.Row, 3).Value, "'", "")

For i = 3 To 40000
Set rs = Spreadsheet1.Cells(i - 2, 2)

ligne = rs.Row

Select Case code
Case Is <> 0
Spreadsheet1.Cells(ligne + i - 2, 1).EntireRow.Insert
Spreadsheet1.Cells(ligne + i - 2, 1).EntireRow.ClearFormats
Spreadsheet1.Cells(ligne + i - 2, 1).Value = Sheets(1).Cells(r.Row, 2).Value
Spreadsheet1.Cells(ligne + i - 2, 2).Value = code
Spreadsheet1.Cells(ligne + i - 2, 3).Value = Sheets(1).Cells(r.Row, 4).Value
GoTo suite
Case Is = 0
GoTo suite
End Select

Next

End If
suite:
Next


GoTo sortie

vider: Spreadsheet1.Range("a3:d40000").ClearContents


sortie:

Spreadsheet1.Range("a2:d40000").Sort columnkey:=2, Order:=xlAscending
Spreadsheet1.Range("a1").Select


Spreadsheet1.ScreenUpdating = True
End Sub


Pour alleger la recherche il faudrait qu'elle ne commence qu'a partir du 3 eme ou 4eme caractère tapé au lieu du premier. Mais là je sèche !

Qu'en pensez vous ?
 
Re : recherche de code insee

VOILA LE TXT, après etude finalement je n'ai besoin que de la zone dep et du code à 3 chiffres comme donnée à récuperer en recherchant le nom de la commune.

je n'ai pas besoin de concatener pour avoir 5 chiffres.

A suivre

nb peut être pour simplifier la recherche pourrait on d'abord saisir les deux premiers chiffres du département, pour ensuite limiter la recherche indexée sur les communes de ce département dont le nom commence par ...
 

Pièces jointes

Dernière édition:
Re : recherche de code insee

Re

Je n'avais demandé le .txt que pour avoir l'integralité et pour pouvoir ainsi juger de la vitesse d'execution

Voila un essai
Teste et dis-nous (entrer les 1eres lettres ds la textbox du haut puis selectionner dans la listbox , resultat dans les texbox du bas)
 

Pièces jointes

Re : recherche de code insee

Extra, je viens de le tester avec mes 36000 lignes et ca rame beaucoup moins

Voila le fichier complet sur megaupload

Ce lien n'existe plus

Je reste ouvert a toute amélioration en terme de rapidité, mais en tout cas c'est déja super d'avoir ce programme. Je vous remercie tous et particulièrement pierrejean pour votre aide précieuse.
 
Re : recherche de code insee

Re

Tu avais évoqué la possibilité de commencer la recherche a partir 3 caracteres
C'est assez facile de cette façon

Code:
Private Sub TextBox3_Change()
[COLOR=red]If Len(TextBox3) = 3 Then
[/COLOR]TextBox1 = ""
TextBox2 = ""
TextBox3 = UCase(TextBox3)
tableau = Range("A2:C" & Range("A65536").End(xlUp).Row)
ListBox1.Clear
For n = LBound(tableau, 1) To UBound(tableau, 1)
  If Left(tableau(n, 3), Len(TextBox3)) = TextBox3 Then
    ListBox1.AddItem tableau(n, 3)
  End If
Next n
[COLOR=red]End If
[/COLOR]End Sub

J'ai fait le test a partir de 4 caracteres et c'est assez spectaculaire
remplacer 3 par 4 dans cette ligne:

Code:
[COLOR=#ff0000]If Len(TextBox3) = 3 Then[/COLOR]
 
Re : recherche de code insee

Bizarrement avec cette modif l'indexation ne fonctionne plus au dela du nombre de caractères choisi
( ex pour 4 si je tape mars ok j'ai une liste, je rajoute un a pour marsa, ma liste ne se met plus à jour ).

Peut être faut il un on change qq part ?

Un autre pb au dela du nb de caractères est que l'on perd les majuscules

Merci d'avance
 
Dernière édition:
Re : recherche de code insee

Sur Ce lien n'existe plus vous pouvez trouver : code postal des villes et arrondissements de France, données INSEE, départements, coordonnées. La base est en .csv et j'ai pu l'ouvrir sur Excel et en faire ce que je voulais (site de vente en ligne).
Sa marche nikel et je vais gagner un temps fou
Si sa peux servir a quelqu'un
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour