Chargement d'une Listbox dans Acess 365 depuis un classeur Excel
Bernard1815
Messages postés1Date d'inscriptionvendredi 20 novembre 2020StatutMembreDernière intervention20 novembre 2020
-
Modifié le 20 nov. 2020 à 17:53
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023
-
21 nov. 2020 à 13:10
Bonjour,
Je Charge une Listbox d'un formulaire dans Acess 365 depuis un classeur Excel.
Bien que ma boucle exploite toutes les lignes de mon classeur, la listbox est chargée partiellement (J'ai 681 lignes dans mon classeur et je n'en charge que 462)
Print.debug m'indique bien que j'ai déroulé toutes les lignes du classeur.
Sub ImportFichier()
Dim xlApp As Variant, xlBook As Variant, xlsht As Variant
Dim FichierXL As String, Reponse As String
Dim LAbonneImporte As String, CheminFichier As String
Dim Col As Long, Lig As Long, NbLig As Long
Call ViderLDAbonneImporte
CheminFichier = CurrentProject.Path
FichierXL = CheminFichier & "\Abonnés"
'Création de l'objet Excel (main mise sur !)
Set xlApp = CreateObject("Excel.Application")
'Création de l'objet [Fichier Excel]
Set xlBook = xlApp.Workbooks.Open(FichierXL)
Set xlsht = xlBook.Worksheets(1)
Call ViderLDAbonneImporte
With xlsht
Lig = 2
While .Cells(Lig, 2) <> ""
LAbonneImporte = ""
For Col = 1 To 12
LAbonneImporte = LAbonneImporte & .Cells(Lig, Col) & " ; "
Next Col
LAbonneImporte = LAbonneImporte & .Cells(Lig, 13)
'Pour voir si des caractères spéciauc pourraient poluer le chargement
'xx = 1
'car = Mid(LAbonneImporte, xx, 1)
'While car <> ""
' car = Mid(LAbonneImporte, xx, 1)
' If car <> "" Then
' If Asc(car) < 32 Or Asc(car) > 250 Then Stop
' End If
' xx = xx + 1
'Wend
LDAbonneImporte.AddItem Item:=LAbonneImporte
Debug.Print Lig & " - " & LAbonneImporte
Lig = Lig + 1
Wend
If Lig - 2 <> LDAbonneImporte.ListCount Then
Reponse = MsgBox("Le nombre de lignes chargée est incorrect" & Chr(10) & "Excel " & Lig - 2 & " - Listbox " & LDAbonneImporte.ListCount, vbCritical)
End If
End With
xlBook.Close SaveChanges:=False
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 21 nov. 2020 à 13:10
Bonjour
Etes-vous certain qu'aucune ligne n'ait cette cellule vide
While .Cells(Lig, 2) <> ""
avant la fin de votre tableau Excel ?
Pourquoi ne pas utiliser une boucle For Next qui engloberait toutes les lignes de votre tableau Excel à la place du While ?