Bonjour,
suite à un stage en entreprise, je dois "developpez" une maccro permettant via un dialogue entre Access et Excel de remplir des colonnes.
Je récupere donc les données de la BD dans une nouvelle feuille mais c'est la que ça se complique, je m'explique :
mon algorithme est le suivant :
- Je créé une liaison entre excel et access
- je récupére les données dans une nouvelle feuille que je renomme
- puis je dois testé pour chaque lignes si le contenu de la colonne J et de la colonne L dans ma feuille courante équivalent à respectivement celui de la colonne B et de la colonne C de la BDD.
Si c'est le cas, le contenu de la colonne A de la BDD va se coller dans la colonne AC de la feuille courante
A priori c'est fort simple cependant, je n'arrive pas à parcourir dynamiquement les cellules pendant mon 'for'... dans d'autre langage c'est assez simple, on concataine mais mes notions de VBAXL sont trop limite pour résoudre ce problème... Google ne ma pas beaucoup aidé non plus donc je viens demander à des professionnels
Donc pour résumer, que mettre à la place du "+i"
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
44
45
46
47
48
49
50
51
52
53 Option Explicit Sub Test() 'on commence par renommer notre feuille ActiveSheet.Name = "sources" 'declaration Dim appAccess As Access.Application Dim i, j As Integer 'On lance une session Access Set appAccess = CreateObject("Access.Application") With appAccess .OpenCurrentDatabase ("C:\bd_resp.mdb") 'on ajoute une nouvelle feuille et la renomme Sheets.Add ActiveSheet.Name = "Produits" 'on y colle le contenu de la table produit With ActiveSheet.QueryTables.Add(Connection:=Array("OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source =C:\bd_resp.mdb"), Destination:=Range("A1")) .CommandType = xlCmdTable .CommandText = Array("Produit") .FieldNames = True .RowNumbers = False .PreserveFormatting = True .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .AdjustColumnWidth = True .PreserveColumnInfo = True .Refresh BackgroundQuery:=False End With 'Requete de tri 'Pour chaque lignes du tableau, on requete les données. For i = 1 To 50 If Sheets("Produits").Range("B"+i).Value = Sheets("Sources").Range("J"+i).Value Then If Sheets("Produits").Range("C"+i).Value = Sheets("Sources").Range("L"+i).Value Then Sheets("Sources").Range("AC"+i).Value = Sheets("Produits").Range("D"+i).Value End If End If Next i End With 'Quitte Access appAccess.Quit 'Réinitialise l'objet Set appAccess = Nothing End Sub
Cordialement
Partager