Inverser un tableau

Bonjour,

Je voudrais copier le tableau 1 comme dans le 2 avec un code VBA dans le 3,

Et sans utilisé la fonction tri

Merci de votre réponse

Cordialement.

21essai.xlsm (9.61 Ko)

Bonjour,

Voici :

Sub InverserTableau()
Dim Tb(), result()
    Tb = Range("B2:D8").Value
    result = Inverse(Tb)
    Range("J2:L8").Value = result
End Sub

Function Inverse(Tbl()) As Variant()
Dim i As Long, j As Long
    ReDim temp(LBound(Tbl, 1) To UBound(Tbl, 1), LBound(Tbl, 2) To UBound(Tbl, 2))
    For i = LBound(Tbl, 1) To UBound(Tbl, 1)
        For j = LBound(Tbl, 2) To UBound(Tbl, 2)
            temp(UBound(Tbl, 1) - i + LBound(Tbl, 1), j) = Tbl(i, j)
        Next
    Next
    Inverse = temp
End Function

merci de la réponse, mais ça fonctionne pas comme je veux

je me suis mal expliqué, car je veux sélectionner tout le tableau et non les cellules concernées,

les lignes vides doivent se retrouver en dessous j'ai agrandi le code et voyer ce que cela donne

Sub InverserTableau()
Dim Tb(), result()
    Tb = Range("B2:D15").Value
    result = Inverse(Tb)
    Range("J2:L15").Value = result
End Sub

Function Inverse(Tbl()) As Variant()
Dim i As Long, j As Long
    ReDim temp(LBound(Tbl, 1) To UBound(Tbl, 1), LBound(Tbl, 2) To UBound(Tbl, 2))
    For i = LBound(Tbl, 1) To UBound(Tbl, 1)
        For j = LBound(Tbl, 2) To UBound(Tbl, 2)
            temp(UBound(Tbl, 1) - i + LBound(Tbl, 1), j) = Tbl(i, j)
        Next
    Next
    Inverse = temp
End Function
10essai.xlsm (15.42 Ko)

Bonsoir,

si je peux, en modifiant le code de pijaku :

Sub InverserTableau()
Dim Tb(), result()
    For i = 2 To 15
        If Range("B" & i).Value <> "" Then nbligne = nbligne + 1
    Next i
    Tb = Range("B2:D" & nbligne + 1).Value
    result = Inverse(Tb)
    Range("J2").Resize(nbligne, 3) = result
End Sub

Function Inverse(Tbl()) As Variant()
Dim i As Long, j As Long
    ReDim temp(LBound(Tbl, 1) To UBound(Tbl, 1), LBound(Tbl, 2) To UBound(Tbl, 2))
    For i = LBound(Tbl, 1) To UBound(Tbl, 1)
        For j = LBound(Tbl, 2) To UBound(Tbl, 2)
            temp(UBound(Tbl, 1) - i + LBound(Tbl, 1), j) = Tbl(i, j)
        Next
    Next
    Inverse = temp
End Function

Peut-être y a t il plus rapide, comme utiliser UsedRange pour déterminer le nombre de ligne "utiles" du premier tableau, ou bien utiliser des tableaux structurés qui s'adaptent à la taille des données.

@ bientôt

LouReeD

désolé mais ça fonctionne toujours pas, si je rajoute un nom la macro ne fonctionne pas

merci quand même !

je reposte le fichier

5essai.xlsm (22.29 Ko)

Vous avez ajouté un nom en deuxième colonne, hors le test de ligne "pleine" est fait sur la première...
Changez le "B" de : If Range("B" & i).Value <> "" Then nbligne = nbligne + 1 par la lettre de colonne adéquate pour faire le test de ligne pleine, dans votre fichier envoyé la colonne C : If Range("C" & i).Value <> "" Then nbligne = nbligne + 1

@ bientôt

LouReeD

oui ça fonctionne sur les petits tableaux

45essai-3.xlsm (123.82 Ko)

vous pouvez me faire ça sur le grand tableau qui lui ressemble à mon fichier d'origine

j'ai mit 2 fichiers côte à côte, mais ce qui m'intéresse c'est d' inverser sur le même tableau en prenant en compte le tableau entier

si je me fait bien comprendre

Rechercher des sujets similaires à "inverser tableau"