Bonjour de nouveau le forum,

Je suis pas mal bloqué avec la manipulation des requêtes sur VBA...

Qu'est-ce que je cherche à faire ?

J'ai présentement un tableau sur 2 colonnes qui va de A9 à B45. En colonne A j'ai le nom de chaque Code Famille et en colonne B j'ai la valeur budgétaire que j'aimerai y inscrire, à travers la requête.

Problème ?

Dès que mon programme tombe sur une valeur de la Colonne A ne renvoyant aucun résultat - Aucun paiement affecté à ce Code Famille - la suite ne se remplit absolument pas, même si une correspondance devrait avoir lieu.
Je dis bien "devrait" parce que ce n'est pas le cas. Sauriez-vous ce qui pourrait en être la cause ? J'ai affiché le "i" en fin de boucle For et j'avais les valeurs souhaitées. (soit 46)

Merci pour votre aide, je vous partage le code

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
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cnn As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim Fichier As String, Cellule As String, Feuille As String, nomSite As String
Dim n As Integer, i As Integer
 
nomSite = Range("C2").Value
Feuille = "2019$"
Cellule = "A3:AE316"
Fichier = "Z:\PBR_LOG\ARIBA_2019\TestVBA\TOTAL\TOTALNord-Est.xlsx"
 
    If Target.Address = "$C$2" Then
        Set Cnn = New ADODB.Connection
        Cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties='Excel 12.0;HDR=yes'"
 
        Set Rst = Cnn.Execute("SELECT count(*) as nb FROM [" & Feuille & "]")
        n = Rst("nb")
        Cellule = "A3:AE" & n
        Set Rst = New ADODB.Recordset
        If Range("C2").Value = "TOTAL" Then
            For i = 9 To 45
                Set Rst = Nothing
                Set Rst = Cnn.Execute("SELECT SUM(PayéTTC) FROM [" & Feuille & Cellule & "] WHERE P4 = '" & Cells(i, 1) & "'")
                Cells(i, 2).CopyFromRecordset Rst
                Rst.Close
            Next i
        Else
            For i = 9 To 45
                Set Rst = Nothing
                Set Rst = Cnn.Execute("SELECT SUM(PayéTTC) FROM [" & Feuille & Cellule & "] WHERE SITE = '" & nomSite & "' AND P4 = '" & Cells(i, 1) & "'")
                Cells(i, 2).CopyFromRecordset Rst
                Rst.Close
            Next i
        End If
    End If
End Sub