Faire une boucle en langage VBA

david3434 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaiterai créer une boucle qui me permette de coller pour chacun de mes magasins le fichier des OD dans un fichier récap. Ceci m'éviterais de faire les 90 copier coller manuellement et gagner du temps.

Voici le lien du fichier ou je souhaite faire mes copier coller

https://mon-partage.fr/f/aWlmSRJ6/

Voici le lien d'un fichier magasin en exemple

https://mon-partage.fr/f/dzdA9V4W/

Ci dessous la macro faite à partir d'un exemple internet mais j'avoue être perdu. Rien ne se passe quand je lance la macro malheureusement.

Sub Recup_OD_ENT()

Application.DisplayAlerts = False


Dim Fichier As String
Dim Chemin As String
Dim Magasin As String
Dim LigneDebut As Integer
Dim NomMagEns As String

With Application
        .Calculation = xlManual
        .MaxChange = 0.001
        .CalculateBeforeSave = False
    End With

Chemin = "U:\Contrôle de gestion\OD\"
Fichier = Dir("OD_ENT_*.CSV")

Sheets("BDD ENT INFO").Select
Range(Cells(20, 1), Cells(150000, 17)).Select
Selection.ClearContents


Do While Fichier <> ""
Set wb = Workbooks.Open(Chemin & Fichier)
    
    Windows(Fichier).Activate
    Sheets("OD_ENT_*").Select
    NomMagEns = Cells(2, 2).Value

    
    Sheets("OD_ENT_*").Select
    Range(Cells(2, 1), Cells(2000, 17)).Select
    Selection.Copy
    Windows("OD Cloture fin JUIN 2017").Activate
    Sheets("BDD ENT INFO").Select
    Cells(50000, 1).Select
    LigneDebut = Selection.End(xlUp).Row
    Cells(LigneDebut + 1, 3).Select
         Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
     Windows(Fichier).Activate
             
wb.Close True
Set wb = Nothing
Fichier = Dir
Loop

    With Application
        .Calculation = xlAutomatic
        .MaxChange = 0.001
    End With
    ActiveWorkbook.PrecisionAsDisplayed = False
        
   Application.DisplayAlerts = True
    
End Sub
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
est-ce en lien avec ceci: https://forums.commentcamarche.net/forum/affich-34631587-bug-dans-ma-macro ?
sinon, as-tu déjà un code qui fonctionne pour un magasin?
ensuite, tu pourras faire une boucle pour les 90 magasins.
0
david3434 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Non c'est une autre macro, on m'a parlé de cette méthode de "boucle" mais je ne m'attendais pas à quelque chose de si complexe. Et je n'ai pas non plus un code qui fonctionne pour un magasin mais du coup je vais essayer comme ça. Si tu as des idées hésites pas lol
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > david3434 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
en gros une boucle, c'est, par exemple:
dim i as integer
for i =1 to 90
    traitementmagasin(i)
next i

remarque que si tu fais ainsi, tu gagnes déjà énormément de temps:
 traitementmagasin("magasin1")
 traitementmagasin("magasin2")
'  et ainsi de suite ...
 traitementmagasin("magasin90")
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour a vous deux

Fichier modifie pour recuperation donnees externes CSV

https://mon-partage.fr/f/Rd1AJkn9/

A vous de voir. Vous allez avoir des problemes de format de colonne pour les dates, vos formules ne sont pas d'accord
0