Chargement d'une Listbox dans Acess 365 depuis un classeur Excel

Signaler
Messages postés
1
Date d'inscription
vendredi 20 novembre 2020
Statut
Membre
Dernière intervention
20 novembre 2020
-
Messages postés
2268
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
21 novembre 2020
-
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

1 réponse

Messages postés
2268
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
21 novembre 2020
115
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 ?