Importation de Excel vers Acces en VB6

Résolu
Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   -  
Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

J'ai conçu une application en VB6, reliée à une BD en acces.

Je veux y ajouter une commande d'importation d'Excel vers acces, mais je ne sais pas comment procéder.

J'ai besoin d'importer les données suivantes 

N° d'ordre

Immeuble n°

Appartement n°

Propriétaire

Date de redevabilité

Pour remplir les Datafields correspondantes en acces (BD)

Merci d'avance pour toute aide.


Android / Chrome 111.0.0.0

5 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour, moi j'utiliserais les techniques utilisées ici, mais en lisant les valeurs dans Excel et en créant des enregistrements dans Access.

    0
  2. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
     

    Bonjour, 

    Merci pour votre réponse. Je crois que je suis sur le bon chemin pour resoudre mon problème. Cependant il me reste un point, à savoir le nombre de lignes de la Table Informations (Excel), ce nombre (j) est important pour ma boucle.

    Dim i, l, k as integer
    
    Set xlw = xlo.WorkBooks.Open ("C:\Informations.xlsx")
    
    xlw.sheets("Feuil1").Select
    
    ' determiner le nombre de lignes
    
    J= xlw.Application.Rows.count
    
    ' teste pour savoir le nombre j
    
    MsgBox "Nombre" & " " & j

    Seulement le message me renvoi 

    J= 1048576

    alors que la table Informations contient 7 lignes

    Merci d'avance pour toute correction de mon code

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Il est parfois pratique, dans la boucle, de s'arreter quand il n'y a plus de données, quand la cellule est vide.

      Sinon, tu peux faire ceci, qui te donne le numéro de la dernière ligne utilisée dans la colonne A:

      Cells(Rows.Count, 1).End(xlUp).Row
      0
  3. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
     

    Bonjour

    Merci pour votre aide. 

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Si tu n'as pas d'autre question, peux-tu marquer la discussion comme résolue?

      0
  4. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
     

    Re bonjour.

    Je n'ai pas oublié de marquer la question comme RESOLUE.

    J'attends la fin de mon code d'importation, pour le transcrire ici, on ne sait jamais si quelqu'un d'autre en aura besoin. 

    Encore merci

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
     

    Bonjour

    Je vous remis le code pour importer les données d'un tableau en Excel.

    1 Déclaration générale

    Dim xlo as New Excel.Application
    Dim xlw as Excel.WorkBook
    Dim CheminTableau as string
    Dim Imm, Appt,Prop,Cin as string
    Dim DateProp as Date

    2 Boite de dialogue

    On error goto nnn:
    
    CmnDialog.Filter = "Toutes les extentions (*.xlsx)|*.*"
    CmnDialog.ShowOpen
    
    CheminTableau = CmnDialog.FileNale
    
    nnn:

    3 Importation

    Dim i,j,k,l as Integer
    
    xlw.Sheets("Feuil1").Select
    
    j = Cells(Rows.Count, 1).End(xlUp).Row
    l = 0
    k = 0
    
    For i = 1 to j step 1
    
    l = l + 1
    
    Imm = xlw.Application.Cells(l + 1, k + 1)
    Appt = xlw.Application.Celks(l + 1, k + 2)
    Prop = xlw.Application.Cells(l + 1, k + 3)
    Cin = xlw.Application.Cells(l + 1, k + 4)
    DateProp = xlw.Application.Cells(l + 1, k + 5)
    
    If Imm = "" then 
    GoTo Pass:
    Exit sub
    End if
    
    'N° d'ordre
    
    SQls ="Select * from TableParametres where (Naure = '"& CStr(Nature) &"')" & "Order by NOrdre asc"
    
    If RS.State = adStateOpen then RS.Clode
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
    
    If RS![NOrdre]<>0 then
    RS.MoveLast
    NOrdre=RS![NOrdre]+1
    Else
    NOrdre=1
    End if
    RS Close
    
    'Enregistrement
    
    SQLs="Select * from TableParametres where ((Societe='"& CStr(VarSoviete) &"')" _
    & "and(Operation='"& CStr(Operation)&"')and(Considtance='"& CStr(Consistance)&"')" _
    & "and(Immeuble='"& CStr(Imm)&"')and(Appartement='"& CStr(Appt) &"')" _
    & "and(Cin='"& CStr(Cin) &"'))"
    
    If RS.State=adStateOpen then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
    
    If RS.EOF then
    GoTo Oks:
    Exit Sub
    Else
    GoTo Nos:
    Exit Sub
    End If
    
    Oks:
    
    RS.AddNew
    RS![NOrdre]=NOrdre
    RS![Nature]=Nature
    RS![Operation]=Operation
    RS![Societe]=VarSociete
    RS![Immeuble]=Imm
    RS![Appartement]=Appt
    RS![Proprietaire]=Prop
    RS![cin]=Cin
    RS![DatePropriete]=DateProp
    RS.Update
    RS.Close
    
    Nos:
    Pass:
    Next i
    0