begin process at 2012 02 10 00:39:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > INVERSER L'ORDRE D'UNE COLONE DANS EXCEL

INVERSER L'ORDRE D'UNE COLONE DANS EXCEL


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :17 665

Auteur : monjal26

Ecrire un message privé
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

 Sources du même auteur

TRI AUTOMATIQUE D'UNE ZONE EXCEL DÈS QUE L'ON CHANGE UNE VAL...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture JEUX DE VERITÉ ET DE FIDELITÉ par billatosco
Source avec Zip IMAGELOARDER par vkitumaini
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN CALENDRIER DE POCHE par Le Pivert
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
TRI AUTOMATIQUE D'UNE ZONE EXCEL DÈS QUE L'ON CHANGE UNE VAL... par monjal26
Source avec Zip Source avec une capture TRIEUR DE DOUBLONS par mortalino
Source avec Zip Source .NET (Dotnet) TRIEUSE EXCEL AVEC VB.NET par Baguauda
Source avec Zip Source avec une capture APPLICATION POUR LA GESTION DES ORDRE DE PAIEMENT FOURNISSEU... par cnia

Commentaires et avis

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

@++

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

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).

++

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

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

Commentaire de mortalino le 20/07/2007 10:36:04

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

@++

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,607 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales