begin process at 2012 02 12 15:09:41
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Classé sous :tri, automatique, excel Niveau :Débutant Date de création :27/10/2006 Date de mise à jour :22/03/2007 15:51:21 Vu :19 411

Auteur : monjal26

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Bonjour,
ce code permet d'effectuer un tri automatique dès que l'on modifie une valeur de la colone à trier.

Il suffit de mettre ce code dans la feuille et de renseigner les trois valeurs.
Cellule du début de la colone de tri.
Nombre de colones à prendre après la colone à trier.
Nombre de colones à prendre avant la colone à trier.

Je m'en suis servi pour garder les 25 meilleurs années pour le calcule de la retraite.

Source

  • Private Sub Worksheet_Change(ByVal Target As Range)
  • Dim i As Integer 'indice de parcours de toutes les valeurs du trie
  • Dim temp As String '
  • Dim cell As Variant
  • Dim lettreCellule As String
  • Dim lettreColone As String
  • Dim nbColonesApres As Integer
  • Dim nbColonesAvant As Integer
  • Dim derCellule As String
  • Dim premCellule As String
  • '''''''''''''''''''''''''''''''''''''à modifier'''''''''''''''''''''''
  • '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  • 'cellule du début du trie
  • cell = "D2"
  • 'nombre de colone apres la cellule pour le tri
  • nbColonesApres = 3
  • 'nombre de colone avant la cellule pour le tri
  • nbColonesAvant = 3
  • '''''''''''''''''''''''''''''''fin modification'''''''''''''''''''''''''''''''
  • 'colone où l'on effectue le trie
  • lettreColone = Mid(cell, 1, 1)
  • 'adresse de la cellule modifiée
  • temp = ActiveCell.Address
  • 'on récupere la lettre de la cellule modifiée
  • lettreCellule = Mid(temp, 2, 1)
  • 'on regarde si l'on a modifié une valeur
  • 'de notre colone où on veut effectuer le tri.
  • If lettreCellule = lettreColone Then
  • 'on compte le nombre de cellules jusqu'à ce que l'on en trouve une vide
  • Range(cell).Select
  • i = 0
  • While ActiveCell.Offset(i, 0).Text <> ""
  • i = i + 1
  • Wend
  • 'on selection toute la zone
  • premCellule = Range(cell).Offset(0, -nbColonesAvant).Address
  • derCellule = Range(cell).Offset(i - 1, nbColonesApres).Address
  • Range(premCellule & ":" & derCellule).Select
  • 'on trie notre séléction
  • Selection.Sort Key1:=Range(cell), Order1:=xlAscending, Header:=xlNo, _
  • OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  • End If
  • End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim i As Integer 'indice de parcours de toutes les valeurs du trie
 Dim temp As String '
 Dim cell As Variant
 Dim lettreCellule As String
 Dim lettreColone As String
Dim nbColonesApres As Integer
Dim nbColonesAvant As Integer
Dim derCellule As String
Dim premCellule As String
  '''''''''''''''''''''''''''''''''''''à modifier'''''''''''''''''''''''
  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  'cellule du début du trie
  cell = "D2"
  'nombre de colone apres la cellule pour le tri
  nbColonesApres = 3
   'nombre de colone avant la cellule pour le tri
  nbColonesAvant = 3
'''''''''''''''''''''''''''''''fin modification'''''''''''''''''''''''''''''''

 'colone où l'on effectue le trie
lettreColone = Mid(cell, 1, 1)
 
 'adresse de la cellule modifiée
 temp = ActiveCell.Address

'on récupere la lettre de la cellule modifiée
 lettreCellule = Mid(temp, 2, 1)
 
 'on regarde si l'on a modifié une valeur
 'de notre colone où on veut effectuer le tri.
 If lettreCellule = lettreColone Then
 
    'on compte le nombre de cellules jusqu'à ce que l'on en trouve une vide
    Range(cell).Select
    i = 0
    While ActiveCell.Offset(i, 0).Text <> ""
        i = i + 1
    Wend
 
 'on selection toute la zone
 premCellule = Range(cell).Offset(0, -nbColonesAvant).Address
 derCellule = Range(cell).Offset(i - 1, nbColonesApres).Address
 Range(premCellule & ":" & derCellule).Select
    
    
    'on trie notre séléction
   Selection.Sort Key1:=Range(cell), Order1:=xlAscending, Header:=xlNo, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

   
End If
End Sub

 Conclusion

Attention il faut qu'il y ait une cellule vide sous la dernière valeur de la colone à trier.


 Historique

22 mars 2007 15:51:22 :
prend vraiment la premiere ligne

 Sources du même auteur

