Recopier une colonne sur 3 colonne

Bonjour.

Pas trouvé de solution dans le forum 😕

Voilà ma question :

Est il possible de recopier une colonne sur 3 colonnes.

C’est à dire en A:A j’ai une liste de nom trié par ordre alphabétique.

Je voudrais que :

  • A1 soit en B1
  • A2 soit en C1
  • A3 soit en D1
  • A4 soit en B2
  • A5 soit en C2
  • A6 soit en D2
  • A7 soit en B3
  • A8 soit en C3
  • A9 soit en D3
  • A10 soir en B4
...... etc.

Pouvez vous m’aider SVP ?

Cordialement

Tristan.

bonjour

brut de decoffrage

=DECALER($A1;COLONNE(B:B)-1+LIGNE(A1)-1+LIGNE(A1)-2;;)

a saisir enB1 et tirer adroite sur 3 colonnes puis vers le bas

cordialement

edition 1

=DECALER($A1;COLONNE(B:B)-1+LIGNE(A1)*2-3;;)

Bonjour,

Essaie cette procédure :

Sub Transp3Col()
    Dim aa, abc(2), i%, n%
    Application.ScreenUpdating = False
    With ActiveSheet
        aa = .Range("A1").CurrentRegion
        For i = 1 To UBound(aa) Step 3
            For ii = 0 To 2
                If i + ii <= UBound(aa) Then abc(ii) = aa(i + ii, 1) Else Exit For
            Next ii
            n = n + 1
            .Cells(n, 1).Resize(, 3).Value = abc
            Erase abc
        Next i
        .Range("A1").CurrentRegion.Offset(n).ClearContents
    End With
End Sub

Je n'ai pas choisi la méthode la plus rapide mais je suis encore un peu léthargique, et tant que le nombre de lignes reste raisonnable, tu ne verras pas la différence .

Cordialement.

Tulipe ! Content de te revoir ! Mais pas de tendance suicidaire j'espère !

Merci Beaucoup à tous les deux

Plus le premier post, je trouve plus facile à comprendre avec les formules.

Amicalement

Tristan

bonjour

brut de decoffrage

=DECALER($A1;COLONNE(B:B)-1+LIGNE(A1)-1+LIGNE(A1)-2;;)

a saisir enB1 et tirer adroite sur 3 colonnes puis vers le bas

cordialement

edition 1

=DECALER($A1;COLONNE(B:B)-1+LIGNE(A1)*2-3;;)

Re !

J'essaye de les comprendre pour les adapter à ma feuille mais je n'y arrive pas.

Je pensais qu'il fallait juste changer les références mais ca ne marche pas.

Par exemple si A1 est en fait en D1 et que B1 est en F1 (par exemple) je change comme ça :

=DECALER($D1;COLONNE(F:F)-1+LIGNE(D1)-1+LIGNE(D1)-2;;)

Mais ça ne marche pas.

Ensuite j'ai voulu essayer sur 4 colonnes (c'est juste une histoire de présentation) forcément ça ne me renvoi pas les bonnes valeur dès la 2ème ligne :/

Pouvez vous tenter de me l'expliquer pour que je puisse l'adapter à ma convenance et suivant mes besoins.

amicalement

Tristan

De même des difficultés si ça commence à la ligne 2

C'est toi qui fournit les données du problème auquel on répond ! A toi de formuler la question qui te permettra d'obtenir la réponse que tu attends dans les conditions te permettant de l'utiliser...

C'est toi qui fournit les données du problème auquel on répond ! A toi de formuler la question qui te permettra d'obtenir la réponse que tu attends dans les conditions te permettant de l'utiliser...

Oui c'est sure, mais en comprenant la formule on arrive beaucoup mieux à l'appliquer pour les autres fois.

Si à chaque fois je dois ouvrir un post je pense que les administrateurs vont péter un plomb.

J'ai réussi en tâtonnant mais je n'ai pas forcément compris. tant pis.

Bonjour

peux être comme ca

a voir

Sub Transfer()
T = 1
Nlig = Range("A" & Rows.Count).End(xlUp).Row
    For L = 1 To Nlig Step 3
        Range("B" & T).Value = Range("A" & L).Value
        Range("C" & T).Value = Range("A" & L + 1).Value
        Range("D" & T).Value = Range("A" & L + 2).Value
        T = T + 1
    Next
