[Résolu][Draw] Images multiples dans ordre alphanumérique

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Draw] Images multiples dans ordre alphanumérique

Messagepar isma51 » 15 Mars 2015 20:41

Bonjour à tous.

J'ai trouvé la macro suivante sur une autre section du Forum :

Code : Tout sélectionner   AgrandirRéduire
REM  *****  BASIC  *****

Sub Main
   form = ThisComponent.drawPages(0).forms(0)
   path = form.GetByName("Path").text
   path = ConvertToUrl(path)
   elems = Split(path,"/")
   elems(UBound(elems)) = ""
   path = Join(elems,"/")
   path = ConvertFromUrl(path)
   types = LCase(form.GetByName("Types").text)
   CollectPictures(path,types)
End Sub

Sub CollectPictures(path,types) 'path est le chemin-système du dossier
   pages = ThisComponent.drawPages
   
   fileName = DIR(path & "*")
   While fileName<>""
      If TypeIsOK(fileName,types) Then
         url = ConvertToUrl(path & fileName)
         page = pages.InsertNewByIndex(pages.count)
         AddPicture(page,url)
      End If
      fileName = DIR
   Wend
End Sub

Sub AddPicture(page, pictURL)
   picture = ThisComponent.CreateInstance("com.sun.star.drawing.GraphicObjectShape")
   'L'image est liée et non incorporée
   picture.graphicURL = pictURL
   page.Add(picture)
   
   'Taille originale
   picture.size = picture.graphic.size100thMm
   'Position centrée
   position = picture.position
   position.x = (page.width-picture.size.width)/2
   position.y = (page.height-picture.size.height)/2
   picture.position = position
End Sub

Function TypeIsOK(fileName,fileTypes) As Boolean
   elems = Split(fileName,".")
   fileType = "*" & LCase(elems(UBound(elems))) & "*"
   TypeIsOK = (InStr(fileTypes,fileType)>0)
End Function


Que faut-il modifier pour que les images s'insèrent dans l'ordre alphanumérique ?

Merci d'avance.
Dernière édition par isma51 le 16 Mars 2015 22:48, édité 1 fois.
LibreOffice 4.2.8.2
ubuntu 14.04
isma51
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 15 Mars 2015 18:34

Re: [Draw] Insertion images multiples dans ordre alphanuméri

Messagepar Dude » 16 Mars 2015 09:41

Salut,

isma51 a écrit:J'ai trouvé la macro suivante sur une autre section du Forum

Par respect pour son auteur, il est d'usage de donner un lien où tu as "pompé" ce code.

isma51 a écrit:Que faut-il modifier pour que les images s'insèrent dans l'ordre alphanumérique ?

Je ne comprends pas où est ton problème puisque l'instruction Dir renvoie les fichiers triés alphabétiquement :
_macro.png
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21742
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Draw] Insertion images multiples dans ordre alphanuméri

Messagepar isma51 » 16 Mars 2015 12:53

Ah oui, excusez-moi, d'autant que ce code est vraiment excellent, et répond à un souci récurent sur draw. Son auteur mérite bien un peu de reconnaissance. C'est alhazred .

Le lien:
[url]https://forum.openoffice.org/fr/forum/viewtopic.php?f=6&t=42028&p=254974&hilit=Re%3A+[R%C3%A9solu]+Importer+toutes+les+images+d%27un+dossier#p254974[/url]

En tout cas, je n'ai pas d'explication. Sur plusieurs essais, c'est le même résultat. les mêmes scans de page aux mêmes emplacements. C'est vrai qu'il y a 715 pages, mais ça devrait être sans rapport non?

Mes fichiers sont nommés ainsi:

page001.jpg
page002.jpg
etc...

J'ai essayé autre chose en renommant:

001.jpg
002.jpg
etc...

Résultat différent, mais toujours dans le désordre... :fou:
Dernière édition par isma51 le 16 Mars 2015 13:22, édité 4 fois.
LibreOffice 4.2.8.2
ubuntu 14.04
isma51
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 15 Mars 2015 18:34

Re: [Draw] Insertion images multiples dans ordre alphanuméri

Messagepar Dude » 16 Mars 2015 13:58

isma51 a écrit:Résultat différent, mais toujours dans le désordre...

Cette phrase n'aide pas à comprendre.
Fais comme moi et joins une copie écran présentant la même chose.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21742
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Draw] Insertion images multiples dans ordre alphanuméri

Messagepar isma51 » 16 Mars 2015 14:42

