Faire une synthèse de plusieurs classeurs, boucle while

Bonjour à tous,

Problème rencontré : J'effectue 3 extractions hebdomadaires identiques dans le format que je souhaite synthétiser dans un seul classeur. J'ai mis en place une boucle, cependant le résultat n'est pas celui escomptée.

Explications :

3 classeurs : le n°1, le n°2 et le n°3. Le résultat souhaité est de coller les codes articles, qté et valo des différents classeurs les uns en dessous des autres.

résultats souhaités :

Article Qté Valo

1 1 1

2 2 2

3 3 3

résultats obtenus :

Article Qté Valo

1

1

1

2

2

2

3

3

3

Conséquences ; Lorsque j'utilise la formule ActiveSheet.UsedRange.Rows.Count + 1 pour trouver la première ligne ( par exemple en colonne B), le système prend tous les articles collés précedemment + 1 lignes => ce qui explique ce décalage.

Mais Je ne sais pas ce qu'il faut faire pour y arriver autrement....

ChDir "W:\PUBLIC\Planifier_Livrer\T00_Public\VEX\2016\Extraction\MAG PF"

Classeurlocal = Dir("W:\PUBLIC\Planifier_Livrer\T00_Public\VEX\2016\Extraction\MAG PF\*.XLS")

While Len(Classeurlocal) > 0

Workbooks.Open Classeurlocal

'Extraction de la colonne article

DerniereLigne = ActiveSheet.UsedRange.Rows.Count

Range("B4:B" & DerniereLigne).Copy

Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate

DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1

Range("A" & ActiveSheet.UsedRange.Rows.Count + 1).Select

ActiveSheet.Paste

Workbooks(Classeurlocal).Activate

'Extraction de la colonne valo

DerniereLigne = ActiveSheet.UsedRange.Rows.Count

Range("C4:C" & DerniereLigne).Copy

Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate

DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1

Range("C" & ActiveSheet.UsedRange.Rows.Count + 1).Select

ActiveSheet.Paste

Workbooks(Classeurlocal).Activate

'Extraction de la colonne qté

DerniereLigne = ActiveSheet.UsedRange.Rows.Count

Range("E4:E" & DerniereLigne).Copy

Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate

DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1

Range("D" & ActiveSheet.UsedRange.Rows.Count + 1).Select

ActiveSheet.Paste

Workbooks(Classeurlocal).Activate

'Extraction des mouvements

DerniereLigne = ActiveSheet.UsedRange.Rows.Count

Range("I4:K" & DerniereLigne).Copy

Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate

DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1

Range("L" & ActiveSheet.UsedRange.Rows.Count + 1).Select

ActiveSheet.Paste

Workbooks(Classeurlocal).Close False

Classeurlocal = Dir

Wend

Je vous remercie pour votre aide,

Cordialement,

Laurent.

Bonjour Laurent,

Est-il possible de joindre 4 fichiers simplifiés?

Les classeurs 1 - 2 - 3 et le dernier avec le code actuellement utilisé.

Ou alors d'éditer ton message, et de mettre les parties de code à l'intérieur des balises prévues à cet effet (bouton "Code" au dessus de la zone de saisie de message)

Bonjour,

Voici le code :

'Essai 1
            ChDir "W:\FGR\FIC\PUBLIC\Planifier_Livrer\T00_Public\VEX\2016\Extraction\MAG PF"
            Classeurlocal = Dir("W:\FGR\FIC\PUBLIC\Planifier_Livrer\T00_Public\VEX\2016\Extraction\MAG PF\*.XLS")
            While Len(Classeurlocal) > 0
            Workbooks.Open Classeurlocal
                        'Extraction de la colonne article
                        DerniereLigne = ActiveSheet.UsedRange.Rows.Count
                        Range("B4:B" & DerniereLigne).Copy
                        Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate
                        DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
                        Range("A" & ActiveSheet.UsedRange.Rows.Count + 1).Select
                        ActiveSheet.Paste
                        Workbooks(Classeurlocal).Activate
                                    'Extraction de la colonne valo
                                    DerniereLigne = ActiveSheet.UsedRange.Rows.Count
                                    Range("C4:C" & DerniereLigne).Copy
                                    Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate
                                    DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
                                    Range("C" & ActiveSheet.UsedRange.Rows.Count + 1).Select
                                    ActiveSheet.Paste
                                    Workbooks(Classeurlocal).Activate
                                                'Extraction de la colonne qté
                                                DerniereLigne = ActiveSheet.UsedRange.Rows.Count
                                                Range("E4:E" & DerniereLigne).Copy
                                                Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate
                                                DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
                                                Range("D" & ActiveSheet.UsedRange.Rows.Count + 1).Select
                                                ActiveSheet.Paste
                                                Workbooks(Classeurlocal).Activate
                                                            'Extraction des mouvements
                                                            DerniereLigne = ActiveSheet.UsedRange.Rows.Count
                                                            Range("I4:K" & DerniereLigne).Copy
                                                            Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate
                                                            DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
                                                            Range("L" & ActiveSheet.UsedRange.Rows.Count + 1).Select
                                                            ActiveSheet.Paste

                                                                         Workbooks(Classeurlocal).Close False
                                                                         Classeurlocal = Dir
                                                                         Wend
