Copier une plage selon une liste

topo

XLDnaute Junior
Bonjour,

Je teste, je teste, mais je n'y arrive toujours pas !!! :mad:

Ci joint le fruit pourri de mon labeur ...
je cherche à créer une de données à partir d'une liste déja préétablie en feuil2:
- dans la feuill1, la base de données à partir du premier élément de ma liste en Feuil2\C2
- dans la feuil2, la liste à utiliser est colonne C, que j'ai nommé "societe"

Je souhaite dupliquer cette base pour chaque cellule de ma liste en renommant dans la colonne A le bon nom. La base de données doit être dupliquer dans la feuil1 à la suite.

j'ai écrit ça, mais je n'arrive pas à configurer une boucle pour qu'il duplique en fonction de la liste

PHP:
Sub Dupliquer()

Dim derligne As Long
Dim i
For i = 1 To Range("societe").End(xlUp).Row
    
    Sheets("Feuil1").Select
    Range("A1:Z20").Select
    Selection.Copy
    derligne = Range("A65536").End(xlUp).Row + 1
    Cells(derligne, 1).Select
        ActiveSheet.Paste
    Selection.Replace What:=i, Replacement:=i + 1, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
Next i

End Sub

en fait, je ne sais pas configurer la boucle ...

Merci beacoup de votre aide !

Topo
 

Pièces jointes

  • Classeur1.xlsm
    20 KB · Affichages: 90
  • Classeur1.xlsm
    20 KB · Affichages: 82
  • Classeur1.xlsm
    20 KB · Affichages: 84

topo

XLDnaute Junior
Re : Copier une plage selon une liste

bonjour,

désolé si je ne suis pas clair ... en plus, oui "societe" est en B ...

On doit :
- quoi : dupliquer la base de données de la feuille 1 autant de fois qu'il y a d'élément dans la liste (77 dans l'exemple)
-quoi2 : la plage dupliquée doit prendre le nom de l'élément de la liste (pour la première duplication, GE5 doit remplacer FR22 dans la colonne A)
- ou : la duplication se fait à la suite de la base de données existante (dans l'exemple, à partir de la ligne 21; 41; 61 ... 77 fois)

j'espère avoir été plus clair ! Merci beaucoup pour cette aide !
 

laetitia90

XLDnaute Barbatruc
Re : Copier une plage selon une liste

bonjour topo CHALET53
comme j'ai compris a tester????

Code:
Sub es()
Dim z As Long, i As Long, x As Long, c As Variant
Application.ScreenUpdating = False
Sheets("Feuil1").Select
Set c = Range("b1", Cells(Rows.Count, "n").End(xlUp))
z = 20: x = 1
For i = 2 To Sheets("Feuil2").Cells(Rows.Count, 2).End(xlUp).Row
Sheets("Feuil1").Range(Cells(x, 1), Cells(z, 1)) = Sheets("Feuil2").Cells(i, 2)
x = x + 20: z = z + 20
c.Copy Destination:=Range("b" & Rows.Count).End(xlUp)(2)
Next i
End Sub
 

laetitia90

XLDnaute Barbatruc
Re : Copier une plage selon une liste

re, je me demande si dans ton cas en l'ecrivant comme cela c'est pas mieux en terme de vitesse vu que c'est des nombres aleatoire apres on peut l'ecrire avec with

Code:
Sub es()
Dim z As Long, i As Long, x As Long
Application.ScreenUpdating = False
Sheets("Feuil1").Select
z = 20: x = 1
For i = 2 To Sheets("Feuil2").Cells(Rows.Count, 2).End(xlUp).Row
Range(Cells(x, 1), Cells(z, 1)) = Sheets("Feuil2").Cells(i, 2)
x = x + 20: z = z + 20
Next i
Range("b1:n" & Cells.Find("*", , , , , xlPrevious).Row).FillDown
End Sub
 

Discussions similaires