PhotoFiltre

Le forum officiel de PhotoFiltre
It is currently 20 May 2019 5:01

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 3 posts ] 
Author Message
 Post subject: Création de macros pour PhotoFiltre avec Excel
PostPosted: 12 May 2014 15:18 
Offline
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Joined: 26 Sep 2007 13:09
Posts: 33
Gender: Male
PhotoFiltre version: PF6.2.7 & PFS9.1.0
Operating System: XP SP2
Processor: Athlon 2400+ (2.00GHz)
RAM memory: 768 Mo
Bonjour,
Excel est un outil puissant dont on ne soupçonne pas toujours l'étendue des possibilités surtout en matière de programmation.

Cela fait quelques temps que j'utilise une instruction utile :"Sendkeys"
Cela permet d'envoyer une ou plusieurs touches à la fenêtre active comme s'il s'agissait d'une saisie directe au clavier. La fenêtre active n'étant pas nécessairement Excel mais toute autre application Windows.
Cela permet donc de piloter dans notre cas PF depuis une macro Excel pour automatiser un certain nombre d'opérations (Voire d'effectuer des calculs intermédiaires).
En voici 2 exemples :

Sub PhotoFiltre_Texture() : Applique le filtre "Craquelure" à l'image et l'atténue à 30%. Puis Redimensionne l'image à 300x300 - 200dpi

Sub PhotoFiltre_Redressage_Horaire() : La diagonale de la sélection définit l'angle par rapport à l'horizontal.
La macro récupère la Largeur et la hauteur de la sélection, calcule l'angle résultant et applique une rotation paramétrée avec la valeur obtenue.

Code:
Sub PhotoFiltre_Texture()

AppActivate ("PhotoFiltre") 'Pour activer PF
SendKeys "%(LXF)", True
SendKeys "{ENTER}", True
SendKeys "%(EA)", True
SendKeys "%(LXF)", True
SendKeys "{HOME}", True
SendKeys "{PGDN 6}", True
SendKeys "{ENTER}", True
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "^h"
SendKeys "{TAB 2}", True
SendKeys "300", True
SendKeys "{TAB 3}", True
SendKeys "200", True
'SendKeys "{ENTER 2}", True
SendKeys "{NUMLOCK}", True

End Sub
'---------------------------------------------
Sub PhotoFiltre_Redressage_Horaire()

'-----Vidage Presse-Papier
Dim Cible As DataObject
Set Cible = New DataObject
Cible.SetText ""
Cible.PutInClipboard
Set Cible = Nothing
'---------------------------

AppActivate ("PhotoFiltre")
SendKeys "^g", True
SendKeys "{TAB 5}", True
SendKeys "^c", True
Application.Wait (Now + TimeValue("0:00:01"))
With New DataObject
    .GetFromClipboard
    L = .GetText(1)
End With

SendKeys "{TAB}", True
SendKeys "^c", True
Application.Wait (Now + TimeValue("0:00:01"))
With New DataObject
    .GetFromClipboard
    H = .GetText(1)
End With

Ang = Atn(Val(H) / Val(L))
Ang = 45 * Ang / Atn(1)
SendKeys "{ESC}", True
SendKeys "%(INA)", True
SendKeys "{TAB 2}", True
SendKeys Ang
SendKeys "{ENTER 2}", True
SendKeys "{NUMLOCK}", True

End Sub


Quelques Explications :
- SendKeys "%(INA)", True : Le texte que l'on envoie est entre guillements.
- SendKeys Ang : On envoie le contenu de la variable Ang
- Le sigle "%(" simule la touche "ALT" enfoncée : Cela permet d'avoir accès à l'arborescence des menus.
- Le sigle "^" simule la touche "CTRL" enfoncée : Pour les raccourcis (Attention : il faut utiliser les minuscules sinon c'est considéré comme "CTRL+SHIFT"
- SendKeys "{TAB 2}", True : On envoie 2 fois la touche tabulation
- SendKeys "{ENTER 2}", True : Pour fermer une boite de dialogue(2x la touche ENTER)
- SendKeys "{NUMLOCK}", True : Bizarrerie : Quand on utilise cette instruction, le clavier numérique se désactive. Avec cela on le réactive...

- Application.Wait (Now + TimeValue("0:00:01")) : Permet d'attendre une seconde avant de passer à la suite (Utile quand on fait un copier/coller)
- With New DataObject / .GetFromClipboard / H = .GetText(1)/ End With : Permet d'affecter la valeur du presse-papier dans la variable H (en Texte!)

A partir de le, je pense que vous avez compris le principe pour réaliser vos propres macros...


Top
 Profile  
 
 Post subject: Re: Création de macros pour PhotoFiltre avec Excel
PostPosted: 13 May 2014 12:11 
Offline
Administrateur
Administrateur(trice)|Administrateur|Administratrice
User avatar

Joined: 02 Feb 2005 10:35
Posts: 13446
Location: 54
Gender: Male
PhotoFiltre version: PF6 + 7 + Studio
Operating System: Xp + W10
Bonjour et merci,

c'est plutôt intéressant et ça marche bien pour la première macro.
Par contre sur la seconde j'ai un message d'erreur d'Excel sur la première ligne me disant que l'objet
n'est pas défini par l'utilisateur... :shock:

J'ai une version (légale) ancienne d'Excel, c'est peut la raison ou j'ai oublié quelque chose ?
J'ai pourtant tracé une sélection :?

_________________
Bien plus facile avec PhotoFiltre. Cordialement.
. . Image . . Image


Top
 Profile  
 
 Post subject: Re: Création de macros pour PhotoFiltre avec Excel
PostPosted: 15 May 2014 0:43 
Offline
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Joined: 26 Sep 2007 13:09
Posts: 33
Gender: Male
PhotoFiltre version: PF6.2.7 & PFS9.1.0
Operating System: XP SP2
Processor: Athlon 2400+ (2.00GHz)
RAM memory: 768 Mo
Tom wrote:
Bonjour et merci,

c'est plutôt intéressant et ça marche bien pour la première macro.
Par contre sur la seconde j'ai un message d'erreur d'Excel sur la première ligne me disant que l'objet
n'est pas défini par l'utilisateur... :shock:

J'ai une version (légale) ancienne d'Excel, c'est peut la raison ou j'ai oublié quelque chose ?
J'ai pourtant tracé une sélection :?

Bonjour,
Je pense que'il y a une bibliothèque de référence qui n'est plus activée. (Elle l'est par défaut à l'installation il me semble du moins pour la version 2007)
Ces bibliothèques sont plutôt des annuaires des objets (fonctions...) d'autres applications qui peuvent être utilisés dans ton code.
Pour la (ré)activer :
Alt+F11 : Ouverture de la fenêtre Visual Basic (depuis Excel)
Menu Outils > Références : Tu peux voir qu'il doit y avoir une quarantaine de références disponibles mais quelques unes sont cochées...
Il faut vérifier que celles de bases le sont:
- Visual Basic for Applications
- Microsoft Excel 12.0 Object Library
- OLE automation
- Microsoft Office 12.0 Object Library
- Microsoft Forms 2.0 Object Library
(Les numéros de versions dépend de la version d'Office)
Avec çà je pense que cela devait aller


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 3 posts ] 

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group