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

Macros et VBA Excel Discussion :

Manipulation de photo


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien de laboratoire routier
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Technicien de laboratoire routier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Par défaut Manipulation de photo
    Bonjour à tous,
    Je programme actuellement une macro qui me permettra de redimensionner et de positionner une photo de façon automatique dans un document Excel. J’ai récupéré cette macro sur le net et je souhaiterais la compléter pour que la photo fasse une rotation de 90° et me propose de la rogner (une pause dans la macro qui me proposera de faire ma sélection de rognage) puis que la macro se finisse.
    Pour le moment, je n’ai écris que la ligne qui me permet de faire la rotation mais la photo ne se met pas à l’emplacement que j’ai spécifié et je ne sais pas comment faire pour la partie rognage.
    Pouvez-vous m’aider svp.
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    Sub insere_image_ratio()
        'Déclaration des variables
            Dim ficimg As String
            Dim Ad As String
     
            Dim MemW As Long
            Dim MemH As Long
            Dim t As Integer
            Dim L As Integer
     
            Dim Lg As Integer
            Dim HT As Integer
            Dim RatioCell As Single
     
            Dim CellH As Long
            Dim CellW As Long
            Dim RatioHz As Single
            Dim RatioVt As Single
     
        'Boucle pour supprimer l'ancienne image
            For Each ShapeObj In ActiveSheet.Shapes
                If ShapeObj.Name = "Cible" Then ActiveSheet.Shapes("Cible").Delete
            Next ShapeObj
     
        'Définit l'emplacement de l'image
            Range("A23: f40").Select
            Ad = Selection.Address
            CellH = Selection.Height
            CellW = Selection.Width
     
        'Insertion
            ficimg = Application.GetOpenFilename(".jpg,*.jpg", , "Choisissez l'image") ' choix nom du fichier
            If ficimg = "Faux" Then Exit Sub
            ActiveSheet.Pictures.Insert(ficimg).Select
     
     
           '__________Ligne suspecte____________________
            Selection.ShapeRange.IncrementRotation 90#
           '_________________________________________ 
        'Adapte les ratio
            With Selection.ShapeRange
                MemW = .Width: MemH = .Height
     
     
     
            'Si la photo < selection
                If MemH < CellH And MemW < CellW Then
                    RatioHz = MemH / CellH
                    RatioVt = MemW / CellW
     
                'Adapter en hauteur
                    If RatioVt < RatioHz Then
                        HT = CellH:  Lg = MemW * (HT / MemH)
                        t = 0: L = (CellW - Lg) / 2
     
                'Adapter en largeur
                    Else
                        Lg = CellW: HT = MemH * (CellW / MemW)
                        L = 0: t = (CellH - HT) / 2
                    End If
     
            'Si la photo > selection
                ElseIf MemH > CellH And MemW > CellW Then
                    RatioHz = CellH / MemH
                    RatioVt = CellW / MemW
     
                'Adapter en hauteur
                    If RatioVt > RatioHz Then
                        HT = CellH:  Lg = MemW * (HT / MemH)
                        t = 0: L = (CellW - Lg) / 2
     
                'Adapter en largeur
                    Else
                        Lg = CellW: HT = MemH * (Lg / MemW)
                        L = 0: t = (CellH - HT) / 2
                    End If
     
            'si la hauteur de la photo > hauteur de la selection & largeure  de la photo < largeure de la selection
                ElseIf MemH > CellH And MemW < CellW Then
     
                'Adapter en hauteur
                    HT = CellH:  Lg = MemW * (HT / MemH)
                    t = 0: L = (CellW - Lg) / 2
     
            'si la hauteur de la photo < hauteur de la selection & largeure  de la photo > largeure de la selection
                ElseIf MemH < CellH And MemW > CellW Then
     
                'Adapter en largeur
                    Lg = CellW: HT = MemH * (Lg / MemW)
                    L = 0: t = (CellH - HT) / 2
                Else
                    Stop ' pas prévu ?
                End If
     
                .LockAspectRatio = False ' proportions d'origine lorsque vous la redimensionnez
                .Top = Range(Ad).Top + t ' haut de la cellule
                .Left = Range(Ad).Left + L ' gauche de la cellule
                .Height = HT
                .Width = Lg ' largeur des cellules fusionnées
            End With
     
        'Propriété de la photo
            With Selection
                .Name = "Cible"
                .Placement = xlMoveAndSize
                .PrintObject = True
            End With
    End Sub

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Balaise !
    Si quelqu'un à sous le coude un code pour effectuer un rognage avec sélection dynamique sur l'image en macro, je suis preneur
    Afin de traiter des photo en masse pour rogner, c'est cool !

Discussions similaires

  1. [XL-2007] Manipuler des photos sous Word depuis Excel
    Par familledacp dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/08/2015, 09h20
  2. Manipuler des photos avec Caml
    Par Jeanpasse dans le forum Caml
    Réponses: 3
    Dernier message: 15/04/2011, 12h41
  3. Manipulations de fichiers / application Photo
    Par sweetmercy dans le forum VBA Access
    Réponses: 3
    Dernier message: 29/10/2010, 11h44
  4. manipulation photos wpf c#
    Par clod83 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 06/11/2009, 09h35
  5. Réponses: 2
    Dernier message: 22/05/2009, 16h14

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