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 -
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
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
A voir également:
- Automatisation : Une ligne en deux lignes + permutation de blocs
- Logiciel automatisation mac - Guide
- Logiciel automatisation clic souris - Télécharger - Divers Utilitaires
- Choisir les applications qui se lancent au démarrage du Mac - Guide
- [Cleanmgr.exe] Automatisation nettoyage - Forum Windows
- Créer un script d’automatisation - Forum Windows 10
5 réponses
Bonjour zinkzink
Une possibilité par formule sans macro :
https://www.cjoint.com/?0HvoPrJJ6Pz
A adapter à ton fichier
Cdlmnt
Une possibilité par formule sans macro :
https://www.cjoint.com/?0HvoPrJJ6Pz
A adapter à ton fichier
Cdlmnt
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!!!
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!!!
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question