Automatisation : Une ligne en deux lignes + permutation de blocs

Résolu
Zinkzink Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Zinkzink Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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

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

    A+
    Maurice
    0
  2. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour zinkzink

    Une possibilité par formule sans macro :

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

    A adapter à ton fichier

    Cdlmnt
    0
  3. tontong Messages postés 2575 Date d'inscription   Statut Membre Dernière intervention   1 064
     
    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
  4. foo
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Zinkzink Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    Mille merci pour vos réponses, ça devrait le faire.
    0