OVH Cloud OVH Cloud

Tri d'une liste en vba

11 réponses
Avatar
Fred Moncomble
Bonjour,=20
J'ai r=E9cup=E9r=E9 et ajout=E9 quelques fonctionnalit=E9s =E0 une=20
macro Word tir=E9e de Windows News et permettant d'afficher=20
des photos sur Word. L'int=E9r=EAt =E9tant de choisir le=20
format : nbre de vignettes par page...
Mon pb : les photos sont s=E9lectionn=E9es dans un ordre=20
al=E9atoire (peut-=EAtre par ordre dans lequel elles ont =E9t=E9=20
stock=E9e sur le disque ?) et je ne sais pas comment faire=20
pour les trier, par ex par nom.
Ci-dessous une partie du code vba.
Si quelqu'un a une id=E9e...
D'avance merci.
Fred

Public vPhotos(), vPhotosNom(), vPhotosNomChemin(),=20
vNbrePhotos, NomPhoto

Sub ImpressionPhotos()
Dim vDlg As FileDialog
Set vDlg =3D Application.FileDialog(msoFileDialogFilePicker)

NomPhoto =3D Null

With vDlg
.AllowMultiSelect =3D True
.Filters.Add "Images", "*.jpg; *.jpeg", 1
.FilterIndex =3D 1
.Show
vNbrePhotos =3D .SelectedItems.Count
If vNbrePhotos =3D 0 Then
MsgBox "Vous n'avez s=E9lectionn=E9 aucune photo.",=20
vbOKOnly, "Choix des photos"
Exit Sub
End If
ReDim vPhotos(vNbrePhotos)
ReDim vPhotosNomChemin(vNbrePhotos)
ReDim vPhotosNom(vNbrePhotos)
=20
For i =3D 1 To vNbrePhotos
vPhotos(i) =3D vDlg.SelectedItems(i)

'Traitement de l'extension
NomFichier =3D vPhotos(i)
vPhotosNomChemin(i) =3D NomFichier
Ex =3D InStrRev(NomFichier, ".")
If Ex <> 0 Then NomFichier =3D Left(NomFichier, Ex - 1)

