Inversion colonnes ligne vba

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!

7 réponses

  1. 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
    1. En relisant, je me demande ...si tu parles de position de mot dans une phrase
      ou de position de colonnes dans un tableau xl
      le code que je mets ne fonctionne que pour le premier cas évidemment
  2. 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.
    1. 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 ^^
      1. Bonjour,

        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
        1. 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
          1. Re-,

            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
            1. Salut,

              Mes tests ont été concluants ,je te remercie.

              Bonne journée