Importation de Excel vers Acces en VB6

Résolu/Fermé
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 - 7 avril 2023 à 15:37
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 - 15 avril 2023 à 20:00

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

A voir également:

5 réponses

yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
7 avril 2023 à 16:24

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
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
Modifié le 14 avril 2023 à 16:54

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
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
14 avril 2023 à 17:41

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
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
15 avril 2023 à 13:46

Bonjour

Merci pour votre aide. 

0
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
15 avril 2023 à 15:23

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

0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
15 avril 2023 à 16:22

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

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

Posez votre question
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
15 avril 2023 à 20:00

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