End Sub

A+

Maurice

Bonjour Tristan, le forum,

pour ton énoncé de départ, je te propose cette formule (dérivée de celle de tulipe_4) :

=DECALER($A1;LIGNE()*2+COLONNE()-4;0) à mettre en B1

ensuite, adaptée à tes nouvelles coordonnées colonnes, ça donne :

=DECALER($D1;LIGNE()*2+COLONNE()-8;0) à mettre en F1

dans les 2 cas, tirer à droite sur 2 colonnes, puis vers le bas


si ça commence à la ligne 2, les deux formules deviennent respectivement :

=DECALER($A2;LIGNE()*2+COLONNE()-6;0) à mettre en B2

et

=DECALER($D2;LIGNE()*2+COLONNE()-10;0) à mettre en F2

façon d'étirer identique

Amicalement,

dhany

Merci beaucoup.

Bon Week-end à vous.

Cordialement

Tristan

mais en comprenant la formule on arrive beaucoup mieux à l'appliquer pour les autres fois.

J'ai réussi en tâtonnant mais je n'ai pas forcément compris.

Ce doit être mon jour de bonté de répondre sur une question formules alors que je t'ai fournie une solution macro clé en main que tu n'as même pas daigné tester, peut-être parce que je suis plutôt fatigué en ce moment...

Tes données sont sur une seule colonne et débutent par une cellule que nous désignerons par Cel1

. Tu veux les répartir sur un nombre donné de colonne, soit n est ce nombre de colonnes.

Tu choisis l'emplacement où tu veux le résultat : dans la cellule supérieure gauche de ta plage résultat, tu auras à taper une formule, à étendre ensuite sur autant de lignes que nécessaire et le nombre de colonne choisi pour le résultat.

La formule générique à utiliser :

=DECALER(Cel1;(LIGNE(1:1)-1)*n+COLONNE(A:A)-1;0)

La référence de la cellule Cel1 doit toujours être absolue.

Si ta colonne source débute à A1 et que tu veux répartir sur 3 col. : Cel = $A$1, n = 3

Ta formule sera :

=DECALER($A$1;(LIGNE(1:1)-1)*3+COLONNE(A:A)-1;0)

Si début de la colonne source en D2 et à répartir sur 4 colonnes :

=DECALER($D$2;(LIGNE(1:1)-1)*4+COLONNE(A:A)-1;0)

Dans chaque cellule où ta formule sera recopiée, tu appelles une cellule de ta colonne source décalée par rapport à la première cellule de cette dernière : n'ayant qu'une colonne le décalage est exclusivement en ligne (décalage colonne = 0). Ce décalage doit être de 0 pour la cellule où la formule sera tapée, il doit s'incrémenter de 1 vers la droite sur les colonnes de la même ligne, donc de 0 à n-1 (n étant le nombre de colonnes cible), et il doit s'incrémenter de n vers le bas.

LIGNE(1:1)-1 vaut 0, multiplié par n cela fait toujours 0 (et sur les colonnes suivantes cela ne varie pas)

mais à la ligne au-dessous, cela fera n

et à la ligne suivante n*2, ainsi de suite

COLONNE(A:A)-1 vaut 0 (et ne varie pas sur les lignes suivantes)

mais sur la colonne suivante cela vaudra 1

et sur la suivante, 2

ainsi de suite sachant que l'on s'arrête au nombre de colonnes souhaité, la valeur atteinte étant n-1 dans la dernière colonne

L'addition des 2 fournit le décalage...

Image du décalage obtenu :

2018 06 16 232400

Cela devrait te suffire pour comprendre le mécanisme.

Cordialement.

Exceptionnel !!

Merci vraiment beaucoup beaucoup !!

Les macro, j’arrive à les faire en les enregistrant en temps réel mais de là à les faire via le code, je ne maîtrise pas assez.

C’est vraiment top ce que tu viens de poster.

Un grand merci.

À bientôt.

Amicalement.

Tristan.

Rechercher des sujets similaires à "recopier colonne"