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 une selection d'image


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Logisticien
    Inscrit en
    Octobre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Logisticien

    Informations forums :
    Inscription : Octobre 2024
    Messages : 8
    Par défaut Redimensionner une selection d'image
    Bonjour,
    mon classeur Excel contient environ 300 feuilles.
    Sur chaque feuille, il y a 2 images.
    J'aimerais sélectionner juste une seule image par feuille et les redimensionner à taille égale.
    J'ai trouvé un bout de code sur le forum qui me permet de sélectionner la bonne image grâce à son emplacement sur la feuille, mais seulement sur la feuille active.

    Sub Dimension()
    For Each s In ActiveSheet.Shapes
    If Not Intersect(s.TopLeftCell, Range("$A$1:$T25")) Is Nothing Then
    s.Select False
    End If
    Next s
    End Sub

    Comment adapter ce code de façon a élargir la sélection sur toutes les feuilles et y insérer les dimensions que je veux?

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 157
    Par défaut
    Hello,
    il est bizarre ton code :
    1 - tu fais un shape select avec replace à false ce qui veut dire que tu étends la sélection avec l'objet précédemment sélectionné.
    2 - On ne voit pas de code de redimensionnement.

    si il y a deux images par feuille : où se situent ces deux images (plages) ? toujours au même endroit ?

    Ami calmant, J.P

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Logisticien
    Inscrit en
    Octobre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Logisticien

    Informations forums :
    Inscription : Octobre 2024
    Messages : 8
    Par défaut
    Bonjour,
    sur chaque feuilles, les images se trouvent toujours au même endroit.

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 157
    Par défaut
    Pour pouvoir t'aider il faudrait voir à quoi ressemble ton classeur avec seulement 2 ou trois feuilles. Si il y a des données confidentielles les enlever. Pour les images si elles sont confidentielles :
    cliquer droit sur l'image puis faire changer d'image / A partir d'icones et choisir n'importe quelle icone.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Logisticien
    Inscrit en
    Octobre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Logisticien

    Informations forums :
    Inscription : Octobre 2024
    Messages : 8
    Par défaut
    Voici un exemple de classeur.
    J'aimerai redimensionner à la même taille, sur toutes feuilles , seulement l'image se situant en haut de la feuille.
    Merci pour ton aide
    Fichiers attachés Fichiers attachés

  6. #6
    Membre chevronné
    Inscrit en
    Avril 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 258
    Par défaut
    Bonjour Willo83, jurassic pork, le forum,

    Une proposition ci-dessous :
    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
    Public Sub RedimFirstShapes()
    Dim shp As Shape
    Dim ws As Worksheet
        For Each ws In ThisWorkbook.Worksheets
            Set shp = GetTopShape(ws)
            If Not shp Is Nothing Then
                shp.Width = 15
                shp.Height = 15
            End If
        Next ws
    End Sub
     
    Private Function GetTopShape(ws As Worksheet) As Shape
    Dim topRow As Long
    Dim shp As Shape
        topRow = ws.Rows.Count
        For Each shp In ws.Shapes
            If shp.TopLeftCell.Row < topRow Then
                topRow = shp.TopLeftCell.Row
                Set GetTopShape = shp
            End If
        Next shp
    End Function
    A+

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Logisticien
    Inscrit en
    Octobre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Logisticien

    Informations forums :
    Inscription : Octobre 2024
    Messages : 8
    Par défaut
    Bonjour mromain!
    Ton code fonctionne très bien. Merci beaucoup.
    Pourrais tu y ajouter cet élément:
    -je souhaite que les images soient positionnées toute au même endroit , coin haut gauche dans l'angle gauche de la cellule H2

    Si je veux sélectionner uniquement l'image du bas, quelle modification dois je apporter au code?

    Merci.

  8. #8
    Membre chevronné
    Inscrit en
    Avril 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 258
    Par défaut
    Re-bonjour,

    Voici le code modifié et à adapter :
    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
    Public Sub RedimShapes()
    Dim shp As Shape
    Dim ws As Worksheet
        For Each ws In ThisWorkbook.Worksheets
            'shape du haut
            Set shp = GetFirstShape(ws)
            If Not shp Is Nothing Then
                shp.Width = 75
                shp.Height = 75
                shp.Top = ws.Range("H2").Top
                shp.Left = ws.Range("H2").Left
            End If
            'shape du bas
            Set shp = GetFirstShape(ws, True)
            If Not shp Is Nothing Then
                shp.Width = 75
                shp.Height = 75
                shp.Top = ws.Range("I20").Top
                shp.Left = ws.Range("I20").Left
            End If
        Next ws
    End Sub
     
    Private Function GetFirstShape(ws As Worksheet, Optional fromBottom As Boolean = False) As Shape
    Dim topRow As Long
    Dim shp As Shape
        topRow = IIf(fromBottom, 0, ws.Rows.Count)
        For Each shp In ws.Shapes
            If ((Not fromBottom) And (shp.TopLeftCell.Row < topRow)) Or (fromBottom And (shp.TopLeftCell.Row > topRow)) Then
                topRow = shp.TopLeftCell.Row
                Set GetFirstShape = shp
            End If
        Next shp
    End Function
    A+

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Logisticien
    Inscrit en
    Octobre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Logisticien

    Informations forums :
    Inscription : Octobre 2024
    Messages : 8
    Par défaut
    Admirable! Un grand bravo!
    Certaines photos ne se sont pas redimensionnées correctement car la case "conserver les proportions" était cochée.
    Pourrait on demander à la macro de décocher avant d'ajuster la taille?
    Merci.

  10. #10
    Membre chevronné
    Inscrit en
    Avril 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 258
    Par défaut
    Re,

    Tu peux le faire en rajoutant cette ligne : shp.LockAspectRatio = False.

    A+

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Logisticien
    Inscrit en
    Octobre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Logisticien

    Informations forums :
    Inscription : Octobre 2024
    Messages : 8
    Par défaut
    Tout est ok de mon côté.
    Merci beaucoup de m'avoir aidé. J'ai gagné un temps fou!

Discussions similaires

  1. Transformer automatiquement une sélection en image GIF
    Par locweb dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 15/07/2021, 13h12
  2. Réponses: 4
    Dernier message: 11/08/2014, 15h52
  3. Redimensionner une selection.
    Par LowLow38 dans le forum Flash
    Réponses: 0
    Dernier message: 16/04/2008, 14h01
  4. [VB.NET] Redimensionner une image proportionnelement
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/10/2004, 13h10
  5. [MX2004] redimensionner une image lors du chargement
    Par ouinouin dans le forum Flash
    Réponses: 8
    Dernier message: 18/02/2004, 19h32

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