OVH Cloud OVH Cloud

Excel a Access

6 réponses
Avatar
Sim
Bonjour,
je suis pas sur si je dois poser ma question ici ou sur lui de access mais
bons ....
j'ai trouver ce code sur internet qui me permet de transferer un feuille
excel dans une table access
sa fonctionne super bien mais le probleme c'est que si je rajoute quelque
chose dans ma feuille excel et que je reclique pour transfere mes donnée
dans ma table access et bien il me les transfert tout ... donc j'ai est en
double dans ma table access ... j'ai essayer l'option sans doublon (dans
access) mais il refuse de transferer. quelqu'un a une iddée si on peut juste
transferer ce qu'on vient de rajouter ? ou ce qui existe pas ?


Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\FolderName\DataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub


merci de votre aide :)

6 réponses

Avatar
michdenis
Bonjour Sim,

Dans ta procédure, quand tu veux ajouter seulement la ou les 2 ou 3 dernières lignes de ton tableau, il faudrait que tu modifies ces
lignes à ta procédure dans ce cas (ou faire 2 procédures différentes - une pour tout le tableau) et l'autre pour les ajouts
simplement)

r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0

Quand tu veux copier seulement la dernìère ligne de ton tableau, tu dois trouver une façon de lui dire et non pas de débuter la
boucle en ligne 3 ...

A plus tard ... si problème.. je dois quitter !


Salutations!





"Sim" a écrit dans le message de news: %
Bonjour,
je suis pas sur si je dois poser ma question ici ou sur lui de access mais
bons ....
j'ai trouver ce code sur internet qui me permet de transferer un feuille
excel dans une table access
sa fonctionne super bien mais le probleme c'est que si je rajoute quelque
chose dans ma feuille excel et que je reclique pour transfere mes donnée
dans ma table access et bien il me les transfert tout ... donc j'ai est en
double dans ma table access ... j'ai essayer l'option sans doublon (dans
access) mais il refuse de transferer. quelqu'un a une iddée si on peut juste
transferer ce qu'on vient de rajouter ? ou ce qui existe pas ?


Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:FolderNameDataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub


merci de votre aide :)
Avatar
Pierre CFI [mvp]
bonjour
dans access tu fais une table liée sur excel, c'est plus mieux :o)

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net

"Sim" a écrit dans le message de news: %
Bonjour,
je suis pas sur si je dois poser ma question ici ou sur lui de access mais bons ....
j'ai trouver ce code sur internet qui me permet de transferer un feuille excel dans une table access
sa fonctionne super bien mais le probleme c'est que si je rajoute quelque chose dans ma feuille excel et que je reclique pour
transfere mes donnée dans ma table access et bien il me les transfert tout ... donc j'ai est en double dans ma table access ...
j'ai essayer l'option sans doublon (dans access) mais il refuse de transferer. quelqu'un a une iddée si on peut juste transferer
ce qu'on vient de rajouter ? ou ce qui existe pas ?


Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:FolderNameDataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub


merci de votre aide :)



Avatar
Gilles Lebret
bonsoir
à la place de transférer tu peux faire de ta feuille excel une table liée
dans access, comme cela toutes les modifs dans excel seront prises en compte
dans access et réciproquement

Gilles Lebret

"Sim" a écrit dans le message de
news:%
Bonjour,
je suis pas sur si je dois poser ma question ici ou sur lui de access mais
bons ....
j'ai trouver ce code sur internet qui me permet de transferer un feuille
excel dans une table access
sa fonctionne super bien mais le probleme c'est que si je rajoute quelque
chose dans ma feuille excel et que je reclique pour transfere mes donnée
dans ma table access et bien il me les transfert tout ... donc j'ai est en
double dans ma table access ... j'ai essayer l'option sans doublon (dans
access) mais il refuse de transferer. quelqu'un a une iddée si on peut
juste

transferer ce qu'on vient de rajouter ? ou ce qui existe pas ?


Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:FolderNameDataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub


merci de votre aide :)




Avatar
Sim
Merci c'est prit en note :)

