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 :

Copie d'image dans une cellule vers une cellule d'une autre feuille [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    dessinateur
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dessinateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Copie d'image dans une cellule vers une cellule d'une autre feuille
    Bonjour à tous,

    Débutant dans le monde du vba, j'ai créé une petite macro qui permet de copier certaines cellules avec photo vers une autre feuille du fichier.
    La macro fonctionne correctement mais sur certaines cellules, quand l'image associée à la cellule est trop grande, la copie de celle-ci est vide.
    Quand je diminue la taille de la photo à la main sur la première page et que je relance la macro, la cellule avec l'image est bien copiée sur l'autre feuille.
    Quand je redimensionne la photo via les paramètres hauteur/largeur, je perds le lien de l'image avec la cellule.
    Je ne vois pas quelle piste prendre pour redimensionner toutes les photos de la feuille 1 en gardant le lien avec la cellule.
    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 134
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 134
    Points : 1 808
    Points
    1 808
    Par défaut
    Bonjour à tous,
    Citation Envoyé par natsamfa Voir le message
    La macro fonctionne correctement mais sur certaines cellules, quand l'image associée à la cellule est trop grande, la copie de celle-ci est vide
    Je suppose que tu utilise la propriété TopLeftCell et donc si ton image est plus grande que la cellule tu ne choisis pas la bonne cellule.
    Mets nous ton code si tu veux plus de précisions.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    dessinateur
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dessinateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Dans un premier temps, merci pour ta réponse.
    J'ai un fichier avec plusieurs images dans des cellules, les images sont toujours après une cellule colorée.
    Je souhaite récupérer les images avec la cellule colorée.
    Donc j'ai fait une petite macro qui copie les cellules trouvées dans une feuille 2.
    Le problème vient du fait que quand certaine image sont trop grande, l'image n'est pas copiée.
    J'ai fait un fichier simplifié de test avec la macro
    Quand on lance la macro, le résultat est sur la feuille 2.
    En cellule B4 et D6, j'aurai aimé avoir le smiley rouge redimensionné comme le vert.
    Il faut supprimer la feuille 2 pour pouvoir réutiliser la macro
    Fichiers attachés Fichiers attachés

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 134
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 134
    Points : 1 808
    Points
    1 808
    Par défaut
    Bonjour,

    Citation Envoyé par natsamfa Voir le message
    En cellule B4 et D6, j'aurai aimé avoir le smiley rouge redimensionné comme le vert.
    Sauf que comme je te disais, ils ne sont pas positionnés sur ces cellules mais en E3 et I1 et non E6 et I4 comme tu le souhaiterais car l'ancrage de l'image est défini par sa position TopLeftCell, c'est-à-dire la cellule qui contient sa position en haut à gauche.
    Plutôt que de te baser sur la couleur des cellules pour copier tes images, il te faut faire une boucle sur les images, récupérer le TopLeftCell de l'image et copier la cellule correspondante.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    dessinateur
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dessinateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    C'était bien un problème de positionnement de l'image dans la cellule.
    Pour la récupération des photos, dans le fichier maitre il y a plusieurs photos mais j'ai besoin de récupérer seulement celles avec une couleur dans la cellule de gauche.
    Donc le tri des cellules à copier est toujours d'actualité.
    Le fichier de test n'est pas vraiment semblable au fichier maitre, je vais essayer d'en faire un autre car dans le fichier maitre, les photos sont ajustées à la taille de la cellule.
    Celles qui pose problème sont celles qui ont une taille avec un pourcentage supérieure à 100%.
    Elles ne sont donc pas copiées avec la macro dans la cellule.

    Voila j'ai refait un fichier test en essayant de respecter les caractéristiques photos.
    Toutes les photos ont comme particularités d'être redimensionnable avec la cellule, elles ont été ajustées avec l'échelle pour s'adapter à la taille de la cellule.
    Les pourcentages haut/bas ne sont pas proportionnés.
    L'ancrage de la photo est bien en haut à gauche.
    Pour celles qui posent problème, le pourcentage de hauteur est disproportionné, la photo est étirée pour prendre plusieurs hauteurs de cellules et son ancrage n'est pas défini.
    on a l'impression que le smiley rouge a un ancrage en G1 ou D3 mais en essayant de colorier F1 ou C3, la macro ne copie rien non plus.
    Je suis débutant en VBA, je ne sais pas comment rechercher un objet photo dans une feuille excel.
    J'ai désactivé le formalisme des cellules sur la feuille2 en pensant que ça changerait quelque chose, mais non, les photos se redimensionnent sauf les smiley rouge.
    Je sèche un peu
    Fichiers attachés Fichiers attachés

  6. #6
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 134
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 134
    Points : 1 808
    Points
    1 808
    Par défaut
    Bonsoir,
    Citation Envoyé par natsamfa Voir le message
    C'était bien un problème de positionnement de l'image dans la cellule.
    Pas tout à fait, c'est parce que ton haut d'image est plus haut que ta cellule colorée testée.

    Citation Envoyé par natsamfa Voir le message
    Pour la récupération des photos, ...mais j'ai besoin de récupérer seulement celles avec une couleur dans la cellule de gauche.
    J'ai tenu compte de la cellule de gauche colorée et tu peux tester cette macro qui copie bien toutes les images et la cellule de gauche
    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
    Public Sub copier_images()
    Dim img As Object, w1 As Worksheet, w2 As Worksheet, htr As Long, pos As Long
        Set w1 = Sheets(1)
        If Sheets.Count < 2 Then
            Sheets.Add After:=Sheets(Sheets.Count) 'creation feuille
        End If
        Set w2 = Sheets(2)
        For Each img In w2.Shapes
            img.Delete
        Next img
        w2.Cells.Clear
        w2.Activate
        For Each img In w1.Shapes
            htr = img.Height: pos = img.TopLeftCell.Row
            While htr > 0
                htr = htr - Rows(pos).Height
                If w1.Cells(pos, img.TopLeftCell.Column - 1).Interior.Color <> RGB(255, 255, 255) Then
                    w1.Cells(pos, img.TopLeftCell.Column - 1).Copy _
                        Destination:=w2.Cells(pos, img.TopLeftCell.Column - 1)
                    img.Copy
                    w2.Range(img.TopLeftCell.Address).Activate
                    w2.Paste
                    htr = 0
                End If
                pos = pos + 1
            Wend
        Next img
    End Sub
    Ce code te donnera j'espère des idées pour avancer dans ton projet.
    Je t'ai mis la création et la remise à zéro de ta feuille 2 si existante.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    dessinateur
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dessinateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Un grand merci pour ta participation, je n'avais pas encore vu ton message.
    Quand j'ai testé ta macro, elle arrive bien à récupérer les images trop grande.
    C'est super !!!
    Je pense que je vais pouvoir piocher dans ce code et adapter ma macro.
    Faut juste que je comprenne toutes les subtilités mais je suis sur la bonne voie.
    Encore merci

  8. #8
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 134
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 134
    Points : 1 808
    Points
    1 808
    Par défaut
    Bonsoir,

    Merci du retour et si tu as des éclaircissements à demander, n'hésites pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Recopie une valeur vers des cellules vides
    Par bchar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/12/2013, 11h30
  2. Réponses: 2
    Dernier message: 25/03/2009, 15h32
  3. Réponses: 5
    Dernier message: 20/11/2006, 17h45
  4. Copie d'images dans le presse papier
    Par Tiwaz dans le forum C++Builder
    Réponses: 16
    Dernier message: 31/10/2006, 19h08

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