VB EXCEL-ACCESS

[Résolu]
Signaler
Messages postés
21
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
3 avril 2007
-
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
-
Bonjour à toutes et à tous, 

Une petite question qui ne devrait pas posé trop de difficultés pour certains, comme d'hab.

Je travaille sur un fichier excel, une macro Update les données vers une Table ACCESS.
Jusqu'ici ca passe.

Maintenant je veux ajouter de nouveaux enregistrements dans ma table.

Je pensais à AddNew, ou Insert To, je n'arrive pas à les écrire correctement dans le code suivant :

ChDir ActiveWorkbook.Path
  Set cnn = New ADODB.Connection
  cnn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=LicenseData2007.mdb"
     Dim rs As New ADODB.Recordset
      Dim fld As ADODB.Field
  rs.Open "licensor", cnn, adOpenKeyset, adLockOptimistic
 
    Dim SQL As String
       Dim str1 As String
      str1 = Sheets("ExportToAccess").Range("G5")
      Dim str2 As String
      str2 = Sheets("ExportToAccess").Range("A5")    
    Dim Plage As Range
   Dim Array1 As Variant
    Dim x As Variant
 
    Set Plage = Worksheets("ExportToAccess").Range("A6").CurrentRegion.Offset(1, 0)
   Set Plage = Plage.Resize(Plage.Rows.Count - 1, Plage.Columns.Count)


     Plage.Select
      Array1 = Plage.Value


     For x = 1 To UBound(Array1, 1)
                                   SQL "UPDATE licensor SET " & str1 & "'" & Array1(x, 7) & "'WHERE " & str2 & " ='" & Array1(x, 1) & "'"
    
            cnn.Execute SQL
          Next
 cnn.Close

J'attends vos propositions. :)

Merci par avance.

2 réponses

Messages postés
168
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
28 juillet 2009
1
Bonsoir

Il ne me semble pas aisé de répondre correctement à ta demande car tu ne précises pas la structure de ta table.

Perso, j'utilise des instructions type INSERT INTO.

Par exemple  INSERT INTO MaTable (Champs1, Champs2) VALUE ('Valeur1', 'Valeur2').

Bonne programmation.

Christophe
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Tu peux faire un addnew en faisant:

rs.open TABLE,connexion,1,2
rs.addnew
rs("Champ1") = Array(x,1)
rs("Champ2") = Array(x,2)
rs.update
rs.close

Attention, ne pas oublier de vérifier la compatibilité des types et de savoir si les cellules Array(x,n) sont vides ou pas avant de les affecter à tes rs, sinon yaura propabement erreur!

Tu peux aussi faire un insert into
Tous les chemins mènent à Rome...