IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Comprimez les images des document inclus dans dossier


Sujet :

VBA Word

  1. #21
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Pour les sous répertoire il faut travailler différemment.

    Il faut une fonction pour parcourir les répertoires et dans le cas d'un sous-répertoire, il faut utiliser la fonction en récursive.

    Une piste ICI c'est utilisé sur Access, mai ça fonctionne sur VBA, donc aussi sur Word

  2. #22
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut Pour la partie compression d'images
    Salut,

    maintenant que tu as intégré le code de Heureux-Oli pour le parcours des fichiers (même s'il te reste à traiter les sous-répertoires), j'insiste : il existe dans Word en VBA un mécanisme d'appel aux fonctions et aux DlgBox standards, donc si avec l'interface de Word c'est ok, il suffit de rappeler cette boîte et de lui envoyer ("SendKey ...") les commandes directement et c'est Word qui fait le boulot. Bien sûr ce mécanisme ne fonctionne que si Word correspond à ton besoin mais ça semblait être le cas (vu le début du forum).

    Sinon tu peux toujours appeler un programme externe auquel tu transmets un flux d'entrée (comme le contenu d'un fichier par exemple).

  3. #23
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    Tu as raison d'insister sepia.
    Le probleme est de savoir comment appeler la dialogbox désiré.
    Pour l'instant je galere car meme avec l'enregistreur de macros je n'arrive pas a trouver...

  4. #24
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    La boîte de dialogue est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(wdDialogFormatPicture).Show
    Il faut qu'au moins un image soit sélectionnée.

  5. #25
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Pour lister les sous répertoires et les fichiers qu'ils contiennent, tu peux regarder ici http://www.developpez.net/forums/sho...d.php?t=325914
    Tu as également le code pour zipper les fichiers sur l'un des forums d'office. J'ai vu passer ça il n'y a pas 15 jours.
    Bonne chance
    (si je trouve, je te passe l'adresse)

    Edit
    En fait, c'est dans la FAQ VB à Comment compresser et décompresser des fichiers ? à cette adresse http://vb.developpez.com/faq/?page=Fichiers#zip
    Si ça peut t'être utile...

    Edit (re)
    Autant pour moi, à propos de la compression d'image, je n'avais pas lu la discussion depuis le début. Le zip n'est bien sûr pas la solution.
    Désolé.

  6. #26
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour a tous

    Merci de repondre.
    je vais jetter un oeil sur le lien pour lister les sous répertoires et les fichiers qu'ils contiennent merci ouskel'n'or.

    Heureux-oli merci pour la dialog-box. On avance.
    Comme tu le dit il faut une image de selectionné. Or cela fait aussi partie du topic...
    En effet j'ai plusieur image dans mon fichiers. L'enregistreu de macros ne prend pas la selection d'image, je ne sais pas comment en macros selectionné une image et la travailler.

    Mais bon a force de persever on avance, doucement mais surement.
    J'aurais peut etre mieux fait de diviser mon topic en deux topic :
    1er lister et ouvrir les sous répertoires et les fichiers qu'ils contiennent
    2em selectionné les images d'un doc puis les compresser.

    La 1er partie est presque resolue, et on avance sur la 2em.

    @+

  7. #27
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut Pour accéder aux images en VBA
    Salut,

    Word (notre ami à tous ) a 2 listes d'objets distinctes pour les images : 1 pour celles incluses dans le texte et pour les images "posées" sur le texte. La 1ere est accessible via "ActiveDocument.InlineShapes", la 2nde via "ActiveDocument.Shapes".

    Et donc ça dépend de la manière dont tu as inséré tes images dans Word

  8. #28
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Pour les Shapes et InLineshapes, il suffit d'un test pour sélectionner l'une ou l'autre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If ActiveDocument.InlineShapes.count <> 0 Then MsgBox "Image InlineShapes"

  9. #29
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Pour sélectionner chaque image, tu as ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        For Each Limage In ActiveDocument.InlineShapes
            Limage.Select
            Limage.Height = Limage.Height / 2
            Limage.Width = Limage.Width / 2
        Next
    Ne réduit pas la place prise par les images dans le document (en termes d'octets)

    Edit
    Et si ce sont des Shapes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For Each Limage In ActiveDocument.Shapes
            Limage.Select
        Next

  10. #30
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    Alors apparement les images sont dans des "zone de texte" (désolé je viens seulement de le remarquer), donc les InlineShapes ne marchent pas.
    Par contre les Shapes me selectionne la "zone de texte", mais le Application.Dialogs(wdDialogFormatPicture).Show ne fonctionne que sur une image et ouvre que la boite de dialogue "graphique" et non la boite de dialogue "format de l'images".
    Dans la boite dialogue il n'y a pas d'onglet donc je suis aussi coincé.

    je continue a chercher, mais si vous avez de l'aide a m'apporter ca serait cool.
    Merci
    @+

  11. #31
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je n'ai trouvé nulle part la solution à ton problème.
    La solution donnée par Word consistant à utiliser "Format -> Contrôle -> Compresser" ne semble fonctionner que manuellement et sur un contrôle Image, mais pas sur une image insérée directement.
    Quant à une image collée dans une zone de texte (?) j'ai bien peur qu'elle soit peu considérée par Word.
    Un "move Right" avec "Extendmode" permet de la sélectionner mais pas de la différencier d'un simple caractère... enfin, je n'ai pas réussi...)
    Je passe la main à ceux qui ont quelque chose
    Bonne chance.

  12. #32
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    J'en suis au même stade, les images dans les zones de texte, c'est pas le top.

  13. #33
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut Les images dans des zones
    Salut,

    En effet, il n'y a pas de bonne solution pour les manipuler donc il faut encore ruser. Tu les transformes tout simplement chaque Shape en InlineShape et là, tu la manipules. Comme manifestement, tu as le droit de modifier le fichier, pas de problème, de toute façon comme le dit Heureux-Oli
    les images dans les zones de texte, c'est pas le top.
    ==> tu gardes ainsi des images propres et manipulables par des objets VBA dans ton fichier modifié mais si tu ne veux pas ou que tu ne peux pas le faire, tu n'as qu'à retransformer chaque InlineShape en Shape mais tu ne le fais uniquement pour des raisons fonctionnelles et pas pour des raisons techniques (puisqu'on te dit, tous les 3, que les Shapes ce n'est pas une bonne solution ).

  14. #34
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    C'est pas une bonne solution par le code, les images InlineShapes transformées en Shape ont tendance à aller se figer n'importe où et parfois l'une sur l'autre.

    [Troll]J'attend des petits[/Troll]

    Ce qui va nécessiter une manipulation hors vba du fichier.

  15. #35
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Pour faire passer des InlineShapes en Shape, sans "trop" de problème, il faut renseigner tous les champs de VBA pour Shape (le mieux pour ça est d'enregistrer directement la manip de transformation en mode "enregistrement de macro", ce qui va te sortir un paquet d'instructions que je te déconseille d'optimiser sous peine que... ça ne marche pas (comme le dit Heureux-Oli), en particulier les trucs comme l'ancrage (Selection.ShapeRange.LockAnchor) et le format de recouvremen (Selection.ShapeRange.WrapFormat.AllowOverlap et Selection.ShapeRange.WrapFormat.Side)
    ==> transforme simplement ta macro en procédure VBA que tu appelles que par une boucle ou une autre procédure.

  16. #36
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonsoir la Cie

    merci pour vos conseils.
    Oula ! je vais essayer demain si j'arrive a transformé les InlineShapes en Shapes (avec l'enregistreur de macro), et voir ce que ca donne.
    allez je me souhaite bon courage....

    @+

  17. #37
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonsoir a tous

    Suis encore en train de chercher, je vous tient au jus.
    Si quelqu'un par hasard a une solution je suis preneur.
    Merci
    @+

  18. #38
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    Effectivement sous Word (pas en VBA) on peut compresser les images.
    clique droit sur l'image, format de l'image puis dans un onglet tu a la fonction compresseé.

  19. #39
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Citation Envoyé par Fredheg Voir le message
    Bonjour

    Effectivement sous Word (pas en VBA) on peut compresser les images.
    clique droit sur l'image, format de l'image puis dans un onglet tu a la fonction compresseé.
    Tu epux même en une opération le faire pour toutes les imges.

    En VBA, je ne trouve pas !

  20. #40
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    C'est également mon avis
    Citation Envoyé par ouskel'n'or
    Je n'ai trouvé nulle part la solution à ton problème.
    La solution donnée par Word consistant à utiliser "Format -> Contrôle -> Compresser" ne semble fonctionner que manuellement et sur un contrôle Image, mais pas sur une image insérée directement.

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/08/2010, 20h52
  2. Réponses: 1
    Dernier message: 11/05/2009, 17h06
  3. Réponses: 9
    Dernier message: 23/05/2006, 15h33
  4. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo