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 :

[VBA-E] Inserer un fichier icone dans une forme


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
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut [VBA-E] Inserer un fichier icone dans une forme
    Bonjour,

    J'ai crée un bouton qui me permet d'aller chercher un fichier Pdf et de me l'afficher en t'en qu'icone
    juste ici tout va bien..
    mon problème c'est qu'il va mettre l'icone la ou est la selection
    j'ai donc crée une forme (shape) pour un cadre cible et cela je n'y arrive pas, il me recrée un nouvel objet et pas à la bonne place...
    j'aimerais cibler une forme et pas une cellule car je suis amener a rajouter(ou retirer) des lignes, colonnes du fichier...

    La forme s'apelle Cert1
    voici mon 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
     
    Sub ajoutPdf()
    ' ouvrir un fichier avec l'extention demander
     
     fichier = Application.GetOpenFilename("Fichiers PDF(*.pdf),*.pdf,Fichier .*(*.*),*.*")
     If fichier = False Then Exit Sub
     
     '   With ActiveSheet.Shapes("Cert1").Select    <--- marche pas non plus
     
     'Creation de l'objet 
     
            ActiveSheet.OLEObjects.Add(Filename:= _
             fichier, Link:=False, Displayasicon _
             :=True, IconFileName:= _
             "C:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe", _
             IconIndex:=0, IconLabel:="certificat").Select
    '    End With  <-- lié à With
     End Sub
    C'est possible ?

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    je n'ai pas compris ce que faisait ton code ,

    je te transmet ces bouts de code que tu pourras adapter

    pour effacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        '------------------------------------------------ efface image
        'image a le nom de l'onglet
        For Each s In ActiveSheet.Shapes
          If s.Name = ActiveSheet.Name Then s.Delete
        Next s
    pour inserer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        '------------------------------------------------
        ImageName = ActiveSheet.Pictures.Insert("F:\Calendrier\DB\GRAPH\ImgSystem\ImageTemp.jpg").Name
        ActiveSheet.Shapes.Range(Array(ImageName)).Name = ActiveSheet.Name
        ActiveSheet.Shapes(ActiveSheet.Name).Top = [b4].Top
        ActiveSheet.Shapes(ActiveSheet.Name).Left = [b4].Left
    en fait , tu insères l'icone et tu récupères le nom du contrôle image
    que tu renommes et déplaces
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut
    Salut Mjpmjp

    En faite, mon code me permet d'aller chercher un fichier format Pdf
    qu'il m'insere sous forme d'icone dans mon fichier excel cela fonctionne
    mais il me laisse l'icone dans la cellule selectionnée

    mon probleme c'est que je ne peux pas cibler la destination par cellule car je suis amené à ajouter ou supprimer des lignes/colonnes
    J'aimerai cibler un objet, une forme ou autre pour acceuillir à l'endroit ou je veux ajouter l'icone du fichier.

    Je me pose la question, savoir s'il n'y a pas une autre valeur a mettre dans :
    ActiveSheet.OLEObjects.Add
    au lieu d'ajouter un nouvel objet, je ne peux pas lui dire de remplacer ?
    une idée ?

  4. #4
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Pour modifier l'image d'un contrôle ActiveX situé sur un onglet Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ThisWorkbook.Sheets("Feuil1").Shapes("Cert1").OLEFormat.Object.Object.Picture = LoadPicture("C:\Temp\newpicture.jpg")
    Si vous ne voulez pas partir d'un fichier image mais plutôt d'une icône que vous auriez importée de puis un pdf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ajoutPdf()
        fichier = Application.GetOpenFilename("Fichiers PDF(*.pdf),*.pdf,Fichier .*(*.*),*.*")
        With ThisWorkbook.Sheets("Feuil1")
            Set Shp = .OLEObjects.Add(Filename:=fichier, Link:=False, Displayasicon:=True, _
                                      IconFileName:="C:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe", _
                                      IconIndex:=0, IconLabel:="certificat")
            Shp.CopyPicture xlScreen, xlBitmap
            Set .Shapes("Cert1").OLEFormat.Object.Object.Picture = PastePicture(xlBitmap)
            Shp.Delete
        End With
     End Sub
    ... après avoir récupéré le module modpastepicture de Stephen Bullen et l'avoir intégré à votre fichier (il est disponible ici).

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut
    Je vous envoi le fichier avec les macro ce sera surement plus parlant pour vous
    il s'agit des bouton Word et Pdf sur la droite
    ADD.xlsm (je rajoute en lien le fichier ne marche pas..)

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut
    un petit up :p

    je me repenche sur mon problème initiale

    donc.. j'ai crée un bouton pour aller me chercher un fichier (objet) word ou Pdf pour l'inserer sous excel sous forme d'icones
    cela fonctionne parfaitement
    j'aimerais que l'objet s'insere dans une forme ou autres mais je ne veux pas cibler les cellules mais une forme "cible"

    dans le cas actuel de mon code, l'objet s'insere à la derniere cellule selectionner...

    Merci d'avance

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/03/2010, 13h27
  2. inserer un fichier executable dans une page web
    Par dilamax_1 dans le forum Débuter
    Réponses: 7
    Dernier message: 05/06/2009, 20h53
  3. Réponses: 0
    Dernier message: 25/12/2008, 17h44
  4. Réponses: 1
    Dernier message: 29/04/2006, 16h49

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