VBA : Coller valeur avec décalage nb ligne fixe

incubus20851

XLDnaute Occasionnel
Bonjour à toutes et à tous !

J'ai cherché mais je n'ai pas trouvé la solution à mon problème...

J'ai des valeurs dans un onglet "Numéro" et je souhaite recopier la 1ère valeur sur 30 ligne dans l'onglet "Résultat" et ensuite passé à la seconde valeur de l'onglet "Numéro" et la recopier sur 30 ligne à nouveau dans l'onglet "Résultat" et ainsi de suite.

De même pour l'onglet "Produit"

Avez-vous une idée du code que je peux utiliser ?

Voir fichier en exemple avec des informations complémentaires

J'espère que j'ai reussi à être clair sur ma demande !

Merci d'avance !
 

Pièces jointes

  • TEST.xls
    64.5 KB · Affichages: 71
  • TEST.xls
    64.5 KB · Affichages: 61
  • TEST.xls
    64.5 KB · Affichages: 70
Dernière édition:

Louax

XLDnaute Nouveau
Re : Coller valeur avec décalage fixe en VBA

Bonjour,

Simple question est-ce-que les 30 premières lignes sont existantes car si oui le code est plus court car il suffit de copier 30 fois le numéro puis 1 fois B1:C30 en B31
 

incubus20851

XLDnaute Occasionnel
Re : Coller valeur avec décalage fixe en VBA

Bonjour Louax,

Je suis pas sur d'avoir tout compris, mais je peux coller une fois les 30 lignes produits dans l'onglet "Résultat" pour qu'elles soient présente et qu'ensuite elles soient recopié automatiquement vers le bas avec le code
 

Louax

XLDnaute Nouveau
Re : VBA : Coller valeur avec décalage nb ligne fixe

Voici ton code, si tu ne le comprend pas je peux t'expliquer

Sub Macro2()

xr = 31

For x = 2 To 1033
Sheets("Numéro").Select
Cells(x, 1).Select
Selection.Copy
Sheets("Résultat").Select
Cells(xr, 1).Select
ActiveSheet.Paste

Range("B1:C30").Select
Selection.Copy
Cells(xr, 2).Select
ActiveSheet.Paste
xr = xr + 30
Next

End Sub
 

Louax

XLDnaute Nouveau
Re : Coller valeur avec décalage fixe en VBA

Oups je suis allé un peu vote j'ai oublier de copier 30 fois le numéro, voici la nouvelle macro

Sub Macro2()

xr = 31

For x = 2 To 1033
Sheets("Numéro").Select
Cells(x, 1).Select
Selection.Copy
Sheets("Résultat").Select
Range(Cells(xr, 1), Cells(xr + 29, 1)).Select
ActiveSheet.Paste

Range("B1:C30").Select
Selection.Copy
Cells(xr, 2).Select
ActiveSheet.Paste
xr = xr + 30

Next

End Sub
 

Cousinhub

XLDnaute Barbatruc
Re : VBA : Coller valeur avec décalage nb ligne fixe

Bonjour,

Essaie avec ce code

Nota, je suppose que tu n'as pas de titre dans les onglets ("Produit"), ni ("Numéro")

Sinon, il faut adapter pour les tableaux (partir de A2, et non A1)

Pour info, 0,7 seconde pour un résultat de 30 990 lignes

Le code :

Code:
Sub dispatch()
Dim Tblo1, Tblo2
Dim I As Long
With Sheets("Numéro")
    Tblo1 = .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
End With
With Sheets("Produit")
    Tblo2 = .Range("A1:B" & .Cells(Rows.Count, 1).End(xlUp).Row)
End With
With Sheets("Résultat")
    .Columns("A:C").Clear
    For I = LBound(Tblo1) To UBound(Tblo1)
        .Cells(Rows.Count, 1).End(xlUp)(2).Resize(30) = Tblo1(I, 1)
        .Cells(Rows.Count, 2).End(xlUp)(2).Resize(30, 2) = Tblo2
    Next I
    .Rows(1).Delete
End With
End Sub

Cependant, si tu as plus de 30 produits, on peut adapter le code, et remplacer le 30 par le nombre de produits

Bon courage
 

incubus20851

XLDnaute Occasionnel
Re : VBA : Coller valeur avec décalage nb ligne fixe

Merci Bhbh et Louax,

Vos solutions fonctionnent parfaitement ! Exactement ce que je voulais

Chapeau, merci beaucoup encore ! (Vous m'avez évité 3H de recopie) :)

A bientôt
Bonne après midi
 

Discussions similaires

Réponses
6
Affichages
384
Réponses
12
Affichages
330

Statistiques des forums

Discussions
312 310
Messages
2 087 119
Membres
103 478
dernier inscrit
Frederic Lagger