Transférer des données toutes les X lignes

pingouinal

XLDnaute Occasionnel
Bonjour,

Tout d'abord désolé pour ce titre peut explicite, mais j'ai du mal à convertir ma demande en quelque chose de simple.
Voici donc ce que j'aimerais faire : j'ai un tableau dans un onglet représentant une base de données et je voudrais recopier ces données dans un autre onglet toutes les 12 lignes.
Par exemple la valeur en A1 dans l'onglet 1 devra se retrouver en B9 dans l'onglet 2. Ensuite la valeur de A2 en B21 (+12 lignes), celle de A3 en B33, etc.
Bien sûr je pourrais mettre en B9 de l'onglet 2 "=Onglet1!A1". Mais comme j'ai énormément de cellules à traiter, j'aimerais pouvoir mettre une formule que je collerai toutes les 12 lignes.
J'avais pensé à indirect(), mais je sèche sur la façon de l'utiliser dans ce cas précis.

Comme je ne sais pas si je suis très clair, je joins un petit fichier très simple.

D'avance merci pour votre aide.
 

Pièces jointes

  • Book2.xls
    13.5 KB · Affichages: 68
  • Book2.xls
    13.5 KB · Affichages: 69
  • Book2.xls
    13.5 KB · Affichages: 67

mromain

XLDnaute Barbatruc
Re : Transférer des données toutes les X lignes

Bonjour pingouinal,

Essaye avec la manière suivante :

> Tu saisis cette formule en B9
Code:
=SI(MOD(LIGNES(Sheet1!$A$1:$A1)-1;12)=0;DECALER(Sheet1!$A$1;(11+LIGNES($B$19:$B19))/12;);"")
> Tu la tires vers le bas

Et si tu veux enlever les formule (garder juste les valeurs), un simple copier-collage spécial (Valeurs) siffit.

a+
 

Pierrot93

XLDnaute Barbatruc
Re : Transférer des données toutes les X lignes

Bonjour Pingouinal, Romain,

une solution vba :

Code:
Option Explicit
Sub test()
Dim i As Long, j As Long
j = 9
With Sheets("Sheet1")
For i = 1 To .Range("A65536").End(xlUp).Row
    Sheets("Sheet2").Cells(j, 2).Value = .Cells(i, 1).Value
    j = j + 12
Next i
End With
End Sub

bonne journée
@+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Transférer des données toutes les X lignes

Bonjour Pinguinal, bonjour le forum,

Essaie comme ça :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (DESTination)
 
Set dest = Sheets("Sheet2").Range("B9") 'définit la cellule de destination
'boucle sur toutes les cellules éditées cel de la colonne A de l'onglet "Sheet1"
For Each cel In Sheets("Sheet1").Range("A1:A" & Sheets("Sheet1").Range("A65536").End(xlUp).Row)
    dest.Value = cel.Value 'récupère dans dest la valeur de la cellule cel
    Set dest = dest.Offset(12, 0) 'redéfinit dest
Next cel 'prochaine cellule de la boucle
End Sub

Édition :
Bonjour MRomain, Pierrot on s'est croisé
 

pingouinal

XLDnaute Occasionnel
Re : Transférer des données toutes les X lignes

Bonjour mromain,

Merci beaucoup pour cette réponse très rapide et très efficace.

Bonjour Pierrot93 et Robert,

Merci également pour vos solutions.
Je pensais passer par une formule pour plus de simplicité, mais je garde vos propositions, car le fichier étant conséquent, la macro pourrait permettre de l'alléger de quelques formules.
 

Statistiques des forums

Discussions
312 236
Messages
2 086 479
Membres
103 232
dernier inscrit
logan035