Bonjour tout le monde !!
Voilà, j'ai un formulaire sous Access (donc fait en VBA) qui éxécute une requête et insère les donnée sous Excel :
Mais, avant de lancer cette requête, je parcour une colonne du fichier Excel afin de détecter la première cellule vide :
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 With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _ "ODBC;DBQ=Z:\COMMON\DDI\Departement Clientele\Listing\Listing France 2006.mdb;DefaultDir=Z:\COMMON\DDI\Departement Clientele\Listing;" _ ), Array( _ "Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransacti" _ ), Array("ons=0;Threads=3;UserCommitSync=Yes;")), Destination:=Range(Dest)) .CommandText = Array( _ "SELECT z_VTC.`Code pdv`, z_VTC.`Nom client`, z_VTC.CP, z_VTC.`Bureau distributeur`, z_VTC.`Date VT`, z_VTC.`Date VTC`" & Chr(13) & "" & Chr(10) & "FROM `Z:\COMMON\DDI\Departement Clientele\Listing\Listing France 2006`." _ , "z_VTC z_VTC" & Chr(13) & "" & Chr(10) & "WHERE (z_VTC.RS= '" & NomRepSécu & "')") .name = "Lancer la requête à partir de Listing" .FieldNames = False .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .refresh BackgroundQuery:=False End With
Ma variable 'Dest' contient donc la cellule qui recevra le début des données de ma requête, par exemple "b70" si c'est la première fois que j'éxécute la requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 For S = 70 To 200 cellule = "b" & S If Sheets("Formations-VTC ET-Sécu").Range(cellule).Value = "" Then Dest = "b" & S S = 200 End If Next
Mais un problème se pose. En effet,si je ré éxécute la requête (qui contient 3 lignes par exemple) ma cellule de destination devrait donc être "b73", hors, le programme ne détecte que des cellules vides lors du parcour. En effet, j'ai fait msgbox("b70") et le résultat était du vide, et pourtant elle est bien remplie...
Ce qui fait que mon programme insère le contenu de la seconde requête dans "b70" et donc ça décale tout.
Par contre, si je fais une macro sous Excel faisant un msgbox("b70") là il me sort bien la valeur...
Donc là franchement je n'y comprend rien...
Un grand merci d'avance et bonne journée !
Partager