Bonjour à tous,
J'essais de réaliser une petit macro qui me permettra d'enregistrer une colonne entière dans un classeur fermé.
Avec l'aide des tuto disponible ainsi que quelque recherche je suis parvenu à écrire des données dans un classeur fermé. Le problème est que je n'arrive pas à adapter la requête pour pouvoir écrire les informations située dans un tableau (array).
Avec la code ci-dessous, je affecte la valeur dans mon classeur fermé. Il me suffis de boucler sur le nombre d’élément dans mon tableau pour pouvoir écrire tous son contenu dans ma colonne mais cela demande N requête. Je me demande si on ne peux pas écrire le tableau entier d'une seule requête.
voici le code:
Cette solution présente un autre problème. J'aimerais ne pas être dépendant de la structure d'arrivée. Je veux dire par la que si j'ai plus qu'une en-tête de colonne dans mon onglet de destination j'obtiens une erreur qui dit:La table de destination contiens plus de champ que la source. Comment puis-je m'affranchir de cette contrainte ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Sub ajoutEnregistrement() Dim Cn As ADODB.Connection Dim Fichier As String, Feuille As String, strSQL As String Fichier = "C:\Users\Bruno\SkyDrive\Documents\Excel\Solution & Exemple VBA\Ecrire dans un classeur fermé\Target.xlsx" Feuille = "Feuil1" Dim tableau(30) As Date p = 0 For i = 1 To 30 tableau(p) = Range("A" & i).Value p = p + 1 Next 'Les données à insérer: LaDate = "w" 'CDate("26/05/2006") Set Cn = New ADODB.Connection With Cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _ & Fichier & ";Extended Properties=""Excel 12.0;HDR=Yes;""" .Open End With 'Les données doivent être indiquées dans le même ordre que les champs dans la base de données. For j = 0 To UBound(tableau) strSQL = "INSERT INTO [" & Feuille & "$] " & "VALUES ( " & "'" & tableau(j) & "')" Cn.Execute strSQL Next Cn.Close Set Cn = Nothing End Sub
Par avance merci pour votre précieuse aide
Meilleures salutations
Vorens
Partager