Inversion colonnes ligne vba
pgillou
Messages postés
53
Statut
Membre
-
pgillou Messages postés 53 Statut Membre -
pgillou Messages postés 53 Statut Membre -
Bonjour,
Je suis débutant en vba et j'ai besoin dans le cadre de mon ativité pro d'un code permettant l'inversion des colonnes d'une ligne à partir d'un sélection
Exemple
test forum internet
Résultat:
internet forum test
Merci de votre aide et surtout n'hésitez pas à me demander des précisions!
Je suis débutant en vba et j'ai besoin dans le cadre de mon ativité pro d'un code permettant l'inversion des colonnes d'une ligne à partir d'un sélection
Exemple
test forum internet
Résultat:
internet forum test
Merci de votre aide et surtout n'hésitez pas à me demander des précisions!
A voir également:
- Inversion colonnes ligne vba
- Formule moyenne excel plusieurs colonnes - Guide
- Partager photos en ligne - Guide
- Comment faire des colonnes sur word - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Mètre en ligne - Guide
7 réponses
petit exemple avant d'aller manger...
Sub test() ' ' inversion des mots dans une ligne Dim maLigne As String Dim Tablo() As String Dim LigneSortie As String maLigne = "test forum internet" Tablo = Split(maLigne, " ") For i = UBound(Tablo) To 0 Step -1 LigneSortie = LigneSortie & Tablo(i) & " " Next i msgbox LigneSortie End Sub
Merci pour ta réponse rapide je t'explique il s'agit à partir de la sélection d'une palge de A1 à W1 d'inverser le contenue des colonnes en ligne bien sur vers une autre feuille ou sur la même feuille.
Dis moi si je ne suis pas assez clair.
Dis moi si je ne suis pas assez clair.
J'ai un code permettant de permutter les lignes dans une colonne ,je cherche à faire l'inverse:
coloneSelectionne = ActiveWindow.RangeSelection.Address
temp = Split(coloneSelectionne, ":")
premiereCellule = temp(0)
derniereCellule = temp(UBound(temp))
'sert à recuperer l'indice de la ligne des cellules
numeroPremiereCellule = Split(premiereCellule, "$")
numeroDerniereCellule = Split(derniereCellule, "$")
'calcule le nombre de cellules de la colone
difference = (numeroDerniereCellule(2) - numeroPremiereCellule(2) + 1)
Range(premiereCellule, premiereCellule).Select
' Déclare un tableau dynamique.
Dim valeurColone() As Variant
ReDim valeurColone(difference) 'aloue une taille au tableau
i = 0
While i <> difference
valeurCellule = ActiveCell.Offset(i, 0).Value
' Initialise le tableau avec
'les valeur de chaque cellule de la selection
valeurColone(i) = valeurCellule
i = i + 1
Wend
Dim j As Integer
j = 0
'je place dans la colone selectionnée
'les valeurs du tableau valeurColone en partant de la fin.
For i = UBound(valeurColone) - 1 To 0 Step -1
ActiveCell.Offset(j, 0).Select
ActiveCell.Value = valeurColone(i)
j = 1
Next i
End Sub
Pourrais tu m'indiquer ce qu'il faudrait modifier. Merci d'avance ^^
coloneSelectionne = ActiveWindow.RangeSelection.Address
temp = Split(coloneSelectionne, ":")
premiereCellule = temp(0)
derniereCellule = temp(UBound(temp))
'sert à recuperer l'indice de la ligne des cellules
numeroPremiereCellule = Split(premiereCellule, "$")
numeroDerniereCellule = Split(derniereCellule, "$")
'calcule le nombre de cellules de la colone
difference = (numeroDerniereCellule(2) - numeroPremiereCellule(2) + 1)
Range(premiereCellule, premiereCellule).Select
' Déclare un tableau dynamique.
Dim valeurColone() As Variant
ReDim valeurColone(difference) 'aloue une taille au tableau
i = 0
While i <> difference
valeurCellule = ActiveCell.Offset(i, 0).Value
' Initialise le tableau avec
'les valeur de chaque cellule de la selection
valeurColone(i) = valeurCellule
i = i + 1
Wend
Dim j As Integer
j = 0
'je place dans la colone selectionnée
'les valeurs du tableau valeurColone en partant de la fin.
For i = UBound(valeurColone) - 1 To 0 Step -1
ActiveCell.Offset(j, 0).Select
ActiveCell.Value = valeurColone(i)
j = 1
Next i
End Sub
Pourrais tu m'indiquer ce qu'il faudrait modifier. Merci d'avance ^^
Bonjour,
essaie avec ce code :
Bonne journée
essaie avec ce code :
Sub inverse()
Dim a, b
Dim I As Long, J As Byte
a = Application.Transpose(Application.Transpose(Range("A1:W1").Value))
ReDim b(UBound(a))
J = 0
For I = UBound(a) To LBound(a) Step -1
b(J) = a(I): J = J + 1
Next I
Range("A2:W2").Value = b
End Sub
Bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour ton aide cousinhub29 !
Il m'inverse les valeurs ligne A1:W1 en WI:A1 exactement ce que je veux.
Permet moi d'abuser en te demandant encore une petit chose peut on l'appliquer une une plage de données du style A1:W2?
Bonne après midi
Il m'inverse les valeurs ligne A1:W1 en WI:A1 exactement ce que je veux.
Permet moi d'abuser en te demandant encore une petit chose peut on l'appliquer une une plage de données du style A1:W2?
Bonne après midi
Re-,
essaie ainsi :
N'oublie pas l'Option Base 1 en tête de module
Bonne journée
essaie ainsi :
Option Base 1
Sub inverse()
Dim a, b
Dim I As Long, J As Byte
a = Application.Transpose(Range("A1:W2").Value)
ReDim b(UBound(a), 2)
J = 1
For I = UBound(a) To LBound(a) Step -1
b(J, 1) = a(I, 1)
b(J, 2) = a(I, 2)
J = J + 1
Next I
Range("A3:W4").Value = Application.Transpose(b)
End Sub
N'oublie pas l'Option Base 1 en tête de module
Bonne journée
ou de position de colonnes dans un tableau xl
le code que je mets ne fonctionne que pour le premier cas évidemment