Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tri : déplacer les cellules dans les bonnes colonnes

3 réponses
Avatar
Alex.H
Bonjour =E0 tous,

J'ai un tableau avec des cellules qui ne sont pas dans les bonnes
colonnes. Toutes les valeurs possibles des cellules sont les titres de
mes colonnes, qui vont de "B" =E0 "AJ". Il y a environ 1800 lignes et
les cellules ne doivent pas changer de lignes, juste de colonnes.
Concretement j'ai quelque chose comme ca :

Type 1 Type 2 Type 3
ligne 1 Type 2 Type 3
ligne 2 Type 3
ligne 3 Type 1 Type 3

Et je voudrais quelque chose comme ca :

Type 1 Type 2 Type 3
ligne 1 Type 2 Type 3
ligne 2 Type 3
ligne 3 Type 1 Type 3


J'espere que j'ai convenablement expliqu=E9 le probleme et que vous
pourrez m'aider !

Merci

3 réponses

Avatar
Daniel
Bonjour.
Vooici une macro à adapter.

Sub Test()
Dim Plage As Range, c As Range
Set Plage = Range("A1", "AJ" & Range("A65536").End(xlUp).Row)
For Each c In Plage
If c.Value <> "type" & c.Column And c.Value <> "" Then
Range(c, "AJ" & c.Row).Copy
c.Offset(0, 1).Select
ActiveSheet.Paste
c.Value = ""
End If
Next c
End Sub

Cordialement.
Daniel
"Alex.H" a écrit dans le message de news:

Bonjour à tous,

J'ai un tableau avec des cellules qui ne sont pas dans les bonnes
colonnes. Toutes les valeurs possibles des cellules sont les titres de
mes colonnes, qui vont de "B" à "AJ". Il y a environ 1800 lignes et
les cellules ne doivent pas changer de lignes, juste de colonnes.
Concretement j'ai quelque chose comme ca :

Type 1 Type 2 Type 3
ligne 1 Type 2 Type 3
ligne 2 Type 3
ligne 3 Type 1 Type 3

Et je voudrais quelque chose comme ca :

Type 1 Type 2 Type 3
ligne 1 Type 2 Type 3
ligne 2 Type 3
ligne 3 Type 1 Type 3


J'espere que j'ai convenablement expliqué le probleme et que vous
pourrez m'aider !

Merci
Avatar
PMO
Bonjour,

Une piste en VBA.
Copiez le code dans un module standard et faites tourner
la macro "TriColonnes".
ATTENTION: FAITES L'ESSAI SUR UNE COPIE DE VOTRE CLASSEUR.

'***********************
Option Explicit
Type StructTitre
Value As Variant
Column As Long
End Type

Sub TriColonnes()
Dim Titres
Dim var
Dim Adresse$
Dim R As Range
Dim i&
Dim j&
Dim k&
Dim x&
Dim T() As StructTitre
Set R = ActiveSheet.UsedRange
var = R
Titres = R.Range(Cells(1, 2), Cells(1, R.Columns.Count))
For i& = 1 To UBound(Titres, 2)
If Trim(Titres(1, i&)) = "" Then
MsgBox "Certains titres ne sont pas renseignés."
Exit Sub
End If
Next i&
For i& = 2 To UBound(var, 1)
ReDim T(1 To UBound(var, 2))
x& = 0
For j& = 2 To UBound(var, 2)
For k& = 1 To UBound(Titres, 2)
If Not IsEmpty(var(i&, j&)) Then
If var(i&, j&) = Titres(1, k&) Then
x& = x& + 1
With T(x&)
.Value = var(i&, j&)
.Column = k&
End With
var(i&, j&) = ""
End If
End If
Next k&
Next j&
If x& > 0 Then
For k& = 1 To x&
var(i&, T(k&).Column + 1) = T(k&).Value
Next k&
End If
Next i&
R = var
End Sub
'***********************

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,

J'ai un tableau avec des cellules qui ne sont pas dans les bonnes
colonnes. Toutes les valeurs possibles des cellules sont les titres de
mes colonnes, qui vont de "B" à "AJ". Il y a environ 1800 lignes et
les cellules ne doivent pas changer de lignes, juste de colonnes.
Concretement j'ai quelque chose comme ca :

Type 1 Type 2 Type 3
ligne 1 Type 2 Type 3
ligne 2 Type 3
ligne 3 Type 1 Type 3

Et je voudrais quelque chose comme ca :

Type 1 Type 2 Type 3
ligne 1 Type 2 Type 3
ligne 2 Type 3
ligne 3 Type 1 Type 3


J'espere que j'ai convenablement expliqué le probleme et que vous
pourrez m'aider !

Merci




Avatar
Alex.H
Merci de m'avoir répondu.
Daniel : j'ai peut etre mal adapté la macro, ca a pas l'air de coller,
ca vient surement de moi...
PMO : merci infiniment, ca marche du tonnerre, toute ma reconnaissance
!

Un grand merci à vous deux !