tri : déplacer les cellules dans les bonnes colonnes
3 réponses
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 !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <alexandre.hartheiser@ceram.fr> a écrit dans le message de news:
1117021158.681810.99400@g43g2000cwa.googlegroups.com...
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 !
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
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
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 !
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
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 !
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
!
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 !