Bonjour tout le monde, et le forum
j'essaye de faire une macro qui m'ouvre x fichier, recherche un lot de valeur spécifique et recopie la somme des valeurs qui lui sont attribué.
La problématique est qui me met le résultat pour chaque fichier ouvert et non le resultat global qu'il trouve pour la valeur cherché.
J'ai, je pense 2 solutions
1er : faire une macro complémentaire du résultat obtenue, récupérer la liste des valeurs et faire un find ..... ---> mais je ne sais pas comment reprendre une liste sans doublons
2em : mettre tous les résultats dans un tableau virtuel et donc additionner les résultats --> pareil aucune idée de comment faire
Si quelqu'un pouvait me donner une piste pour que je puisse terminer un bout de la macro, cela serait super.
Si dessous la macro
Sub Test()
Dim cd As Range
Dim x As Long
Dim y As Long
Application.ScreenUpdating = False
CeFichier = ThisWorkbook.Name
ChDir ThisWorkbook.Path
MonFichier = Dir("*.txt")
Do While MonFichier <> ""
Workbooks.OpenText Filename:=MonFichier, DataType:=xlDelimited, Semicolon:=True
nb_ligne = Workbooks(CeFichier).Sheets("Tb").Range("a65536").End(xlUp).Row
For i = 2 To nb_ligne
'Borne début X Borne Fin Y
y = Workbooks(CeFichier).Sheets("Tb").Cells(i, 3).Value
For x = Workbooks(CeFichier).Sheets("Tb").Cells(i, 2).Value To y
a = 0
Set cd = Range("l1:l65000").Find(x, LookIn:=xlValues)
If Not cd Is Nothing Then
firstAddress = cd.Address
Do
a = cd.Offset(-1, -1).Value + a
Set cd = Range("l1:l65000").FindNext(cd)
Loop While Not cd Is Nothing And cd.Address <> firstAddress
End If
If a > 0 Then
Workbooks(CeFichier).Sheets("Feuil1").Range("c65536").End(xlUp).Offset(1, 0).Value = a
Workbooks(CeFichier).Sheets("Feuil1").Range("b65536").End(xlUp).Offset(1, 0).Value = x
Workbooks(CeFichier).Sheets("Feuil1").Range("a65536").End(xlUp).Offset(1, 0).Value = Workbooks(CeFichier).Sheets("Tb").Cells(i, 1).Value
End If
Next x
Next i
Workbooks(MonFichier).Close (False)
MonFichier = Dir()
Loop
Application.ScreenUpdating = True
End Sub
j'essaye de faire une macro qui m'ouvre x fichier, recherche un lot de valeur spécifique et recopie la somme des valeurs qui lui sont attribué.
La problématique est qui me met le résultat pour chaque fichier ouvert et non le resultat global qu'il trouve pour la valeur cherché.
J'ai, je pense 2 solutions
1er : faire une macro complémentaire du résultat obtenue, récupérer la liste des valeurs et faire un find ..... ---> mais je ne sais pas comment reprendre une liste sans doublons
2em : mettre tous les résultats dans un tableau virtuel et donc additionner les résultats --> pareil aucune idée de comment faire
Si quelqu'un pouvait me donner une piste pour que je puisse terminer un bout de la macro, cela serait super.
Si dessous la macro
Sub Test()
Dim cd As Range
Dim x As Long
Dim y As Long
Application.ScreenUpdating = False
CeFichier = ThisWorkbook.Name
ChDir ThisWorkbook.Path
MonFichier = Dir("*.txt")
Do While MonFichier <> ""
Workbooks.OpenText Filename:=MonFichier, DataType:=xlDelimited, Semicolon:=True
nb_ligne = Workbooks(CeFichier).Sheets("Tb").Range("a65536").End(xlUp).Row
For i = 2 To nb_ligne
'Borne début X Borne Fin Y
y = Workbooks(CeFichier).Sheets("Tb").Cells(i, 3).Value
For x = Workbooks(CeFichier).Sheets("Tb").Cells(i, 2).Value To y
a = 0
Set cd = Range("l1:l65000").Find(x, LookIn:=xlValues)
If Not cd Is Nothing Then
firstAddress = cd.Address
Do
a = cd.Offset(-1, -1).Value + a
Set cd = Range("l1:l65000").FindNext(cd)
Loop While Not cd Is Nothing And cd.Address <> firstAddress
End If
If a > 0 Then
Workbooks(CeFichier).Sheets("Feuil1").Range("c65536").End(xlUp).Offset(1, 0).Value = a
Workbooks(CeFichier).Sheets("Feuil1").Range("b65536").End(xlUp).Offset(1, 0).Value = x
Workbooks(CeFichier).Sheets("Feuil1").Range("a65536").End(xlUp).Offset(1, 0).Value = Workbooks(CeFichier).Sheets("Tb").Cells(i, 1).Value
End If
Next x
Next i
Workbooks(MonFichier).Close (False)
MonFichier = Dir()
Loop
Application.ScreenUpdating = True
End Sub