Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INVERSER L'ORDRE D'UNE COLONE DANS EXCEL


Information sur la source

Catégorie :Trucs & Astuces Classé sous : excel, inverser, ordre, colone, tri Niveau : Débutant Date de création : 20/09/2006 Date de mise à jour : 20/09/2006 14:25:00 Vu : 11 272

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

bonjour
cette source permet d'inverser les éléments des cellules d'une colone sur excel.

exemple : cell1:salut cell2:oui  cell3:avec  cell4: sortie
          resultat---->>>    
          cell1:sortie
          cell2:avec
          cell3:oui
          cell4:salut

le mieux c'est de créer un bouton personalisé et de lui attribuer la macro, comme ça vous séléctionnez votre colone et vous cliquez sur votre bouton.(aller dans affichage-->barres d'outils-->personnaliser...)
 

Source

  • Sub Inverse()
  • Dim derniereCellule As Variant
  • Dim premiereCellule As Variant
  • Dim temp As Variant
  • Dim i As Integer
  • Dim numeroPremiereCellule As Variant
  • Dim numeroDerniereCellule As Variant
  • Dim difference As Integer
  • Dim valeurCellule As Variant
  • Dim coloneSelectionne As Variant
  • 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
Sub Inverse()

Dim derniereCellule As Variant
Dim premiereCellule As Variant
Dim temp As Variant
Dim i As Integer
Dim numeroPremiereCellule As Variant
Dim numeroDerniereCellule As Variant
Dim difference As Integer
Dim valeurCellule As Variant


Dim coloneSelectionne As Variant
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

Historique

20 septembre 2006 14:25:00 :
c'est un peu s'bren mais personne ne l'a fait

Commentaires et avis

signaler à un administrateur
Commentaire de mortalino le 21/09/2006 01:07:47

Salut,

1/ dans ton code, j'ai une erreur ici :

'calcule le nombre de cellules de la colone
difference = (numeroDerniereCellule(2) - numeroPremiereCellule(2) + 1)
*** l'indice n'appartient pas à la sélection.

2/ Ton code vaut (si il fonctionne) plus pour un snippet qu'une source

3/ voici le code que je te propose, plus court comme tu peux le constater :

Sub test()
    Dim PLV As Long, lCol As Long, i As Long, lCounter As Long
    Dim sDonnees() As String
    
lCol = Columns.Column
PLV = Columns(lCol).Find("", Cells(1, lCol), , , xlByRows, xlNext).Row - 1
lCounter = 0
        ReDim sDonnees(PLV - 1)

    For i = PLV To 1 Step -1
        sDonnees(lCounter) = Cells(i, lCol).Value
        lCounter = lCounter + 1
    Next i
    For i = 1 To PLV
        Cells(i, lCol).Value = sDonnees(i - 1)
    Next i
End Sub

@++

signaler à un administrateur
Commentaire de monjal26 le 21/09/2006 16:59:30

salut mortalino,
j'ai bien retesté mon code en faisant un copier coller et ça marche.
par contre le tien il inverse seulement la première colone et pas la colone seléctionée. Donc je sais pas tiens moi au courant.
tchou

signaler à un administrateur
Commentaire de mortalino le 22/09/2006 16:27:10

Voici la correction de mon code :

Sub test()
    Dim PLV As Long, lCol As Long, i As Long, lCounter As Long
    Dim sDonnees() As String
    
lCol = Selection.Column  ' ** remplacer Columns par Selection
PLV = Columns(lCol).Find("", Cells(1, lCol), , , xlByRows, xlNext).Row - 1
lCounter = 0
        ReDim sDonnees(PLV - 1)

    For i = PLV To 1 Step -1
        sDonnees(lCounter) = Cells(i, lCol).Value
        lCounter = lCounter + 1
    Next i
    For i = 1 To PLV
        Cells(i, lCol).Value = sDonnees(i - 1)
    Next i
End Sub

Par contre j'ai toujours l'erreur sur la même ligne de ton code, dès que j'aurai un peu de temps, je verrai pour te la corriger.
(peut-être ce soir).

++

signaler à un administrateur
Commentaire de musbenm le 25/09/2006 16:57:17

Bonjour tout le monde!

Personnellement, je n'est pas testé vos 2 codes mais je vous propose le mien qui permet d'inverser le contenu de toutes les colonnes d'une sélection? Je l'utilise souvent et je voudrais le partager avec vous. Notez que j'ai commenté toutes les lignes pour expliquer leur rôle.

Biensûr vos commentaires et questions sont les bienvenus.

Voici le code :


Option Base 1                                           ' On précise que les indices des tableaux commencent à partir de 1!
Option Explicit                                         ' Toutes les variables doivent être déclarées avant d'être utilisées!

