Bonsoir,
Je cherche a savoir comment faire pour que ma formule VBA de exécution d'une requête ACCESS paramétrées, depuis Excel, se rafraichisse tout seule. Pour l'instant l'erreur 3021 s'affiche et je dois choisir la option combobox a la main.
El la requête "Req 5" en ACCESS au cas au
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 Sub AlimenterComboPAYS() Dim cb As ComboBox Set cb = ActiveSheet.ComboPays 'on pourrait appeler une autre feuille 'Etape 1:récupération de la liste des pays à partir de BD Dim BD As DAO.Database Dim RS As DAO.Recordset Set BD = OpenDatabase(Range("CheminBD")) 'Overture depuis excel de la BD req = "SELECT DISTINCT Pays FROM Factures" 'Generer le code SQL Set RS = BD.OpenRecordset(req) 'Exécution de la requête et récupération du résultat dans une RS RS.MoveLast: RS.MoveFirst 'Balayage du RS pour compter le nb d'enregistrements 'Etape 2: Alimentation, via une boucle cb.Clear For I = 1 To RS.RecordCount cb.AddItem RS!Pays 'rajouter le pays à la liste de la combobox pour mes 21 pays RS.MoveNext Next I End Sub Sub GénérerVillesComboPAYSP() 'cette macro sera lance depuis ComboPAYS (quant on ferra une chois combopays) 'Etape 1:récupération de la liste des villes d'après le pays choisi dans ComboPays Dim BD As DAO.Database Dim RS As DAO.Recordset Dim QDF As DAO.QueryDef Set BD = OpenDatabase(Range("CheminBD")) 'Overture depuis excel de la BD Set QDF = BD.QueryDefs("Req 5") 'Indication de la requête paramétrée utilisée NomPays = Range("D4") QDF.Parameters(0) = NomPays Set RS = QDF.OpenRecordset() 'exécution de QDF et renvoi du résultat dans un RS RS.MoveLast: RS.MoveFirst 'Balayage du RS pour compter le nb d'enregistrements 'Etape 2: Génération d'une variable liste via une boucle du RS For I = 1 To RS.RecordCount '(ici seront 21) Liste = Liste & RS!Ville & "," RS.MoveNext Next I 'Etape 3: Alimenter la zone de validation With Range("B6:B16").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=Liste End With Range("D11") = "Liste des Villes raffraîchie le " & Date & " à " & Time End Sub
J'espère que soit simple de résoudre. Mais pour l'instant je ne trouve rien dans les forums.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT DISTINCT Ville, Pays FROM Factures WHERE Pays=[Quel Pays?]
Cordialement,
Victoria
Partager