De l'aide pour une macro boucle

titi7500

XLDnaute Junior
Bonjour j'ai un petit soucis, ne sachant pas utiliser la fonction vba d'excel, je n'arrive pas à créer une macro répondant à mon problèmes.

Je vous explique rapidement.

J'ai un fichier excel avec dedans un onglet qui me sert d'extraction et j'ai plusieurs onglet . Chaque onglet porte le code que l'on peut trouver dans la colonne B de l'onglet extraction.

Ce que je souhaite c'est que les donnés de l'extraction se copie colle de la ligne A à la ligne D dans l'onglet en fonction de la colonne B et que la macro boucle se stop quand je n'ai plus rien dans la colonne B.

Il y a une extraction mensuelle on peut atteindre facilement les 10k lignes dans l'extraction

Ci joint un extrait de mon fichier excel.

Une petite aide de votre part serait très apprécié.

Merci par avance.
 

Pièces jointes

  • test.xlsx
    12.2 KB · Affichages: 34

titi7500

XLDnaute Junior
justement je voudrais que les données de l'extraction se colle via la macro boucle dans les autres onglets mais il faut que les données de longlet B de l'extraction soit la meme que le nom de longlet qui est crée.

j'ai apporté une petite modif au fichier

Merci.
 

Calvus

XLDnaute Barbatruc
Re,

Ton fichier en retour.
VB:
Sub Dispatch()
Dim WS As Worksheet, i As Integer, j As Integer
For Each WS In Sheets
    For i = 2 To Range("B" & Rows.Count).End(3).Row
        If Cells(i, 2) = WS.Name Then
            WS.Range("A" & Rows.Count).End(3).Rows(2) = Cells(i, 1)
                WS.Range("B" & Rows.Count).End(3).Rows(2) = Cells(i, 3)
            WS.Range("C" & Rows.Count).End(3).Rows(2) = Cells(i, 4)
        End If
    Next i
Next
End Sub
A+
 

Pièces jointes

  • Titi7500.xlsm
    22.6 KB · Affichages: 33

titi7500

XLDnaute Junior
justement je suis en train de faire un test, comment je peux modifier si par exemple j'ai besoin de prendre de la colonne A jusqu'a la Z et comment modifier si je veux que ca colle qu'a partir de la ligne 9 dans mes onglets ? et est -il possible d'incorporer un message qui apparait qui me dit "dispatch effectué" stp
 

titi7500

XLDnaute Junior
et j'ai vue dans ton exemple que la macro ne reprends pas le code alors que meme si c'est le meme code qui se trouve dans l'onglet j'aimerais qu'il apparait pour pouvoir controler car sur 10 lignes on peut voir mais sur 30k on verra pas si y'a des erreurs
 

Calvus

XLDnaute Barbatruc
VB:
Sub Dispatch()
Dim WS As Worksheet, i As Integer, j As Integer
For Each WS In Sheets    Pour chaque feuille

    For i = 2 To Range("B" & Rows.Count).End(3).Row  Pour i = 2 jusqu'à la dernière ligne

        If Cells(i, 2) = WS.Name Then   Si la cellule = nom de la feuille alors

            WS.Range("A" & Rows.Count).End(3).Rows(2) = Cells(i, 1)  Colonne A et dernière ligne = cellule x

                WS.Range("B" & Rows.Count).End(3).Rows(2) = Cells(i, 3)  etc
            WS.Range("C" & Rows.Count).End(3).Rows(2) = Cells(i, 4)  etc
        End If
    Next i   et on recommence pour la ligne suivante.
Next
End Sub

Donc pour la ligne 9 : For i = 9
Et range("Z") pour les colonnes.
 

titi7500

XLDnaute Junior
y'a des messages qui s'entre croise.

- je ne vois pas de difference entre ton code d'avant et celui que tu viens de poster.
- voici les modifs que j'aimerais en plus :
Faire apparaitre le code lors du copier coller afin de verifier que sur 30k il y aura pas de soucis
Comment puis-je modifier la macro si par exemple je décider de faire le copier coller dans les onglets qu'a partir de la ligne 9
Comment puis-je modifier la macro si par exemple je décider de vouloir copier coller de la ligne A à la Z ?

Merci
 

Calvus

XLDnaute Barbatruc
Range("A") correspond à la colonne A.
Donc si tu veux copier les données de la colonne Z, il faut mettre Range("Z"), ou Range ("O") pour la colonne O et ainsi de suite.

Ça donnerait donc WS.Range("Z" & Rows.Count).End(3).Rows(2) = Cells(i, 4)
 

Discussions similaires

Réponses
12
Affichages
227
Réponses
3
Affichages
416

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260