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 :

insérer photo dans cellule active [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut insérer photo dans cellule active
    Bonjour,

    J'ai inséré un bouton, et j'aimerais que quand je clic dessus, ça m'ouvre la fenêtre d'insertion image, et quand j'ai choisis le chemin de mon image et que je la valide ; que ça l'insert dans la cellule active.

    Est-ce possible ?

    Je sais que pour ouvrir un lien, on fait comme ça, mais je ne sais pas comment faire pour la récupérer en fonction de la cellule active

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.FollowHyperlink "chemin fichier"

  2. #2
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut
    je crois que j'ai réussi (grâce au FAQ) mais il reste un petit soucis que je n'arrive pas à résoudre. Je vous donne d'abord le code :
    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
     Sub CommandButton1_Click()
        Dim Emplacement As Range
        Dim Img As Object
        Dim ShapeObj As Shape
     
        'Boucle pour supprimer l'ancienne image
        For Each ShapeObj In ActiveSheet.Shapes
            If ShapeObj.Name = "Cible" Then ActiveSheet.Shapes("Cible").Delete
        Next ShapeObj
     
        If Application.Dialogs(xlDialogInsertPicture).Show Then
            'Définit l'emplacement de l'image
            Set Emplacement = ActiveCell
     
            Set Img = ActiveSheet.DrawingObjects(ActiveSheet.Shapes.Count)
     
            With Img.ShapeRange
                'Nommer l'image insérée (Pour la supprimer plus facilement ensuite)
                .Name = "Cible"
                .LockAspectRatio = msoFalse
                .Left = Emplacement.Left
                .Top = Emplacement.Top
                .Height = Emplacement.Height
                .Width = Emplacement.Width
            End With
     
        Else
            MsgBox "Insertion d'image interrompue."
        End If
     
    End Sub
    Ca marche mais, au lieu de me supprimer l'image qu'il y aurait dans la cellule avant d'insérer la nouvelle, ça me supprime toutes les images de ma feuil.

    Comment faire pour qu'il ne supprime que les photos existantes de la cellule active uniquement ?

  3. #3
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Premièrement je supprimerais cette ligne dans ton code
    Vu que tu vas insérer plusieurs images dans différentes cellules, tu ne pourras pas toutes les nommer "Cible".

    Ensuite pour supprimer l'image située dans la cellule active, tu peux faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each ShapeObj In ActiveSheet.Shapes
        If CInt(ShapeObj.Left) = CInt(ActiveCell.Left) And CInt(ShapeObj.Top) = CInt(ActiveCell.Top) Then
            ShapeObj.Delete
            Exit For
        End If
    Next ShapeObj
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut
    je te remercie beaucoup Fring

    Par contre, je te donne mon code après avoir apporté tes modifs et le problème (je suppose que c'est moi qui est dû commettre un erreur) c'est que maintenant si j'ai une image, par exemple en D3, si je me positionne dessus pour avoir cette cellule comme active et bien quand je clique sur le bouton pour insérer la photo elle ne se mets jamais là ou il y en a déjà une, elle ne l'efface pas, elle se mets dans la cellule d'à côté ???
    :
    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
     
        Sub CommandButton1_Click()
        Dim Emplacement As Range
        Dim Img As Object
        Dim ShapeObj As Shape
     
       'Boucle pour supprimer l'ancienne image
        For Each ShapeObj In ActiveSheet.Shapes
        If CInt(ShapeObj.Left) = CInt(ActiveCell.Left) And CInt(ShapeObj.Top) = CInt(ActiveCell.Top) Then
            ShapeObj.Delete
            Exit For
        End If
            Next ShapeObj
     
        If Application.Dialogs(xlDialogInsertPicture).Show Then
            'Définit l'emplacement de l'image
            Set Emplacement = ActiveCell
     
            Set Img = ActiveSheet.DrawingObjects(ActiveSheet.Shapes.Count)
     
            With Img.ShapeRange
                .LockAspectRatio = msoFalse
                .Height = Emplacement.Height
                .Width = Emplacement.Width
            End With
     
        Else
            MsgBox "Insertion d'image interrompue."
        End If
     
    End Sub

  5. #5
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Le problème est que lorsqu'une image est insérée dans la cellule, en cliquant dessus, tu ne sélectionnes pas la cellule mais l'image.

    Pour rendre la cellule active tu dois sélectionner une cellule vide avoisinante et activer la cellule sous l'image via les flèches, ce qui n'est pas très pratique...

    là je manque un peu d'inspiration mais une solution éventuelle serait de passer par une boîte de dialogue dans laquelle tu indiques l'adresse de la cellule de destination

    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
    Sub CommandButton1_Click()
    Dim Celref As String, Emplacement As Range, Img As Object, ShapeObj As Shape
     
    Celref = InputBox("Dans quelle cellule voulez-vous insérer l'image ?" & Chr(10) & "(Indiquez l'adresse de la cellule de destination, par exemple E5)")
     
    'définit l'emplacement de l'image
    Set Emplacement = Range(Celref)
     
    'Boucle pour supprimer l'ancienne image
    For Each ShapeObj In ActiveSheet.Shapes
        If CInt(ShapeObj.Left) = CInt(Emplacement.Left) And CInt(ShapeObj.Top) = CInt(Emplacement.Top) Then
            ShapeObj.Delete
            Exit For
        End If
    Next ShapeObj
     
    If Application.Dialogs(xlDialogInsertPicture).Show Then
        Set Img = ActiveSheet.DrawingObjects(ActiveSheet.Shapes.Count)
     
        With Img.ShapeRange
            .LockAspectRatio = msoFalse
            .Left = Emplacement.Left
            .Top = Emplacement.Top
            .Height = Emplacement.Height
            .Width = Emplacement.Width
        End With
     
    Else
        MsgBox "Insertion d'image interrompue."
    End If
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut
    je te remercie beaucoup, je n'avais pas pensé à ça
    Le problème est que lorsqu'une image est insérée dans la cellule, en cliquant dessus, tu ne sélectionnes pas la cellule mais l'image
    c'est logique quand on y réfléchit et tellement évident que je n'y avais pas pensé.

    Je te remercie en tout cas pour ta solution intermédiaire

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

Discussions similaires

  1. [XL-2003] Insérer une formule de calcul dans cellule active
    Par BtjpsspgrW dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/10/2014, 09h16
  2. insérer une donnée de textbox dans cellule active
    Par Eadriel dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2010, 17h35
  3. [AC-2003] Insérer photo dans formulaires Access 2003
    Par Paolina dans le forum IHM
    Réponses: 0
    Dernier message: 15/07/2009, 18h50
  4. [MySQL] Insérer photo dans un tableau
    Par yanng dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/11/2007, 00h31

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