"Sim" a écrit dans le message de news:
%
Bonjour,
je suis pas sur si je dois poser ma question ici ou sur lui de access mais
bons ....
j'ai trouver ce code sur internet qui me permet de transferer un feuille
excel dans une table access
sa fonctionne super bien mais le probleme c'est que si je rajoute quelque
chose dans ma feuille excel et que je reclique pour transfere mes donnée
dans ma table access et bien il me les transfert tout ... donc j'ai est en
double dans ma table access ... j'ai essayer l'option sans doublon (dans
access) mais il refuse de transferer. quelqu'un a une iddée si on peut
juste transferer ce qu'on vient de rajouter ? ou ce qui existe pas ?


Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:FolderNameDataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub


merci de votre aide :)



Avatar
Sim
Pis c'est traite sa je voulais :)

"Sim" a écrit dans le message de news:
%
Bonjour,
je suis pas sur si je dois poser ma question ici ou sur lui de access mais
bons ....
j'ai trouver ce code sur internet qui me permet de transferer un feuille
excel dans une table access
sa fonctionne super bien mais le probleme c'est que si je rajoute quelque
chose dans ma feuille excel et que je reclique pour transfere mes donnée
dans ma table access et bien il me les transfert tout ... donc j'ai est en
double dans ma table access ... j'ai essayer l'option sans doublon (dans
access) mais il refuse de transferer. quelqu'un a une iddée si on peut
juste transferer ce qu'on vient de rajouter ? ou ce qui existe pas ?


Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:FolderNameDataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub


merci de votre aide :)



Avatar
michdenis
En supplément, voici une méthode pour faire la mise à jour à partir d'excel de seulement des lignes de ton tableau excel qui
n'auraont jamais été transféré vers ton application Access

A ) Donne un nom (plage nommée, barre des menus / insertion / nom) à ta plage de cellules qui est déjà dans Access.

B ) Tu ajoutes un bouton de commande issu de la barre d'outils Contrôle et du copie ce code dans le module feuille où sont tes
données. Voilà.

C ) La seule restriction qui n'en est pas vraiment une, tu ne dois pas laisser de lignes vides lorsque tu fais des ajouts de données
dans ton d'excel.

D ) Lorsque tu as terminé de faire les ajouts désirés à ton tableau Excel, un clic sur le bouton et le tour est joué.

'------------------------------------------
Private Sub CommandButton1_Click()

Dim Rg As Range, DerLig As Long
Set Rg = Range("Toto")
DerLig = Rg(1).Row + Rg.Rows.Count
If WorksheetFunction.CountA(Rows(DerLig & ":" & DerLig)) = 0 Then
MsgBox "Mise à jour non effectué. " & vbCrLf & _
"Ligne : " & DerLig & " est vide."
Exit Sub
End If
ADOFromExcelToAccess DerLig
'Redimensionne la plage toto pour la prochaine
lastr = Range("A65536").End(xlUp).Row
Range("Toto").Resize(DerLig + (lastr - DerLig) - 2).Name = "toto"

End Sub

'------------------------------------------
Sub ADOFromExcelToAccess(DerLig As Long)
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:FolderNameDataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table

Do While Len(Range("A" & DerLig).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
'------------------------------------------


Salutations!








"michdenis" a écrit dans le message de news: OB%
Bonjour Sim,

Dans ta procédure, quand tu veux ajouter seulement la ou les 2 ou 3 dernières lignes de ton tableau, il faudrait que tu modifies ces
lignes à ta procédure dans ce cas (ou faire 2 procédures différentes - une pour tout le tableau) et l'autre pour les ajouts
simplement)

r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0

Quand tu veux copier seulement la dernìère ligne de ton tableau, tu dois trouver une façon de lui dire et non pas de débuter la
boucle en ligne 3 ...

A plus tard ... si problème.. je dois quitter !


Salutations!





"Sim" a écrit dans le message de news: %
Bonjour,
je suis pas sur si je dois poser ma question ici ou sur lui de access mais
bons ....
j'ai trouver ce code sur internet qui me permet de transferer un feuille
excel dans une table access
sa fonctionne super bien mais le probleme c'est que si je rajoute quelque
chose dans ma feuille excel et que je reclique pour transfere mes donnée
dans ma table access et bien il me les transfert tout ... donc j'ai est en
double dans ma table access ... j'ai essayer l'option sans doublon (dans
access) mais il refuse de transferer. quelqu'un a une iddée si on peut juste
transferer ce qu'on vient de rajouter ? ou ce qui existe pas ?


Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:FolderNameDataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub


merci de votre aide :)