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 !

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


Information sur la source

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 : 12 661

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Commentaires et avis

signaler à un administrateur
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...

++

signaler à un administrateur
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.

@+

signaler à un administrateur
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

@++

signaler à un administrateur
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 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 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 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


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


HTC G1

Entre 449€ et 449€


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 : 5,476 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é.