Article     Quantité    Valo
1        
                                   1        
                                                     1        
2    
                    2    
                                        2    
3
        3
                           3

Explication : Les données sont colées bout à bout et non l"une à côté de l'autre.

Je vois l'erreur mais je ne la comprends pas !

Merci pour votre aide,

Cordialement,

Laurent

d3d9x a écrit :

Bonjour Laurent,

Est-il possible de joindre 4 fichiers simplifiés?

Les classeurs 1 - 2 - 3 et le dernier avec le code actuellement utilisé.

Ou alors d'éditer ton message, et de mettre les parties de code à l'intérieur des balises prévues à cet effet (bouton "Code" au dessus de la zone de saisie de message)

Bonjour,

Voici le code :

'Essai 1
           ChDir "W:\FGR\FIC\PUBLIC\Planifier_Livrer\T00_Public\VEX\2016\Extraction\MAG PF"
            Classeurlocal = Dir("W:\FGR\FIC\PUBLIC\Planifier_Livrer\T00_Public\VEX\2016\Extraction\MAG PF\*.XLS")
            While Len(Classeurlocal) > 0
            Workbooks.Open Classeurlocal
                        'Extraction de la colonne article
                       DerniereLigne = ActiveSheet.UsedRange.Rows.Count
                        Range("B4:B" & DerniereLigne).Copy
                        Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate
                        DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
                        Range("A" & ActiveSheet.UsedRange.Rows.Count + 1).Select
                        ActiveSheet.Paste
                        Workbooks(Classeurlocal).Activate
                                    'Extraction de la colonne valo
                                   DerniereLigne = ActiveSheet.UsedRange.Rows.Count
                                    Range("C4:C" & DerniereLigne).Copy
                                    Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate
                                    DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
                                    Range("C" & ActiveSheet.UsedRange.Rows.Count + 1).Select
                                    ActiveSheet.Paste
                                    Workbooks(Classeurlocal).Activate
                                                'Extraction de la colonne qté
                                               DerniereLigne = ActiveSheet.UsedRange.Rows.Count
                                                Range("E4:E" & DerniereLigne).Copy
                                                Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate
                                                DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
                                                Range("D" & ActiveSheet.UsedRange.Rows.Count + 1).Select
                                                ActiveSheet.Paste
                                                Workbooks(Classeurlocal).Activate
                                                            'Extraction des mouvements
                                                           DerniereLigne = ActiveSheet.UsedRange.Rows.Count
                                                            Range("I4:K" & DerniereLigne).Copy
                                                            Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate
                                                            DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
                                                            Range("L" & ActiveSheet.UsedRange.Rows.Count + 1).Select
                                                            ActiveSheet.Paste

                                                                         Workbooks(Classeurlocal).Close False
                                                                         Classeurlocal = Dir
                                                                         Wend
Article         Quantité       Valo
1               
                                   1            
                                                     1          
2       
                        2       
                                            2   
3
                3
                                   3
 

Explication : Les données sont colées bout à bout et non l"une à côté de l'autre. C'est à dire quand je colle mes données dans la colonne A2 (A1 = titre de la colonne = Article) jusqu'à A100 par exemple, la formule ActiveSheet.UsedRange.Rows.Count + 1 me colle les données qté dans la colonne B101 et non B2.

C'es un peu comme lorsque l'on fait un filtre sur une liste d'article et que l'on souhaite récupérer la valeur A2 jusqu'à la dernière ligne sans l'utilisation de la formulation caractère visible, la macro prend toutes les données sans tenir compte de ce filtre.

Dans ce cas présent, je souhaite qu'il prenne la première ligne vide de ma colonne B (B2) et qu'il ne tienne pas compte des données de la colonne A qu'il incrémente pour obtenir un B101.

Difficile d'être clair.

Merci pour votre aide,

Cordialement,

Laurent

Bonjour,

Ci dessous la solution que j'ai trouvé pour réussir cette boucle while.

ChDir "W:\PUBLIC\Planifier_Livrer\T00_Public\VEX\2016\Extraction\MAG PF"

Classeurlocal = Dir("W:\PUBLIC\Planifier_Livrer\T00_Public\VEX\2016\Extraction\MAG PF\*.XLS")

While Len(Classeurlocal) > 0

Workbooks.Open Classeurlocal

'Extraction de la colonne article

DerniereLigne = ActiveSheet.UsedRange.Rows.Count

Range("B4:B" & DerniereLigne).Copy

Workbooks("Suivi_Magasin_0003 2016.xlsm").Activate

Range("A" & Rows.Count).End(xlUp).Select

Selection.Offset(1, 0).Select

ActiveSheet.Paste

En espérant que cela puisse vous aidez.

Cordialement,

Laurent

Rechercher des sujets similaires à "synthese classeurs boucle while"