Sub InverteCellsInColumn()
    Application.ScreenUpdating = False                  ' On désactive l'actualisation de l'affichage pour aller plus vite!
    
    Dim MyData() As Variant                             ' Tableau pour contenir la sélection
    Dim tampon As Variant                               ' Variable tampon
    
    Dim nbLignes As Long, nbColonnes As Long            ' Nombre de lignes et de colonnes dans la sélection
    
    Dim i As Long, j As Long
    
    On Error Resume Next                                ' Permet d'éviter les boîtes de dialogues de VBA en cas d'erreur
    
    nbLignes = Selection.Rows.Count                     ' On récupère le nombre de lignes dans la sélection
    nbColonnes = Selection.Columns.Count                ' On récupère le nombre de colonnes dans la sélection
    
    ReDim MyData(nbLignes, nbColonnes)                  ' On donne les bonnes dimensions à notre tableau de données
    
    MyData = Selection.Value                            ' On transfert les données sélectionnées vers le tableau
    
    For i = 1 To Fix(nbLignes / 2)                      ' On parcourt la moitié superieure de la sélection ligne par ligne
        For j = 1 To nbColonnes                         ' On boucle sur les colonnes
            tampon = MyData(i, j)                       ' On permute
            MyData(i, j) = MyData(nbLignes - i + 1, j)  ' de part et d'autre
            MyData(nbLignes - i + 1, j) = tampon        ' du centre (pivot) de la sélection
        Next j
    Next i
    
    Selection.Value = MyData                            ' On transfert le contenu du tableau vers la sélection
    Application.ScreenUpdating = True                   ' On remet l'affichage en place!
End Sub

signaler à un administrateur
Commentaire de butagaz le 20/07/2007 10:31:46

Bonjour à tous.
J'ai essayé vos trois codes.
Pour ma part les 3 fonctionnent très bien dans ce que je cherchais à faire.
Merci à vous 3.

J'ai gardé le code de mortalino car c'est celui qui met le moins de temps (c'est presque invisible la différence, mais quand même un chouilla).
Merci à lui.

Bonne journée à tous

signaler à un administrateur
Commentaire de mortalino le 20/07/2007 10:36:04

De rien Butagaz
(j'aime bien ton pseudo) :D

@++

signaler à un administrateur
Commentaire de barockeuse le 25/03/2009 17:44:23

Mais sous excel, il y a plus simple !

Ajouter une colonne à dte ou à gauche du tableau à inverser.
Dans cette colonne, numéroter de 1 à 0 (en tirant avec Ctrl sur le coin inf droit de la cellule où on a marqué 1.

Sélectionner tout le tableau y compris la colonne de numérotation.

Données .. trier .. donner la lettre de cette colonne comme critère de tri et choisir ordre inverse.

Voilà, ya plus qu'à effacer la colonne de numérotation.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Tri sous Excel [ par {cabal} ] BonjourPourriez vous m'aider à trier des données sous Excel à partir de VBMerci d'avance Comment faire un tri alphabetique d'une liste de nom? [ par Cerber ] Je desire trier une liste de nom par ordre alphabetique.Le programme prend pour l'instant des données dans une page excel et crée une page html ou il visuailier et modifier le contenue d 'une colone de fichiers sur Excel [ par gripho ] salut, voila mon probleme je voudrais savoir comment faire pour visualiser (dans une listes deroulante ) et modifier ou ajouter des informations dans Tri classeur excel 97 [ par gege ] Bonjour,Quelqu'un pourrai t-il me dire comment faire pour trier les feuilles d'un classeur Excel contenant une soixantaine de feuilles. Tri Alpha. (p Tri par ordre alphabétique d'un tableau [ par sankukai ] Bonjour à tous,Soit un tableau tout bete declare comme suit :Dim tableau() as StringJe le rempli avec des valeurs, et je voudrais ensuite trier les v vba excel combobox tri et élimination des doublons [ par alex1512 ] Bonjour,Je souhaiterais mettre les éléments d'une colonne d'une feuille excel dans une combobox sous vba(jusque la pas de problème) mais je souhaitera de l'aide svp avec excel, vba et du tri [ par alex1512 ] Voila je souhaite faire un menu déroulant dans un formulaire fait sous vba, jusqu'ici ca va mais il faudrait prendre les infos sur une colonne de ma f tri sur cellules Excel avec VBA [ par thierrypp ] THIERRYPPBonjour,Comment procéder automatiquent à une élimination de cellule dans une colonne lorsque celle-ci à une valeur supérieure à 10% de la pr tri sur cellules Excel avec VBA [ par thierrypp ] THIERRYPPBonjour,Comment procéder automatiquent à une élimination de cellule dans une colonne lorsque celle-ci à une valeur supérieure à 10% de la pr tri sur cellules Excel avec VBA [ par thierrypp ] THIERRYPPBonjour,Comment procéder automatiquent à une élimination de cellule dans une colonne lorsque celle-ci à une valeur supérieure à 10% de la pr


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,796 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.