Automatisation : Une ligne en deux lignes + permutation de blocs

Résolu/Fermé
Zinkzink Messages postés 2 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 22 août 2013 - 21 août 2013 à 13:51
Zinkzink Messages postés 2 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 22 août 2013 - 22 août 2013 à 06:29
Bonjour bonjour,

Après avoir écumé Dr Google et avec mon ignorance du VBA, je rends les armes.

Les images expliqueront mieux la situation

J'ai ça : http://imageshack.com/f/nmbko6p
Je voudrais arriver à ça : http://imageshack.com/f/g11neqp

J'ai évidemment un paquet de lignes à traiter, donc ça m'arrangerait de pouvoir automatiser un minimum le procédé

Je n'ai pas trouvé de code VBA qui puisse permuter deux blocs de cellule sur deux lignes. C'est à dire E1 F1 G1 devient A2 B2 C2 D2 et vice et versa, dans l'amour jaune et bleu et pourpre et parabolique. Si j'arrivais à faire ça pour chaque couple de lignes, ça me permettrait d'arriver à mon résultat.

J'ai exploré un peu l'option décaler. Là, même si je me débrouille pour que ça marche sur une cellule, je ne peux pas tirer sinon je bousille toutes les cellules que je souhaiterais ne pas changer sur l'ensemble de ma colonne

Il y aura sûrement besoin de précision, je suis dans le coin ...

Merci d'avance,
Zinkzink

5 réponses

Bonjour
donne au moin un modelle en XLS ca serat plus simple pour faire une macro

A+
Maurice
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
21 août 2013 à 14:42
Bonjour zinkzink

Une possibilité par formule sans macro :

https://www.cjoint.com/?0HvoPrJJ6Pz

A adapter à ton fichier

Cdlmnt
0
tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024 1 054
21 août 2013 à 16:50
Bonjour,
Le mieux est parfois l'ennemi du bien.
Sur la très bonne base proposée par Via55 j'ai voulu simplfier la procédure: pas de colonne A auxiliaire, 1 formule en B1, 1 formule en F1.
En B1 =INDEX(donnees;$A1;COLONNE()-1) devient:
=INDEX(donnees;2*ENT((LIGNES($1:1)-1)/2)+1;COLONNE()+8*MOD((LIGNES($1:1)-1)/2;1)-1) à recopier jusqu'à E6.

En F1=INDEX(donnees;$A1+1;COLONNE()-5) devient:
=INDEX(donnees;2*ENT((LIGNES($1:1)-1)/2)+2;COLONNE()-8*MOD(LIGNES($1:1)/2;1)-1) à recopier jusqu'à I6

La lisibilité des formules en souffre beaucoup!!!
0
Bonjour
Voila une macro

Sub Transpose()
' Le tableaux commence en B15
Application.ScreenUpdating = False
Range("L15:S28").Delete
For L = 15 To 20 Step 2
Range(Cells(L, 2), Cells(L, 5)).Copy
Cells(L, 12).PasteSpecial xlPasteAll
Cells(L, 12).PasteSpecial xlPasteColumnWidths
Range(Cells(L, 6), Cells(L, 9)).Copy
Cells(L + 1, 12).PasteSpecial xlPasteAll
L1 = L + 1
Range(Cells(L1, 2), Cells(L1, 5)).Copy
Cells(L1 - 1, 16).PasteSpecial xlPasteAll
Cells(L1 - 1, 16).PasteSpecial xlPasteColumnWidths
Range(Cells(L1, 6), Cells(L1, 9)).Copy
Cells(L1, 16).PasteSpecial xlPasteAll
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
Range("A1").Select
End Sub

A+
Maurice
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zinkzink Messages postés 2 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 22 août 2013
22 août 2013 à 06:29
Mille merci pour vos réponses, ça devrait le faire.
0