VBA : Coller valeur avec décalage nb ligne fixe

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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
 
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
 
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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
973
Retour