C
Compte Supprimé 979
Guest
Bonjour à toutes et à tous 😉
Qui saura répondre à ma problématique...
J'ai un fichier ".xlsx" contenant les 36.000 communes françaises et leur code postal
J'aimerai à partir d'un autre fichier contenant un USF, venir alimenter les 2 colonnes de la combobox
Je pensais le faire via la méthode ADO, mais avec mon code, le remplissage est "long"
Qui saurait me raccourcir le temps d'exécution 😛
Chose importante, je ne veux pas intégrer la liste des villes dans mon fichier principal.
A+
Qui saura répondre à ma problématique...
J'ai un fichier ".xlsx" contenant les 36.000 communes françaises et leur code postal
J'aimerai à partir d'un autre fichier contenant un USF, venir alimenter les 2 colonnes de la combobox
Je pensais le faire via la méthode ADO, mais avec mon code, le remplissage est "long"
VB:
Private Sub UserForm_Activate()
Dim sPathBdD As String, sTable As String, FlgErrCon As Boolean
Dim sSQL As String, sField As String, IdField As Integer
' Initialiser les variables
sTable = "Liste"
sPathBdD = VParam("DossierBdD")
If Right(sPathBdD, 1) <> "\" Then sPathBdD = sPathBdD & "\"
sPathBdD = sPathBdD & "BdD Villes.xlsx"
' Tester si le fichier se trouve bien à l'endroit prévu
If Not ExisteFichier(sPathBdD) Then
sPathBdD = Application.GetOpenFilename(FileFilter:="BdD Villes (*.xls*), *.xls*", _
Title:="Merci de sélectionner le fichier des viles")
End If
' En cas d'erreur
On Error GoTo Erreur_Proc
' Vider la combobox en question et initialiser la chaine de connexion
If Me.Cbx_Choix.ListCount > 0 Then Me.Cbx_Choix.Clear
FlgErrCon = False: sConn = ""
' Créer une nouvelle instance ADO
Set Cnn = CreateObject("ADODB.Connection")
' Créer la connexion vers le fichier Excel
With Cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& sPathBdD & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
' En cas d'erreur message d'information à l'utilisateur
If FlgErrCon = True Then
MsgBox "Impossible de se connecter à la base de données !", vbCritical, "OUPS..."
GoTo FermetureCnn
End If
' Préparer la requête
If InStr(1, sTable, " ") > 0 Then
sSQL = "SELECT * FROM ['" & sTable & "$']"
Else
sSQL = "SELECT * FROM [" & sTable & "$]"
End If
' Créer un nouveau Recordset et l'ouvrir
Set Rs = CreateObject("ADODB.Recordset")
' Avec le Recordset, récupérer les enregistrements
With Rs
' Ouvrir le recordset
.Open sSQL, Cnn, CursorType
' En cas d'erreur
If FlgErrCon = True Then GoTo FermetureRs
' Sinon
Do While Not .EOF
Me.Cbx_Choix.AddItem Rs.Fields(0)
Me.Cbx_Choix.List(Me.Cbx_Choix.ListCount - 1, 1) = Rs.Fields(1)
' Enregistrement suivant
.MoveNext
Loop
End With
' Fermeture du Recordset
FermetureRs:
Rs.Close
Set Rs = Nothing
' Fermeture de la connexion
FermetureCnn:
Cnn.Close: Set Cnn = Nothing
On Error GoTo 0
Me.Caption = "CHOIX de la VILLE du CHANTIER"
Exit Sub
Erreur_Proc:
FlgErrCon = True ' Mettre le FLAG d'erreur de connexion à vrai
Resume Next
End Sub
Qui saurait me raccourcir le temps d'exécution 😛
Chose importante, je ne veux pas intégrer la liste des villes dans mon fichier principal.
A+
Pièces jointes
Dernière modification par un modérateur: