VB EXCEL-ACCESS

Résolu
Vinzfloz1 Messages postés 21 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 3 avril 2007 - 22 févr. 2007 à 16:26
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 23 févr. 2007 à 11:16
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

cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
22 févr. 2007 à 21:25
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
3
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
23 févr. 2007 à 11:16
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...
3
Rejoignez-nous