AutoFilter par ordre alphabétique

apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014 - 25 juil. 2007 à 09:58
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014 - 25 juil. 2007 à 13:00
Bonjour,

J'aurais aimé savoir s'il était possible de trier une colonne d'excel par ordre alphabétique en utilisant autofilter? Si oui comme faut il s'y prendre? J'utilise VB .NET

Merci

30 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 10:06
Pour trier la deuxième colonne, par exemple :

Cells(,2).SortSpecial xlPinYin

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 10:11
ça n'as pas l'air de marcher... tu es sûr que t'as solution marche avec du VB .NET?
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 10:16
Dans Visual basic 2005 il me propose ceci .SortSpecial(

Global.Excel.XlSortMethod.xlPinYin)

Mais je sais pas quoi mettre avant pour que ça marche... avec cells ça ne fonctionne pas
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 10:16
Faut peut etre adapter très légèrement, j'ai fais mon tests sous Excel (donc VBA)
mais l'objet COM utilisé derrière est le même, donc...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 10:16
tu mets la Range que tu veux, l'explorateur d'objets est ton ami...
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 10:21
Malheureusement ça ne fonctionne pas non plus avec range je dois faire quelquechose de faux....

J'ai essayé

Range("B3", "B100").SortSpecial(Global.Excel.XlSortMethod.xlPinYin)
et
Range("B").SortSpecial(
Global.Excel.XlSortMethod.xlPinYin)

et
Range("B3")SortSpecial(
Global.Excel.XlSortMethod.xlPinYin)

Rien à faire
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 10:26
au fait, ca veux dire quoi "ne fonctionne pas" ?

- pas de tri
- message erreur
- compilation impossible


xlPinYin est la valeur par defaut du parametre SortMethod,
ActiveSheet.Cells(,2).SortSpecial

suffit donc

-------------
Range("B")
"B" ne décrit pas une cellule, impossible d'utiliser cette syntaxe

Range("B3")SortSpecial
sans point, ca ne peut fonctionner, c'est sur
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 10:33
Hum pour le point c'est une erreur de copie dans mon code j'ai mis le point....

Par contre j'ai essayé

ws.Cells(, 2).SortSpecial(

Global.Excel.XlSortMethod.xlPinYin)

Et ça me marque juste "Cette opération requiert que les cellules fusionnées soient de taille identique." Donc c'est plus qu'un problème de fusion mais je suis pas sûr que ça marche après...

parceque si je tape ws.Cells(,2). il ne me propose pas la suite et en général ça ne fonctionne pas si ça ne le propose pas.

Sinon avec mon premier teste avec Range, il me donne comme message "Référence non valide."
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 10:56
si tu ne spécifie pas ta feuille, c'est sur qu'il ne risquait pas de faire grand chose :p
Excel connait son classeur, il partait sur mon poste de la feuille active...

"si je tape ws.Cells(,2). il ne me propose pas la suite "
=> normal, l'explorateur d'objets, que tu n'utilise décidement pas, nous indique que .Cells renvoie une variable de type Variant...

donc pas d'intellisense.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 juil. 2007 à 11:00
Bonjour,

Le problème ici (et c'est assez fréquent) est que ce n'est pas la syntaxe de VB.Net qui est concernée, mais celle du pilotage d'Excel (et ce pilotage fait lui appel à une syntaxe de VBA)... pas de VB.Net !!!)
J'ai souvent eu envie de proposer que l'on ne mette dans la section VB6 ou dans la section VB.Net (selon le cas) que les questions relatives aux mécanismes purs de pilotage et que l'on "poste" par contre  dans la section VBA les questions relatives à l'utilisation de la syntaxe VBA , qu'il y ait ou non pilotage par VB6 ou par VB.Net.
Je ne l'ai pas proposé parce que je vois bien les difficultés déjà connues par certains à déterminer même s'ils développent dans un langage ou dans l'autre.

Prenons l'exemple présent et on comprendra parfaitement ce que j'exprime ici :
le problème d'apache88 aurait (n'est-ce-pas ?) été exactement le même si, au lieu de "piloter", il se trouvait directement sous le VBA d'Excel. Voilà pourquoi il eût été plus logique d'ouvrir une discussion dans la section VBA pui, connaissant la réponse VBA, d'aller l'inclure dans son "pilotage" depuis VB.Net.

Suis-je insensé ?
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 11:01
J'ai spécifié ma feuille


ws = wb.Worksheets(1)

Si je te comprend bien.
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 11:03
Désolé pour la taille du texte... a chaque fois que je colle un code ça me modifie et j'oublie de changer...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 11:04
bien d'accord avec toi, jmfmarques.