'Traitement du chemin
Total =3D Len(NomFichier)
Nom =3D InStrRev(NomFichier, "\")
If Nom <> 0 Then NomFichier =3D Right(NomFichier, Total -=20
Nom)
vPhotosNom(i) =3D NomFichier

Next
End With

FrmPresentation.Show
End Sub

10 réponses

1 2
Avatar
Geo
Bonjour Fred


Bonjour,
J'ai récupéré et ajouté quelques fonctionnalités à une
macro Word tirée de Windows News et permettant d'afficher
des photos sur Word. L'intérêt étant de choisir le
format : nbre de vignettes par page...
Mon pb : les photos sont sélectionnées dans un ordre
aléatoire (peut-être par ordre dans lequel elles ont été
stockée sur le disque ?) et je ne sais pas comment faire
pour les trier, par ex par nom.
Ci-dessous une partie du code vba.
[...]


Tes photos devraient apparaître selon l'ordre de présentation de la
liste.
C'est donc la liste qu'il faudrait trier avant de l'afficher.
peut-être que Guy aura une idée ?

--

A+

Avatar
Fred Moncomble
Bonjour Geo,
Je te confirme :
la liste est triée sur le nom et le choix ne se fait pas
sur le nom.
Merci
Fred

-----Message d'origine-----
Bonjour Fred


Bonjour,
J'ai récupéré et ajouté quelques fonctionnalités à une
macro Word tirée de Windows News et permettant
d'afficher


des photos sur Word. L'intérêt étant de choisir le
format : nbre de vignettes par page...
Mon pb : les photos sont sélectionnées dans un ordre
aléatoire (peut-être par ordre dans lequel elles ont
été


stockée sur le disque ?) et je ne sais pas comment
faire


pour les trier, par ex par nom.
Ci-dessous une partie du code vba.
[...]


Tes photos devraient apparaître selon l'ordre de
présentation de la

liste.
C'est donc la liste qu'il faudrait trier avant de
l'afficher.

peut-être que Guy aura une idée ?

--

A+

.




Avatar
Geo
Bonjour Fred Moncomble


Bonjour Geo,
Je te confirme :
la liste est triée sur le nom et le choix ne se fait pas
sur le nom.
Merci
Fred



Ce serait la propriété FilterIndex qui provoquerait l'affichage trié.
Ce serait intéressant de vérifier avec la valeur 0.
(j'ai une version trop ancienne)
Une piste serait de trier après coup vPhotos.
Il faut donc saucissonner le for en trois for,
l'un pour récupérer les noms non triés
l'autre pour trier
le troisième pour extraire les noms des fichiers.
Ca ne marche que si le chemin est le même pour toutes les photos.
Dans le cas contraire ça complique un peu plus, mais tout ça dépend de
la manière dont sont programmées les Userforms.

--

A+

Avatar
J'ai essayé de changer à 0 sans changement.
Pour ce qui est du saucissonage des for, je ne suis pas
assez "fort". Donc je chercherai peut-être une autre idée.
En tout cas, merci pour tes conseils.
Fred

-----Message d'origine-----
Bonjour Fred Moncomble


Bonjour Geo,
Je te confirme :
la liste est triée sur le nom et le choix ne se fait
pas


sur le nom.
Merci
Fred



Ce serait la propriété FilterIndex qui provoquerait
l'affichage trié.

Ce serait intéressant de vérifier avec la valeur 0.
(j'ai une version trop ancienne)
Une piste serait de trier après coup vPhotos.
Il faut donc saucissonner le for en trois for,
l'un pour récupérer les noms non triés
l'autre pour trier
le troisième pour extraire les noms des fichiers.
Ca ne marche que si le chemin est le même pour toutes
les photos.

Dans le cas contraire ça complique un peu plus, mais
tout ça dépend de

la manière dont sont programmées les Userforms.

--

A+

.




Avatar
Geo
Bonjour Fred


J'ai essayé de changer à 0 sans changement.


L'affichage de la liste se fait toujours par ordre alphabétique ?
Sur les anciens systèmes il y avait des utilistaires pour trier les
répertoires des disques, ça se trouve peut-être encore?

Pour ce qui est du saucissonage des for, je ne suis pas
assez "fort".


On doit pouvoir tenter un truc du genre :

For i = 1 To vNbrePhotos
vPhotos(i) = vDlg.SelectedItems(i)
next
WordBasic.SortArray vPhotos

For i = 1 To vNbrePhotos
'Traitement de l'extension
NomFichier = vPhotos(i)
etc

Avatar
Fred
Pour ce qui est du tri dans les rep, on peut le faire
(directement dans Word à l'ouverture de la boîte de
sélection. L'ordre change visuellement mais ne varie pas
au final.
Merci pour toutes ces propositions. Un jour peut-être,
pris d'une illumination je trouverai.
Fred

-----Message d'origine-----
Bonjour Fred


J'ai essayé de changer à 0 sans changement.


L'affichage de la liste se fait toujours par ordre
alphabétique ?

Sur les anciens systèmes il y avait des utilistaires
pour trier les

répertoires des disques, ça se trouve peut-être encore?

Pour ce qui est du saucissonage des for, je ne suis pas
assez "fort".


On doit pouvoir tenter un truc du genre :

For i = 1 To vNbrePhotos
vPhotos(i) = vDlg.SelectedItems(i)
next
WordBasic.SortArray vPhotos

For i = 1 To vNbrePhotos
'Traitement de l'extension
NomFichier = vPhotos(i)
etc

.




Avatar
Geo
Bonjour Fred


Pour ce qui est du tri dans les rep, on peut le faire
(directement dans Word à l'ouverture de la boîte de
sélection. L'ordre change visuellement mais ne varie pas
au final.


C'est le même principe que dans ta liste, ce n'est que l'affichage qui
est trié

Merci pour toutes ces propositions. Un jour peut-être,
pris d'une illumination je trouverai.


Essaie déjà ce que je t'ai proposé :-)

--

A+

Avatar
Guy Moncomble
Bonjour à tous,
dans le message %23%,

| Essaie déjà ce que je t'ai proposé :-)

Sage conseil ! mon homonyme peut en effet trier ses noms avec le
wordbasic.sort... Autre possibilité, à part récupérer un programme de
tri comme celui proposé par Pascal Engelmajer ou moi-même je crois.
Enfin, puisqu'il persiste à vouloir éditer ses vignettes avec Word, il
peut aussi utiliser le tri des tableaux. D'ailleurs, il n'est nullement
nécessaire d'être dans un tableau pour l'utiliser, il suffit de trier
des paragraphes.
--
A+

G.M. MVP Word
Avatar
Geo
Bonjour Guy


Bonjour à tous,


Essaie déjà ce que je t'ai proposé :-)


Sage conseil ! mon homonyme peut en effet trier ses noms avec le
wordbasic.sort... Autre possibilité, à part récupérer un programme
de

tri comme celui proposé par Pascal Engelmajer ou moi-même je crois.
Enfin, puisqu'il persiste à vouloir éditer ses vignettes avec Word,
il

peut aussi utiliser le tri des tableaux. D'ailleurs, il n'est
nullement nécessaire d'être dans un tableau pour l'utiliser, il
suffit de trier des paragraphes.


D'après le bout de code indiqué je suppose que Word ne sert que de
support au vba.
La liste des photos est chargée dans une TextBox et l'affichage se
fait sur une user form.
Donc pas de texte.
c'est une simple hypothèse, en pratique ça évite d'acheter le Visual
Basic.
si Fred indiquait dans quel numéro de Windows news il a vu ça, je
devrais avoir le CD,
ce qui ne préjuge pas que je le retrouverai :-)

--

A+


Avatar
Fred
Bonjour,
La macro se trouve dans le dernier Windows news n° 123
juillet-août 2004.
Merci encore pour les conseils et le temps passé ;o)
Fred
-----Message d'origine-----
Bonjour Guy


Bonjour à tous,


Essaie déjà ce que je t'ai proposé :-)


Sage conseil ! mon homonyme peut en effet trier ses
noms avec le


wordbasic.sort... Autre possibilité, à part récupérer
un programme


de
tri comme celui proposé par Pascal Engelmajer ou moi-
même je crois.


Enfin, puisqu'il persiste à vouloir éditer ses
vignettes avec Word,


il
peut aussi utiliser le tri des tableaux. D'ailleurs,
il n'est


nullement nécessaire d'être dans un tableau pour
l'utiliser, il


suffit de trier des paragraphes.


D'après le bout de code indiqué je suppose que Word ne
sert que de

support au vba.
La liste des photos est chargée dans une TextBox et
l'affichage se

fait sur une user form.
Donc pas de texte.
c'est une simple hypothèse, en pratique ça évite
d'acheter le Visual

Basic.
si Fred indiquait dans quel numéro de Windows news il a
vu ça, je

devrais avoir le CD,
ce qui ne préjuge pas que je le retrouverai :-)

--

A+


.





1 2