PhotoFiltre

Le forum officiel de PhotoFiltre
Nous sommes le 22 Juin 2018 16:38

Heures au format UTC + 1 heure [ Heure d’été ]




Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 
Auteur Message
 Sujet du message: Création de macros pour PhotoFiltre avec Excel
MessagePosté: 12 Mai 2014 15:18 
Hors ligne
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Inscription: 26 Sep 2007 13:09
Messages: 32
Sexe: Masculin
Version de PhotoFiltre: PF6.2.7 & PFS9.1.0
Système d'exploitation: XP SP2
Processeur: Athlon 2400+ (2.00GHz)
Mémoire RAM: 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...


Haut
 Profil  
 
 Sujet du message: Re: Création de macros pour PhotoFiltre avec Excel
MessagePosté: 13 Mai 2014 12:11 
Hors ligne
Modérateur Global
Modérateur(trice) Global(e)|Modérateur Global|Modératrice Globale
Avatar de l’utilisateur

Inscription: 02 Fév 2005 10:35
Messages: 13342
Localisation: 54
Sexe: Masculin
Version de PhotoFiltre: PF6 + 7 + Studio
Système d'exploitation: 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


Haut
 Profil  
 
 Sujet du message: Re: Création de macros pour PhotoFiltre avec Excel
MessagePosté: 15 Mai 2014 0:43 
Hors ligne
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Inscription: 26 Sep 2007 13:09
Messages: 32
Sexe: Masculin
Version de PhotoFiltre: PF6.2.7 & PFS9.1.0
Système d'exploitation: XP SP2
Processeur: Athlon 2400+ (2.00GHz)
Mémoire RAM: 768 Mo
Tom a écrit:
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


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction par: phpBB-fr.com