oui, tu spécifie maintenant ta feuille,
mais tu ne l'avait pas fait au départ.
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 11:13
Je l'avais spécifié deja depuis le début mais j'aurais du te donner tout mon code peut etre
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 11:13
Le voici:

Imports System.Reflection

Imports System.DirectoryServices

Module Module1

Sub Main()

'Dim User = InputBox("Veuillez entrer le nom d'utilisateur")

'Dim Password = InputBox("Veuillez entrer le mot de passe du compte " + User)

Dim Ldap
As DirectoryEntry =
New DirectoryEntry(
[ldap://nomduserveur/ LDAP://nomduserveur],
"username",
"password")

Dim searcher
As DirectorySearcher =
New DirectorySearcher(Ldap)

Dim DirEntry
As DirectoryEntry

Dim excel
As
New Excel.Application

Dim wb
As Excel.Workbook

Dim ws
As Excel.Worksheet

Dim Li
As
Longsearcher.Filter =

"(objectClass=user)"
excel.Visible =
True
'la fenêtre excel est visible
wb = excel.Workbooks.Add(1)
'on ouvre un classeur dans excel
ws = wb.Worksheets(1)
'on ouvre une feuille dans le classeur excel  

Li = 4

For
Each result
As SearchResult
In searcher.FindAll 

' On récupère l'entrée trouvée lors de la rechercheDirEntry = result.GetDirectoryEntry

Dim a = DirEntry.Properties(
"name").Value

Dim b = DirEntry.Properties(
"TelephoneNumber").Value

Dim c = DirEntry.Properties(
"Description").Value

ws.Range(

"A1").Font.Bold =
True
ws.Range(
"A1").Font.Size = 10
ws.Range(
"A1").Value =
"Blabla"
ws.Range(
"A1").Font.OutlineFont =
True
ws.Range(
"A1",
"G1").MergeCells =
True
ws.Range(
"A1",
"G1").Borders.LineStyle = 12
ws.Range(
"A2").Value =
"Tél. direct : 058 851 .. .."
ws.Range(
"A2",
"G2").MergeCells =
True
ws.Range(
"A2",
"G2").HorizontalAlignment =
Truews.Range(

"B3").Value =
"Nom et Prénom"
ws.Range(
"B3").Font.Bold =
True
ws.Range(
"B3",
"C3").MergeCells =
Truews.Range(

"B3",
"C3").Borders.LineStyle = 1
ws.Range(
"D3").Value =
"Visa"
ws.Range(
"D3").Font.Bold =
True
ws.Range(
"D3").Borders.LineStyle = 1ws.Range(

"E3").Value =
"Téléphone"
ws.Range(
"E3").Font.Bold =
True
ws.Range(
"E3",
"F3").MergeCells =
True
ws.Range(
"E3",
"F3").Borders.LineStyle = 1

If c =
"Vifor"
Thenws.Range(

"B" & Li).Value = a
ws.Range(
"B" & Li,
"C" & Li).MergeCells =
True
ws.Range(
"B" & Li,
"C" & Li).Borders.LineStyle = 1

ws.Range(
"D" & Li).Value = d
ws.Range(
"D" & Li).Borders.LineStyle = 1

ws.Range(
"E" & (Li)).Value = b
ws.Range(
"E" & (Li),
"F" & (Li)).MergeCells =
True
ws.Range(
"E" & Li,
"F" & Li).Borders.LineStyle = 1

Li = Li + 1

Elsews.Cells(, 2).SortSpecial(

Global.Excel.XlSortMethod.xlPinYin)

End
If

Nextws.Cells(, 2).SortSpecial(

Global.Excel.XlSortMethod.xlPinYin)wb.SaveAs(
"C:\Documents and Settings\tanner\Desktop\liste_contact.xls")

End
SubEnd

Module
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 juil. 2007 à 11:16
le tri fonctionne t'il maintenant ?
(pas le temps de desosser le code des fusion ^^)
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 11:16
y a juste un problème de mise en page à la fin... le ws.cells.... et le wb.saveas ne sont pas lié comme ça... il y a un retour a la ligne
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 11:17
Non il me marque qu'il toujours le message d'erreur "Cette opération requiert que les cellules fusionnées soient de taille identique." Je suis en train de chercher la solution la
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 11:20
Arf je suis bête j'ai mis 2 ws.cells... a deux endroit différent.... celui dans le if est faux je vais tester sans
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
25 juil. 2007 à 11:29
HUm j'ai toujours le même problème...

c'est Ws.cells(ligne, colonne)

ou Ws.cells(colonne, ligne)

Ou encore autre chose? car moi je voudrais trier la deuxieme colonne mais seulement à partir de la 3ème ligne...
0
Rejoignez-nous