Essai reproduit sous win7, no problemo. Serait-ce lié à Ubuntu?

pour l'image je m'y met. Galère avec le débit internet où je suis.

 Ajout : désolé, je n'arrive pas à reproduire votre macro, mais en + clair, les images sont dans le mauvais ordre du style: 398.jpg ; 690.jpg; 401.jpg; etc... 
LibreOffice 4.2.8.2
ubuntu 14.04
isma51
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 15 Mars 2015 18:34

Re: [Draw] Insertion images multiples dans ordre alphanuméri

Messagepar Dude » 16 Mars 2015 17:05

isma51 a écrit:Essai reproduit sous win7, no problemo. Serait-ce lié à Ubuntu?

Je viens de faire l'essai sous Debian avec AOO 4.1.1 et je reproduis effectivement le dysfonctionnement.
Un répertoire contenant des fichiers est trié de manière aléatoire avec l'instruction Dir.
_dir_faux.png

Je n'ai pas vu de ticket ouvert dans BugZilla sur le sujet.

Donc pour corriger le problème, il faut trier à la main.
Pour cela, on stocke la liste de fichiers dans un tableau.
_dir_corrige.png

Résultat correct !
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21742
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Draw] Insertion images multiples dans ordre alphanuméri

Messagepar isma51 » 16 Mars 2015 17:11

Merci beaucoup pour l'aide.

Cependant, je n'ai pas vraiment compris comment procéder. Pourriez-vous me guider pas à pas svp? Dois-je ré-ecrire les lignes de codes que vous avez composé? Comment procéder svp?
Est-il possible d'introduire ce tri dans le code initial?
LibreOffice 4.2.8.2
ubuntu 14.04
isma51
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 15 Mars 2015 18:34

Re: [Draw] Insertion images multiples dans ordre alphanuméri

Messagepar Piaf » 16 Mars 2015 18:47

Bonsoir
Teste en remplaçant la macro CollectPictures par celle-ci.
Code : Tout sélectionner   AgrandirRéduire
Sub CollectPictures(path,types) 'path est le chemin-système du dossier
   pages = ThisComponent.drawPages
   fileName = DIR(path & "*")
   x = 0
   While fileName<>""
      If TypeIsOK(fileName,types) Then
         url = ConvertToUrl(path & fileName)
         reDim Preserve monTab(x)
         monTab(x)=url
         x = x + 1
      End If
      fileName = DIR
   Wend
   montab = triAlpha(monTab)
   For intx = 0 to UBound(monTab)
      page = pages.InsertNewByIndex(pages.count)
      AddPicture(page,monTab(intx))
   Next   
End Sub

function triAlpha(t1()) as variant
dim t2() as variant
dim indexMaxi as long
dim cpt1 as long, cpt2 as long
dim varTmp as variant
   indexMaxi = ubound(t1)
   redim t2(indexMaxi)
   t2 = t1
    For cpt1 = 0 To indexMaxi - 1
        For cpt2 = cpt1 + 1 To indexMaxi
            If (t2(cpt1) > t2(cpt2)) Then
               varTmp = t2(cpt1)
               t2(cpt1) = t2(cpt2)
               t2(cpt2) = varTmp
            end if
        Next cpt2
    Next cpt1
   triAlpha = t2()
end function
Le principe, comme expliqué par Dude est de stocker le chemin des images dans un tableau, de trier le tableau (La fonction triAlpha est d'Alain de La Chaume dans ce fil Re: [Basic]Trier Tableau() par ordre alphabetique en macro) puis d'insérer les images à partir du tableau.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Résolu][Draw] images multiples dans ordre alphanuméri

Messagepar isma51 » 16 Mars 2015 20:27

Qu' ajouter de plus? Excellent. Merci à dude d'avoir été patient et un coucou ultra-marin a piaf.
Résolu. :bravo:
LibreOffice 4.2.8.2
ubuntu 14.04
isma51
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 15 Mars 2015 18:34

Re: [Draw] Insertion images multiples dans ordre alphanuméri

Messagepar Piaf » 16 Mars 2015 22:41

Bonsoir
isma51 a écrit:Qu' ajouter de plus?
Peut-être de lire le mode d'emploi du Forum :) A propos des balises - Comment mettre [Résolu] ou [Issue]
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Draw] Insertion images multiples dans ordre alphanuméri

Messagepar isma51 » 16 Mars 2015 22:47

oups "premier message" mal lu. a+
LibreOffice 4.2.8.2
ubuntu 14.04
isma51
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 15 Mars 2015 18:34


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)