INVERSER L'ORDRE D'UNE COLONE DANS EXCEL

 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
Source avec Zip Source avec une capture MANIPULER LES FENETRES ENFANT D'EXCEL par bigfish_le vrai
INVERSER L'ORDRE D'UNE COLONE DANS EXCEL 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

Commentaires et avis

Commentaire de mortalino le 27/10/2006 14:38:06

Salut,

code inutile, ce n'est pas vraiment une source....

De plus, ta boucle
    While ActiveCell.Offset(i, 0).Text <> ""
        i = i + 1
    Wend
bouffe des resources pour rien :
il faut préférer :
DerLigne = Sheets(N°).Column(N°).Find("", [B65536], , , xlByRows, xlNext).Row - 1

Tout ton code est perfectible et là ça calcul même quand la mauvaise colonne est sélectionnée (perd du temps et des ressources).

Bref, t'as encore des choses à travailler...

++

Commentaire de bpm12 le 28/10/2006 14:09:05

Mortalino,

As-tu pris le temps de vérifier ta proposition ?

Si elle fonctionne, dis nous comment?

En premier, ce n'est pas Column mais Columns (une faute de synthaxe est toujours excusable),
Mais ensuite, tu as nothing en retour à un Find avec argument "" pour valeur recherchée.

@+

Commentaire de mortalino le 28/10/2006 14:51:50

Salut BPM12,

beh en fait son but dans sa boucle c'est de rechercher la première cellule vide.

Concernant ma fonction, DerLigne sera égale à la dernière ligne utilisée car la fonction Find recherche "", donc rien, donc cellule vide.
Tout ceci à partir de B65536 et en remontant.
Sachant que j'ai mis moins 1 à la fin, le résultat sera donc la dernière ligne utilisée.

Tu dis "Mais ensuite, tu as nothing en retour à un Find avec argument "" pour valeur recherchée"
>> beh non, si dans la colonne B, il n'y a aucune valeur, tu auras une erreur, facilement gérable, sinon, tu auras bien la derniere ligne utilisée.
Je t'invite à faire le test, place qques données dans la colonne B, et place même des cellules vides entre plusieurs :
    Dim DerLigne
    
DerLigne = Sheets(1).Columns(2).Find("", [B65536], , , xlByRows, xlPrevious).Row - 1

Pour le Column, oui, c'est une faute d'orthographe.

Sinon, pour l'auteur de cette source, en me relisant j'y suis allé un peu fort sur un terme "ambigüe" :
Quand je dis "code inutile, ce n'est pas vraiment une source...", il faut entendre plutôt "source inutile, ce n'est pas vraiment une source... mais plutôt un snippet".

Exemple de qques snippets que j'ai déposé (et pas en source) :
http://www.codyx.org/snippet_rechercher-ligne-vide-dans-excel_205.aspx
http://www.codyx.org/snippet_rechercher-premiere-ligne-ou-colonne-vide-partir-cellule_206.aspx

@++

Commentaire de docjfnoel le 17/05/2007 19:18:40

Bonjour,
Je suis néophite en programmation.  C'est exactement la fonction que je cherche.  Pourrait-on m'expliquer pas à pas comment la mettre dans mon tableur?
Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

excel/ afficher tri/filtre automatique [ par kamill ] Je cherche à afficher dans une cellule Excel quelconque le choix d'un tri réalisé gràce au filtre automatique.Le but est d'imprimer une sélection et d Copie automatique de données sur 2 feuilles excel [ par biddal ] Voilà bonjour j'expose on problème j'espère être au bon endroit pour cela sinon veuillez m'excuser! Je suis actuellement sur excel! J'ai au total 13 Mise à jour automatique d'un onglet EXCEL [ par P19 ] Bonjour, Je recherche un code VBA me permettant la mise à jour automatique d'un onglet de classeur, à partir du moment ou l'on met à jour une cellule Tri automatique [ par Citrusmecanica ] Bonjour, Comment modifier le code ci-dessous pour que, une fois le tri automatique effectué, la cellule active revienne automatiquement en colonne A. 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 du contenu d'une feuille EXCEL [ par tom42 ] Comment trié le contenu d'un feuille ExcelExemple :les rangées 1 à 10 suivant le contenu de la colonne "B"Merci Extraction de données vers Excel, tri, puis réinjection... [ par Chauve ] Bonjour, je suis débutant en VB et j'ai un problème assez costaud (pour mon niveau) à résoudre. J'ai un fichier Excel dans lequel se trouve, en vrac, Tri Excel ??? [ par Denis ] Comment trier une feuille avec ses noms (de cellules)?Est-ce possible?Merci d'avance 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

 
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,950 sec (3)

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