• Initiateur de la discussion Initiateur de la discussion llpc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

llpc

Guest
Bonsoir à tous,

j'ai un tableau de 6 colonnes et plein de lignes à convertir en tableau de 2 colonnes mais 3 fois plus de lignes... mais en intercalant les lignes;

Je m'explique: les cellules An:Bn doivent se retrouver en A(3n-2):B(3n-2), les cellule Cn😀n doivent se retrouver en A(3n-1):B(3n-1) et enfin les cellules En:Fn doivent se retrouver en A(3n):B(3n)...

Je suppose qu'une macro pourrait me faire cette opération qui est très longue à effectuer manuellement (du moins, au vu de ma maîtrise d'excel).

Une âme charitable pourrait-elle m'aider?

merci d'avance.

Loïc
 
Re : petite macro???

Bonsoir llpc
  1. Faites une copie de la feuille à traiter.
  2. Appliquez la procédure
    Code:
    [COLOR="DarkSlateGray"]Sub toto()
    Dim i As Long
       For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
          Rows(i).Insert Shift:=xlDown
          Rows(i).Insert Shift:=xlDown
          Cells(i + 2, 1).Resize(1, 2).Cut Destination:=Cells(i, 1).Resize(1, 2)
          Cells(i + 2, 3).Resize(1, 2).Cut Destination:=Cells(i + 1, 1).Resize(1, 2)
          Cells(i + 2, 5).Resize(1, 2).Cut Destination:=Cells(i + 2, 1).Resize(1, 2)
       Next i
    End Sub[/COLOR]
    à la feuille copiée.
Il faut impérativement faire une copie de la feuille à traiter, sinon c'est votre feuille d'origine qui sera transformée.​
ROGER2327
 
Dernière édition:
Re : petite macro???

Bonsoir llpc, bonsoir roger,

une autre solution : ce code copie les données comme tu le souhaites mais renvoit les données en colonne J, K (à adapter si pas vide), je suppose à la base que les données commence en ligne 1 (d'où for n=1 to...), à adapter si c'est pas le cas

Code:
Sub copie()
For n = 1 To [A65536].End(xlUp).Row
Range(Cells(n, 1), Cells(n, 2)).Copy Cells(3 * n - 2, 10)
Range(Cells(n, 3), Cells(n, 4)).Copy Cells(3 * n - 1, 10)
Range(Cells(n, 5), Cells(n, 6)).Copy Cells(3 * n, 10)
Next
End Sub

voir fichier joint

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
122
Réponses
18
Affichages
631
Réponses
23
Affichages
695
Réponses
2
Affichages
244
Retour