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 :

Pivoter de 90° toutes les images qui sont en paysage d'un dossier


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 112
    Points : 39
    Points
    39
    Par défaut
    Bonjour à tous

    Je cherche à pivoter de 90° toutes les images qui sont au format paysage d'un dossier.

    Je voulais faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Pivoter_images_paysage()
    Dim sDossier As String
    Dim sFichier As String
     
    sDossier = ThisDocument.Path & "\" & "images"
    sFichier = Dir$(sDossier & "\")
     
     
    Do While sfichier.Height < sfichier.Width then 'tant qu'il y a des images avec une hauteur inférieure à la largeur on fait une rotation de l'image
    rotation 90°
    loop
    end sub
    mais bien sur, il me manque certains élèments comment modifier un fichier image etc.

    car je veux ajouter plusieurs images en inlineshapes.
    et je veux qu'elles soient correctement positionner d'avance.
    Cela évite de les transformer en shape et de tous dézinguer toutes mes images

    quelqu'un a une idée ?
    Merci à vous

    Personne n'a une idée ?

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, un exemple pour une image, à toi de poursuivre et adapter à ton contexte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Option Explicit
     
    Sub Rutation()
    Dim ilShp As InlineShape
    Dim shp As Shape
    Dim W As Single, H As Single
     
        Set ilShp = ActiveDocument.InlineShapes(1)
        Set shp = ilShp.ConvertToShape
     
        W = shp.Width
        H = shp.Height
     
        If W > H Then
            With shp
                .Select
                .LockAspectRatio = msoTrue
                .Rotation = 90
                With Selection.ShapeRange
                    .RelativeHorizontalPosition = wdRelativeVerticalPositionMargin
                    .RelativeVerticalPosition = wdRelativeVerticalPositionMargin
                    .Left = wdShapeCenter
                    .Top = wdShapeCenter
                End With
            End With
        End If
     
        Set shp = Nothing
        Set ilShp = Nothing
    End Sub

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 112
    Points : 39
    Points
    39
    Par défaut
    Merci à toi,

    J'ai écris cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Private Sub InsertionImages()
     
     
    Dim sDossier As String
    Dim sFichier As String
    Dim shp As Object
    Dim ilShp As InlineShape
    Dim W As Single, H As Single
    Dim ActDoc As Document
    Dim Str
    Set ActDoc = ActiveDocument
     
       debut = Timer
     
     
        sDossier = ActiveDocument.Path & "\" & "images"
        sFichier = Dir$(sDossier & "\")
     
          Selection.EndKey unit:=wdStory
     
        Do While Len(sFichier) > 0
        Set shp = Selection.InlineShapes.AddPicture(FileName:=sDossier & "\" & sFichier)
        With shp
            .LockAspectRatio = msoTrue
     
        End With
     
        Set ilShp = ActiveDocument.InlineShapes(1)
        Set shp = ilShp.ConvertToShape
     
        W = shp.Width
        H = shp.Height
     
        If W > H Then
     
     
            With shp
                .Select
                .LockAspectRatio = msoTrue
                .Rotation = -90
            With Selection.ShapeRange
                    .RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin ' c'est horizontal plutôt ici non ?
                    .RelativeVerticalPosition = wdRelativeVerticalPositionMargin
                    .Left = wdShapeCenter
                    .Top = wdShapeCenter
                End With
            End With
        End If
        Selection.EndKey unit:=wdStory
        Selection.InsertBreak Type:=wdPageBreak
     
     
        Set shp = Nothing
        Set ilShp = Nothing
     
     
        sFichier = Dir$()
        Loop
     
        Set shp = Nothing
        Set ilShp = Nothing
        fin = Timer
        Duree = fin - debut
        Str = Round(Format(Duree, "##"), 0)
        MsgBox "L'opération s'est correctement déroulée en " & Str & " secondes.", vbOKOnly, "Ajout d'images terminé"
     
    End Sub
    Ca pivote bien les images je te remercie.

    Mais le problème comme tu le vois dans mon code:
    J'insert mon inlineshape donc une image paysage donc la largeur de l'image prend la largeur de la page donc est toute petite et ensuite on la pivote.
    Elle se met bien au centre de la page mais le problème c'est qu'elle est toujours toute petite.

    Comment faire pour éviter ce problème ?

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, dans mon code initial, rajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Coeff As Single
     
        Coeff = .....	
                '.....
                With Selection.ShapeRange
    	    '.....
                    .ScaleWidth Coeff, True
                    .ScaleHeight Coeff, True
                End With
    Tu peux jouer avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Set DocSetUp = Documents(ActiveDocument.Name).PageSetup
     
        Wd = DocSetUp.PageWidth
        Hd = DocSetUp.PageHeight
     
        W = shp.Width
        H = shp.Height

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 112
    Points : 39
    Points
    39
    Par défaut
    Ha l'image prend vraiment toute la page.
    C'est possible de l'étirer de la même façon mais entre les marges gauche et droite et haut et bas ?

    J'ai également un souci à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set shp = ilShp.ConvertToShape
    voir ci-joint le message d'erreur.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, dans l'exemple que je t'ai donné j'ai utilisé une seule image et l'indice est 1
    pour ton cas cet indice ne doit pas rester figé et devrait varier ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 112
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Re, dans l'exemple que je t'ai donné j'ai utilisé une seule image et l'indice est 1
    pour ton cas cet indice ne doit pas rester figé et devrait varier ?

    L'indice ?

    Enfaite je fais une boucle avec plusieurs ajout de inlineshape.

    Je t'ai donné la réponse que tu souhaitais ?

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.InlineShapes(1)
    1 est l'indice, il s'&pplique au premier objet de la collection.

    On poeut faire une boucle sur les objet de la collection, par leur indice ou par la collection.

    http://heureuxoli.developpez.com/off...l/?page=page12
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 112
    Points : 39
    Points
    39
    Par défaut
    Ha d'accord je comprend.

    Enfete moi j'ajoute une image avec inlineshape.
    Je la tourne que si la hauteur de l'image est < à la largeur donc pivotation.

    Comment faire ? ha peut être un compteur qui me tourne l'image que j'insers ? Parce que sinon il risque de tout me tourner a chaque fois

    Es ce que l'indice peut être par exemple la sélection ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.InlineShapes(sélection)
    Ca serait trop beau ^^

    Pour ce qui s'agit de la taille de l'image; je n'ai pas le document avec moi la mais serait-il possible de prendre la largeur de l'inlineShape et de l'appliquer à la hauteur de la shape après Rotation ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'était ta demande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Je cherche à pivoter de 90° toutes les images qui sont au format paysage d'un dossier.
    ça ne peut être possible que si l'image que tu insères est la dernière.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 112
    Points : 39
    Points
    39
    Par défaut
    Hum je me suis donc mal exprimé.
    Enfete je souhaitais à l'insertion de ma inline shape si H<W on l'a convertit pivote etc.

    Mais j'ai peut être une autre solution.
    J'ajoute toutes les images en inline shape.

    Ensuite je boucle sur toutes les inlineshapes, si H<W je convertis en shape on l'a tourne et on l'agrandit jusqu'aux marges.

    Tu penses que c'est possible ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/06/2015, 18h13
  2. afficher les images qui sont sur un FTP sécurisé
    Par Cidouge dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 08/10/2014, 17h06
  3. [CS4] SWF externe qui se répercute sur toute les images ?
    Par Apoulit dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 16/08/2010, 23h47
  4. Réponses: 2
    Dernier message: 04/10/2007, 13h42

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