Macro me permettant de concatener des résultats

Snoop

XLDnaute Occasionnel
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
 

MJ13

XLDnaute Barbatruc
Re : Macro me permettant de concatener des résultats

Re bonjour

C'était une boutade pour te faire prendre consicience que développer une application sur Excel ne se fait pas comme cela en mettant 2 ou 3 macros sur un post.
Il y a plusieurs problèmes dans ton exposé.

Moi dans ce cas je prend un papier et un crayon (non je plaisante mais je l'ai fait pour certains cas) et j'écris ce que j'ai, ce que je veux et les macros que je dois créer.

Ensuite, j'y vais par petits pas. Je développe chaque élement de ma reflexion et en général, le développement est plus simpe et plus rapide.

Sinon il y a des personnes qui mettent des fichiers sur ce forum. L'as tu remarqué?

Ah, dernier point. Ah, non, je n'en ai pas!
 

Snoop

XLDnaute Occasionnel
Re : Macro me permettant de concatener des résultats

Oui j'ai bien compris, donc en faite j'ai bien pris le probleme du début,

mais je me rend compte que je suis obliger de mettre mes résultats sur une feuille pour ensuite les reprendres et faire une sorte de somme.si à la fin...

Pour la récupération de la colonne sans doublons, j'ai trouvé hier et j'ai completement fini la macro...

Donc mon problème est de récupérer des montants accompagné d'une valeur dans un tableau temporaire pour ensuite récupérer le cumul des résultats par valeur.

Donc je ne sais pas si il y a besoin que je mette la macro en totalité...

Merci pour l'astuce du crayon (j'avais commencé par la).. le seul probleme est l'expression de mon besoin !!!

Tks
 

MJ13

XLDnaute Barbatruc
Re : Macro me permettant de concatener des résultats

Bonjour,

Bon, je vois que tu as des fichiers txt.

Dans ce cas je place sur ma feuille plusieurs boutons liés à des macros.

Le premier bouton permet de créer ma liste de fichiers avec la bonne vieille
commande DOS DIR (il faut auparavant aller sur le dossier qui contient les fichiers en faisant ouvrir puis annuler).
ex:
Fichier dirtxt.bat à créer sur ton C:\ qui contient le code:

Dir *.txt>dirtxt.txt
cls

la macro associée est celle ci:
Sub dirtxt()
Shell "c:\Dirtxt.bat"
End Sub

Le second bouton permet d'ouvrir le fichier dirtxt.txt
Code:
Sub Liste_fichiers_txt()
' Liste_fichiers_txt Macro
' Macro enregistrée le 23/07/2002 par MJ
Rem filetoopen = Application.GetOpenFilename("Fichiers (*.txt), *.txt", , , , True)
ChDir CurDir
   Workbooks.OpenText Filename:="dirtxt.txt", _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
        Array(0, 1), Array(10, 1), Array(17, 1), Array(26, 1), Array(36, 1))
        ActiveWindow.ActivateNext
End Sub

Puis ensuite je crée une macro qui va ouvrir chaque fichier et faire le traitement approprié.
 

Snoop

XLDnaute Occasionnel
Re : Macro me permettant de concatener des résultats

Merci MJ13 et le forum,

Alors pour ce bout, j'avais trouvé une autre solution sur le forum, mais aussi bien :eek:)

.....................

Pour continuer sur ma lancé, j'ai juste une dernière info pour finir complet mon code, une truc tout bête mais je ne sais pas comment faire....

je récupére des valeur sans virgule (exemple 10000 pour 100.00)--> je ne sais pas comment faire au plus rapide pour les convertir

soit au moment de la copie, soit une fois toutes la valeur récupérer....

Merci pour votre aide...
 

MJ13

XLDnaute Barbatruc
Re : Macro me permettant de concatener des résultats

Re Bonjour,

Le mieux est de faire une macro qui à la fin de la recopie des valeurs dans ta colonne ajoutera une colonne. Puis il suffit de rajouter la formule que tu recopiera sur le nombre de cellules en divisant par 100 chaque cellule.
Puis tu recopies ta colonne avec la formule en valeur.
Autremant si tu n'as qu'une valeur, tu peux faire le calcul en divisant par 100 et en l'incluant dans ta feuille de synthèse.
 

Discussions similaires

Statistiques des forums

Discussions
312 424
Messages
2 088 286
Membres
103 807
dernier inscrit
Mythofou