Tri d'un fichier avec une macro excel
Résolu/Fermé
Lionel_86
Messages postés
43
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
30 novembre 2008
-
27 févr. 2007 à 10:16
Utilisateur anonyme - 28 févr. 2007 à 15:44
Utilisateur anonyme - 28 févr. 2007 à 15:44
A voir également:
- Tri d'un fichier avec une macro excel
- Fichier rar - Guide
- Liste déroulante excel - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
4 réponses
Utilisateur anonyme
27 févr. 2007 à 14:12
27 févr. 2007 à 14:12
Bonjour,
Oui, sans aucun doute tout est relativement possible avec VBA d'excel.
Quel type de fichier désirez vous trier ?
Lupin
Oui, sans aucun doute tout est relativement possible avec VBA d'excel.
Quel type de fichier désirez vous trier ?
Lupin
Utilisateur anonyme
28 févr. 2007 à 01:11
28 févr. 2007 à 01:11
Bonjour,
Alors voici un exemple simple que vous devrez adapter à vos besoin.
Alors voici un exemple simple que vous devrez adapter à vos besoin.
Option Explicit ' Dim Limite As Double ' Sub EcrireFichierTexte() Dim NumFic As Integer Dim Valeur As String Dim Boucle As Integer Valeur = "C:\Essai.txt" NumFic = FreeFile Open Valeur For Output As #NumFic For Boucle = 9 To 1 Step -1 Write #NumFic, Boucle Next Boucle Close #NumFic End Sub ' Sub LireFichierTexte() Dim NumFic As Integer, Message As String Dim Valeur As String, Resultat As Integer Dim Compteur As Double Dim Boite() As Integer Valeur = "C:\Essai.txt" NumFic = FreeFile Limite = 0 ' Premier passage, connaître le nombre d'élément à lire Open Valeur For Input As #NumFic While Not EOF(NumFic) Input #NumFic, Resultat Limite = (Limite + 1) Wend Close #NumFic 'Second passage, effectuer la lecture ReDim Boite(Limite) As Integer Compteur = 0 Open Valeur For Input As #NumFic While Not EOF(NumFic) Input #NumFic, Resultat Boite(Compteur) = Resultat Compteur = (Compteur + 1) Wend Close #NumFic Trier Boite, Message MsgBox Message End Sub ' Function Trier(ByRef Boite() As Integer, ByRef Message As String) Dim Boucle As Integer, ValeurTmp As Integer, Compteur As Integer For Boucle = 0 To (Limite - 1) For Compteur = 0 To (Limite - 1) If (Boite(Compteur) > Boite(Compteur + 1)) Then ValeurTmp = Boite(Compteur + 1) Boite(Compteur + 1) = Boite(Compteur) Boite(Compteur) = ValeurTmp End If Next Compteur Next Boucle For Boucle = 0 To Limite Message = Message & Boite(Boucle) & vbCrLf Next Boucle End Function '
Lionel_86
Messages postés
43
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
30 novembre 2008
6
28 févr. 2007 à 09:03
28 févr. 2007 à 09:03
Merci pour l'exemple.
Je viens de tester cet exemple.
Le tri n'est pas physique dans le fichier.
Y a t'il une possibilité que le fichier soit physiquement trié ?
Car pour mon cas, je fais une création par un userform excel (listbox) et je souhaiterais que le fichier soit trié dans un ordre donné.
Exemple dans ma listbox j'ai :
Poitiers 01 à 10 - 10
Limoges 11 à 15 - 05
Montmorillon 16 à 20 - 05
Paris 21 à 21 - 01
Marseille 22 à 24 - 03
Rennes 25 à 30 - 06
Je créé ces enregistrements dans un fichier format TXT, et je souhaiterais qu'il trie dans ce fichier en décroissant sur le dernier nombre (celui après le -).
La seule solution que j'ai trouvé c'est de saisir les informations dans l'ordre dont je les voulais dans mon fichier.
Si vous avez une autre solution, je serais ravis de la connaitre.
Dans tous les cas merci encore pour l'exemple, il va me donner des possibiltés pour d'autres applications.
Lionel
Je viens de tester cet exemple.
Le tri n'est pas physique dans le fichier.
Y a t'il une possibilité que le fichier soit physiquement trié ?
Car pour mon cas, je fais une création par un userform excel (listbox) et je souhaiterais que le fichier soit trié dans un ordre donné.
Exemple dans ma listbox j'ai :
Poitiers 01 à 10 - 10
Limoges 11 à 15 - 05
Montmorillon 16 à 20 - 05
Paris 21 à 21 - 01
Marseille 22 à 24 - 03
Rennes 25 à 30 - 06
Je créé ces enregistrements dans un fichier format TXT, et je souhaiterais qu'il trie dans ce fichier en décroissant sur le dernier nombre (celui après le -).
La seule solution que j'ai trouvé c'est de saisir les informations dans l'ordre dont je les voulais dans mon fichier.
Si vous avez une autre solution, je serais ravis de la connaitre.
Dans tous les cas merci encore pour l'exemple, il va me donner des possibiltés pour d'autres applications.
Lionel
Utilisateur anonyme
28 févr. 2007 à 13:24
28 févr. 2007 à 13:24
Bonjour,
Un fois trier vous n'avez qu'a reconstruire le fichier :
Lupin
Un fois trier vous n'avez qu'a reconstruire le fichier :
... Trier Boite, Message MsgBox Message Open Valeur For Output As #NumFic For Boucle = 0 To (Limite-1) Write #NumFic, Boite(Boucle) Next Boucle Close #NumFic Ens Sub
Lupin
Lionel_86
Messages postés
43
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
30 novembre 2008
6
28 févr. 2007 à 13:57
28 févr. 2007 à 13:57
Merci
La solution est si simple.
La solution est si simple.
Utilisateur anonyme
28 févr. 2007 à 15:44
28 févr. 2007 à 15:44
re:
c'est toujours un plaisirs lorsque apprécié par le demandeur.
notez bien que ce n'est qu'une suggestion, il y a beaucoup d'autre
façon de procéder. Pour ma part j'ai l'habitude de décomposer
toutes les étapes pour mieux gérer les changements.
@+
Lupin
c'est toujours un plaisirs lorsque apprécié par le demandeur.
notez bien que ce n'est qu'une suggestion, il y a beaucoup d'autre
façon de procéder. Pour ma part j'ai l'habitude de décomposer
toutes les étapes pour mieux gérer les changements.
diviser pour régner !
@+
Lupin
27 févr. 2007 à 16:02
Un fichier de type TXT.
Lionel