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 :

Redimensionner image en fonction de sa taille avec iPict


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Apprentie en programmation
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Apprentie en programmation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Par défaut Redimensionner image en fonction de sa taille avec iPict
    Bonjours, je désire créer une Macro pour redimensionner une image en gardant ses proportion. Pour cela j'utilise la fonction iPict afin de connaitre sa taille (Height & Width) en CM.
    Puis je fait un calcul pour savoir par combien je doit multiplier mon image pour obtenir la taille voulut et je la redimensionne.
    Pour faire cela j'utilise le code suivant:

    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
     
    Sub DimensionsImage()
      'Fonctionne pour les formats: JPG, jpeg, gif, bmp
     
    'Recupere la taille d'un image sur le disque dur
     
        Dim iPict As IPictureDisp
        Dim NomFichier As String
     
        Chemin = Application.GetOpenFilename(, , "Choisissez le LOGO")
     
     If Chemin <> False Then
                Else
                Exit Sub
            End If
     
        Set iPict = LoadPicture(Chemin)
        Largeur = Round((iPict.Width) / 1000, 2)
        Hauteur = Round((iPict.Height) / 1000, 2)
     
    'MsgBox "Largeur:" & Largeur & " Hauteur:" & Hauteur
     
    'Calcul le % par rapport a la taille voulut et garde le plus petit puis effectue la modification sur l'image
     
     
     
        If (8.48 / Largeur) < (5.31 / Hauteur) Then
            Pourcentage = (8.48 / Largeur)
            Info = "Largeur"
            Else
                Pourcentage = (5.31 / Hauteur)
                Info = "Hauteur"
        End If
     
     
    'MsgBox Pourcentage & Info
     
    ' Insert et redimentionne l'image
     
        Range("S16").Select
        ActiveSheet.Pictures.Insert(Chemin).Select
        Selection.ShapeRange.ScaleHeight Pourcentage, msoFalse, msoScaleFromTopLeft
     
    ' Centre l'image
        If Info = "Largeur" Then
            Decallage = ((5.31 - (Hauteur * Pourcentage)) / 2) * 28.35
            Selection.ShapeRange.IncrementTop Decallage
            Else
                Decallage = ((8.48 - (Largeur * Pourcentage)) / 2) * 28.35
                Selection.ShapeRange.IncrementLeft Decallage
        End If
     
    End Sub
    1) Le problème survient lors se que je sélectionne des images d'une définition différente de 96ppp. La fonction iPict ne me retourne plus la bonne valeur.
    2) Le problème se pose aussi si je sélectionne une image trop grande car au moment de l'insertion de l’image sur excel celle ci est automatiquement redimensionner. La ligne de code (42) qui retaille mon image est donc erroné car elle fonctionne uniquement pour une image a 100% de sa taille.

    Je cherche donc:
    1)Une fonction pour me donner la définition de l'image ou autre solution.
    2)A empêcher le redimensionnement de l'image lors de son insertion.

    Merci de votre lecture et attention.
    PS: Désolé pour l’orthographe.

  2. #2
    Expert confirmé
    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
    Par défaut
    Salut,regarde dans la FAQ.
    il y a
    .LockAspectRatio = msoFalse
    à basculer en
    msoTrue
    Sinon 96 ppp veut dire 96 points pour 2.54 cm ( 1 pouce )

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut Ce que tu cherche
    Bonjour
    Ce que tu cherche a faire existe deja
    Fait une recherche dans les contributions
    J'avais fait ca il y a au moins deux ans pour reduire le poid de es photos en haute qualité. Mon app photo rendais des photos. Acec un poid de 15mega parfois
    Fat une recherche dans les contributions avec pour indice(photo resize)
    Bonne continuation
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre régulier
    Homme Profil pro
    Apprentie en programmation
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Apprentie en programmation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Par défaut
    Merci KIKI29 pour ta réponse cependant ta réponse ne correspond pas hélas a ma question.
    J'arrive parfaitement a ne pas écraser l'image (garder ses proportion). Ce que je ne parviens pas a faire c redimensionner l'image en fonction de sa définition. C'est pourquoi il me faudrait une fonction permettant de récupérer la définition de l'image directement.
    PS: merci pour le 96ppp = 2.54 cm. Cela explique certaine chose ^^

    Merci patricktoulon, je vais regarder dans les contributions en espérant trouver ma solution.

Discussions similaires

  1. [XL-2007] adapter la taille d'une image en fonction de la taille de l'ecran
    Par rayba89 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/09/2014, 19h34
  2. Agrandir une image en fonction e la taille d'une div
    Par rolls dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 25/02/2013, 16h33
  3. Réponses: 0
    Dernier message: 27/04/2010, 15h50
  4. Réponses: 1
    Dernier message: 13/02/2010, 19h49
  5. Redimensionner une image en fonction de la taille de l'écran
    Par vva dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/01/2009, 17h03

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