Copie de données avec saut de cellules.

Selenn

XLDnaute Nouveau
Bonjour,

Je me tourne vers vous car je ne trouve pas de solution à un petit problème somme toutes assez simple ...

Sur une feuille de calcul, j'ai un tableau qui ressemble à ça :

Elément 1
Info 1.1
Info 1.2
Info 1.3
Info 1.4
Elément 2
Info 2.1
Info 2.2
Info 2.3
Info 2.4
Elément 3
Info 3.1
Info 3.2
Info 3.3
Info 3.4

Sur une autre feuille, j'ai besoin d'aller chercher les infos de manière à avoir :
Elément 1 : Info 1.1 | des colonnes ... | Info 1.2 | des colonnes ... | Info 1.3 | des colonnes ... | Info 1.4
Elément 2 : Info 2.1 | des colonnes ... | Info 2.2 | des colonnes ... | Info 2.3 | des colonnes ... | Info 2.4
Elément 3 : Info 3.1 | des colonnes ... | Info 3.2 | des colonnes ... | Info 3.3 | des colonnes ... | Info 3.4

Je sais qu'il existe un moyen de copier un tableau vertical à l'horizontal, mais là, mes infos ne sont pas nécessairement dans le même ordre, ou sur la même structure. Je ne peux me permettre de transposer simplement mon tableau vertical à l'horizontal.

Je cherche surtout un moyen de créer une série que je pourrais copier sur la hauteur de mon tableau final où les informations seraient prises à intervalle régulier dans mon tableau initial ...

Et ce, sans avoir à aller chercher cellule par cellule mes informations ...
Ai-je une solution ?

En vous remerciant par avance de vos lumières ...

[Edit pour précisions]
En fait, si l'on imagine le contenu final des mes colonnes, et en admettant que j'ai un intervalle de 4 lignes, je voudrais que quand je copie ma formule verticalement, il me fasse :
A1
A5
A9
A13
A17
etc ...
Au lieu de
A1
A2
A3
A4
A5


J'ai essayé de lui mettre les 2 premières cellules avec un intervalle de 2 et de descendre ma formule à partir de la sélection des 2 premières cellules, dans l'espoir qu'il continue la "série", mais ça ne fonctionne pas.
 
Dernière édition:

PMO2

XLDnaute Accro
Re : Copie de données avec saut de cellules.

Bonjour,

Une piste en VBA. Je me suis basé sur l'exemple que vous avez fourni.

Copiez le code suivant dans un module standard
Code:
Sub TransposeAvecIntervalles()
Dim S As Worksheet
Dim R As Range
Dim Pas&
Dim Interv&
Dim nbLig&
Dim nbCol&
Dim var
Dim i&
Dim j&
Dim k&
Dim T()
Set R = Application.InputBox("Sélectionnez la plage à transposer.", Type:=8)
If R.Columns.Count > 1 Then
  MsgBox "La plage sélectionnée ne doit contenir qu'une seule colonne."
  Exit Sub
End If
Pas& = Application.InputBox("Entrez le pas entre chaque élément", Type:=1)
nbLig& = R.Rows.Count
If nbLig& Mod Pas& <> 0 Then
  MsgBox "Le pas doit-être un sous-multiple du nombre de lignes de la plage sélectionnée."
  Exit Sub
End If
If Pas& > nbLig& Then
  MsgBox "Le pas choisi excède le nombre de lignes de la plage sélectionnée."
  Exit Sub
End If
Interv& = Application.InputBox("Entrez l'intervalle de colonnes espaçant chaque info", Type:=1)
If (Pas& * (Interv& + 1)) + 1 > 256 Then
  MsgBox "Le pas et l'intervalle choisis nécessitent plus de 256 colonnes."
  Exit Sub
End If
var = R
nbCol& = (Interv& + 1) * (Pas& - 1) + 1
ReDim T(1 To nbLig& / Pas&, 1 To nbCol&)
j& = 1
k& = 1
For i& = 1 To nbLig&
  T(j&, k&) = var(i&, 1)
  k& = k& + Interv& + 1
  If i& Mod Pas& = 0 Then
    j& = j& + 1
    k& = 1
  End If
Next i&
Set S = Sheets.Add
Set R = S.Range(S.Cells(1, 1), S.Cells(UBound(T, 1), UBound(T, 2)))
R = T
End Sub

MARCHE A SUIVRE
1) sélectionnez la feuille source (feuille "test" dans l'exemple)
2) lancez la macro "TransposeAvecIntervalles"
3) pour répondre à l'InputBox, sélectionnez la plage concernée (une seule colonne autorisée)
4) pour répondre à l'InputBox, tapez le pas (1 élément + x infos soit 5 pour l'exemple)
5) pour répondre à l'InputBox, tapez l'intervalle désiré

Une nouvelle feuille est créée dans laquelle le résultat s'affiche.

Cordialement.

PMO
Patrick Morange
 

eriiic

XLDnaute Barbatruc
Re : Copie de données avec saut de cellules.

Bonsoir,

ou par formule :
=DECALER($A$1;(LIGNE()-1)*4;0)
si la formule est saisie en ligne 1, sinon ajouter une constante à l'offset ligne (2nd paramètre)

Tu as bien fait de faire l'édit ;-)

eric
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87