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 :

Code VBA pour ouvrir la fenêtre "Objet" dans l'onglet insertion [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2018
    Messages : 21
    Points : 0
    Points
    0
    Par défaut Code VBA pour ouvrir la fenêtre "Objet" dans l'onglet insertion
    Bonjour,

    Je suis tout nouveau et je ne sais pas si je suis au bon endroit.

    Pour avoir fait une semaine de recherche sur le sujet et pour n'avoir rien trouvé j'ai une petite question.
    Je suis un débutant dans le codage VBA et autres codages d'ailleurs.

    J'ai un userform avec une interface que j'ai créée, l'un de mes boutons doit servir à ajouter un fichier quelconque (word, pdf, image, text etc ....) dans une cellule Excel. Pour se faire on ajoute normalement un "objet", onglet insertion sur Excel.

    Ma question est, existe-t-il-il un code VBA pour ouvrir cette fenêtre et ajouter le fichier de la même manière avec l'icone sur une cellule ? Ou un code VBA qui me permettrait d'ajouter un fichier quelconque dans une cellule et de faire la mise en page en même temps ?


    j'ai regardé pas mal de sujet pour ajouter un fichier en particulier mais moi je doit pouvoir choisir le fichier que je veux ajouter.

    Merci de votre aide.



    EDIT : En continuant à chercher j'ai trouvé ça ==> Application.Dialogs(xlDialogInsertObject).Show en utiliser sur mon bouton et cela ouvre bien ma boite de dialogue pour ajouter l'objet que je veux

    Par contre j'aimerais faire une mise en page automatique, c'est à dire que l'icone doit être de la bonne taille et lié dans une cellule.
    Donc j'aimerais que les fichiers ajoutés correspondent à la ligne qui vient d'être ajouté par une textbox et que l'icone soit lié à une cellule et d'une certaine taille. Tout ca de façon automatique.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Pour choisir un fichier :
    https://msdn.microsoft.com/fr-fr/VBA...e-method-excel

    Pour insérer un objet :
    https://msdn.microsoft.com/fr-fr/lib.../ff197177.aspx
    https://msdn.microsoft.com/fr-fr/VBA...s-object-excel
    https://msdn.microsoft.com/fr-fr/VBA...d-method-excel
    https://msdn.microsoft.com/fr-fr/VBA...t-object-excel

    Tu peux aussi voir du côté de la propriété Dialog avec comme paramètre xlDialogInsert ou xlDialogInsertObject.
    https://msdn.microsoft.com/fr-fr/VBA...property-excel
    https://msdn.microsoft.com/fr-fr/VBA...s-object-excel
    https://msdn.microsoft.com/fr-fr/VBA...meration-excel

    Citation Envoyé par ptitdal Voir le message
    Par contre j'aimerais faire une mise en page automatique, c'est à dire que l'icone doit être de la bonne taille et lié dans une cellule.
    Pour la taille et la position, voir les propriétés de OLEObject dans les lien ci-dessus.
    Pour ce qui est de le "lié" à une cellule, ce n'est pas possible. C'est comme pour une image : on peut seulement placer l'objet "sur" la cellule vidée mais pas l'intégrer "dedans".
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2018
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Pour choisir un fichier :
    https://msdn.microsoft.com/fr-fr/VBA...e-method-excel

    Pour insérer un objet :
    https://msdn.microsoft.com/fr-fr/lib.../ff197177.aspx
    https://msdn.microsoft.com/fr-fr/VBA...s-object-excel
    https://msdn.microsoft.com/fr-fr/VBA...d-method-excel
    https://msdn.microsoft.com/fr-fr/VBA...t-object-excel

    Tu peux aussi voir du côté de la propriété Dialog avec comme paramètre xlDialogInsert ou xlDialogInsertObject.
    https://msdn.microsoft.com/fr-fr/VBA...property-excel
    https://msdn.microsoft.com/fr-fr/VBA...s-object-excel
    https://msdn.microsoft.com/fr-fr/VBA...meration-excel


    Pour la taille et la position, voir les propriétés de OLEObject dans les lien ci-dessus.
    Pour ce qui est de le "lié" à une cellule, ce n'est pas possible. C'est comme pour une image : on peut seulement placer l'objet "sur" la cellule vidée mais pas l'intégrer "dedans".
    Je ne suis pas d'accord, quand je fait clic droit propriété de l'objet sur l'icone du fichier, je peux faire "déplacer et dimensionner avec les cellules", en tout cela suffis pour ce que j'ai à en faire.

    Merci pour la réponse, je regarde cela dès lundi !

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Pense aussi à l'enregistreur de macro qui pourra te donner une base de code pour travailler.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Je ne suis pas certain d'avoir parfaitement "cerné" ton besoin.
    S'agirait-il en fait d' "ouvrir" l'objet inséré ? -->> si oui, utiliser sa méthode Verb (rubrique OLEObject.Verb, méthode de ton aide interne VBA).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2018
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Salut

    Pense aussi à l'enregistreur de macro qui pourra te donner une base de code pour travailler.

    ++
    Qwaz
    Déjà essayé, j'suis un noob mais j'ai un peu cherché avant

    Citation Envoyé par unparia Voir le message
    Bonjour
    Je ne suis pas certain d'avoir parfaitement "cerné" ton besoin.
    S'agirait-il en fait d' "ouvrir" l'objet inséré ? -->> si oui, utiliser sa méthode Verb (rubrique OLEObject.Verb, méthode de ton aide interne VBA).
    Oui c'est ca l'idée, de mettre un fichier avec une extension quelconque, avoir un icône pour l'ouvrir dans ma feuille excel, mais je ne sais pas comment faire la mise en page automatiquement en cliquant sur le bouton.
    En sachant que le code "Application.Dialogs(xlDialogInsertObject).Show" fonctionne pour ouvrir la boite de dialogue pour l'ajout d'objet, il me manque un truc pour faire la mise en page quand j'ajoute le l'icone
    Par contre je précise une nouvelle fois que je suis pas un exper, je ne fait pas de codage informatique et je me débrouille tout seul pour le coup! Ca veut dire que j'ai rien compris à ce que tu m'as dis

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par ptitdal Voir le message
    il me manque un truc pour faire la mise en page quand j'ajoute le l'icone
    Un des liens que je t'ai transmis donne la liste des propriétés d'un objet inséré.
    Voir en particulier les propriétés Top et Left.
    https://msdn.microsoft.com/fr-fr/VBA...t-object-excel
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2018
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Un des liens que je t'ai transmis donne la liste des propriétés d'un objet inséré.
    Voir en particulier les propriétés Top et Left.
    https://msdn.microsoft.com/fr-fr/VBA...t-object-excel
    Super, avec les enregistrement de macros et ce que j'ai compris sur les liens que tu m'as donné j'ai pu faire ce que je voulais, enfin presque
    Il me manque une petite chose, comment connaitre le numéro de l'objet que j'ajoute à chaque fois ? Est-ce que je dois créer un petit compteur en interne de mon programme pour lui affecter une variable de type integer et nommer le numéro de mon objet comme la variable ?

    Ou y a t il un moyen de selectionner l'objet que l'on vient d'ajouter directement ?

    Le but de cette demande est de lier l'objet que j'ajoute en dernier à la cellule à laquelle je l'affecte.

    Pour être claire, j'ajoute un objet via une interface graphique créée sur VBA, quand je clique sur le bouton, ça m'ouvre la page d'ajout d'objet, ensuite ca fait la mise en page avec la taille de l'icone et la hauteur de la ligne et il me manque juste ca

  9. #9
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Il sera plus facile de te répondre si tu fournis le code que tu utilises, en fonctions des solutions que tu as choisi, il y a souvent une collection qui englobe les objets placé sur une feuille. Cette collection à très souvent une propriété count qui permet de retourner le nombre d'objets qu'elle contient.

    PS: Ne le prend pas mal pour l'enregistreur, beaucoup de gens ne s'en servent pas (voir même ne connaissent pas son existence) et pourtant personnellement je trouve que c'est un gain de temps pour trouver les écritures pour une fonction ou mode opératoire donné.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Dialog est une propriété bien pratique qui fait beaucoup de chose en peu de code et peu d'efforts.
    Le problème, c'est qu'elle ne permet pas de contrôler ce qui se produit.

    C'est la raison pour laquelle je t'ai conseillé d'utiliser OLEObjects.Add pour insérer un objet.
    Avec cette méthode tu peux mettre le résultat dans une variable de type Objetct et avec une référence facilement accessible aux traitements ultérieurs.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2018
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Dialog est une propriété bien pratique qui fait beaucoup de chose en peu de code et peu d'efforts.
    Le problème, c'est qu'elle ne permet pas de contrôler ce qui se produit.

    C'est la raison pour laquelle je t'ai conseillé d'utiliser OLEObjects.Add pour insérer un objet.
    Avec cette méthode tu peux mettre le résultat dans une variable de type Objetct et avec une référence facilement accessible aux traitements ultérieurs.
    Je n'ai pas réussi à utiliser ce que tu m'a proposé, je débute dans tout ça depuis seulement une semaine, mais au final ca revient au même que de créer une variable et contrôler le numéro de de l'objet que je veux définir.

    Pour l'instant mon code ressemble à ca
    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
     
    '***************************************************************
    'Ajouter un fichier externe dans le fichier excel + mise en page
    '***************************************************************
     
    Private Sub CommandButton2_Click()
     
     
    Range("c65536").Select
    Selection.End(xlUp).Select
    ActiveCell.Offset(1, 1).Select
    ActiveCell.RowHeight = 100.5
     
     
     
    Application.Dialogs(xlDialogInsertObject).Show 'ouverture de la boite de dialogue pour ajouter un fichier
     
     
    '------------------------------------------------------
    'dimmensionnement de l'objet ajouté (macro enregistrée)
    '------------------------------------------------------
     
       ' ActiveSheet.Shapes("Object 19+x").ScaleWidth 0.4563655031, msoFalse, _
            msoScaleFromBottomRight
       ' ActiveSheet.Shapes("Object 19+x").ScaleHeight 0.4563656014, msoFalse, _
            msoScaleFromBottomRight
       ' ActiveSheet.Shapes("Object 19+x").IncrementLeft -792
        'ActiveSheet.Shapes("Object 19+x").IncrementTop -154.5
        'ActiveSheet.Shapes("Object 19+x").ScaleWidth 0.093742298, msoFalse, _
            msoScaleFromBottomRight
        'ActiveSheet.Shapes("Object 19+x").ScaleHeight 0.0937422727, msoFalse, _
            msoScaleFromBottomRight
        'ActiveSheet.Shapes("Object 19+x").ScaleHeight 5.25, msoFalse, _
            msoScaleFromBottomRight
        'ActiveSheet.Shapes("Object 19+x").ScaleWidth 1.1759483688, msoFalse, _
            msoScaleFromBottomRight
        'ActiveSheet.Shapes("Object 19+x").IncrementLeft -536.25
        'ActiveSheet.Shapes("Object 19+x").IncrementTop -36.75
     
     
    '--------------------------------------------------------------
    'déplacement et dimmensionnement avec la cellule selectionnée
    '--------------------------------------------------------------
     
     ActiveSheet.Shapes.Range(Array("Object z")).Select
        With Selection
            .Placement = xlMoveAndSize
            .PrintObject = True
        End With
     
     
    End Sub
    Ca fonctionne sauf que mon numéro d'objet noté "z" en bas doit s'incrémenter de 1 à chaque ajout

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par ptitdal Voir le message
    mais au final ca revient au même que de créer une variable et contrôler le numéro de de l'objet que je veux définir.
    Si tu l'dis...

    Perso, je pense que tu auras de grosse difficultés à obtenir la référence de l'objet implanté avec Dialog.
    Mais il est possible que ce soit moi qui me trompe. L'avenir le dira.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2018
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Si tu l'dis...

    Perso, je pense que tu auras de grosse difficultés à obtenir la référence de l'objet implanté avec Dialog.
    Mais il est possible que ce soit moi qui me trompe. L'avenir le dira.
    C'est qu'une supposition de ma part

    Du coup la syntaxe pour OLEobject ca serait quoi ?
    J'arrive au même résultat ?

  14. #14
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par ptitdal Voir le message
    Du coup la syntaxe pour OLEobject ca serait quoi ?
    Lis les liens que j'ai fourni.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2018
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Lis les liens que j'ai fourni.
    Si je redemande c'est que je n'ai pas compris ce qu'il ya d'écrit sur tes lien, moi je suis Electrotechnicien pas informaticien, pour moi ca veut rien dire tout ca ^^

    J'ai trouvé un truc qui ressemble assez à ce que je veux faire

    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
    Dim Obj As OLEObject
     
    Dim Chemin As Variant
     
    Dim T As String
     
        Chemin = Application.GetOpenFilename(Title:="Parcourir")
     
        If Chemin = False Then Exit Sub
     
        Application.ScreenUpdating = False
     
     
     
        With ActiveSheet
     
            On Error Resume Next
     
            .Name = Left(Mid(Chemin, InStrRev(Chemin, "") + 1), 31)
     
     
            Set Obj = .OLEObjects.Add(Filename:=Chemin, Link:=True, DisplayAsIcon:=True)
     
        End With
     
        Application.ScreenUpdating = True
    Sauf que l'icone que Excel m'affiche est un icone très grand et blanc (sans l'image du type de fichier)
    Entre autre, j'avais le même bug quand j'utilisais la fenetr d'insertion d'objet mais que quand je liais le fichier à l'icone. j'ai essayé de mettre link = false dans ce code ci mais ca ne change rien.

  16. #16
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Supprime le On Error Resume Next et regarde ce que contient la variable.

    moi je suis Electrotechnicien pas informaticien
    Moi non plus je ne suis pas informaticien, comme la grande majorité de ceux qui utilisent VBA.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2018
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Supprime le On Error Resume Next et regarde ce que contient la variable.


    Moi non plus je ne suis pas informaticien, comme la grande majorité de ceux qui utilisent VBA.
    Ca me met une erreur et du coup ca fait rien

    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Name = Left(Mid(Chemin, InStrRev(Chemin, "") + 1), 31)
    est en jaune


    avec ca ca marche mais j'ai toujours mon icone qui est grand et sans l'image de l'icone

    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
    Dim Obj As OLEObject
    Dim Chemin As Variant
    Dim T As String
     
        Chemin = Application.GetOpenFilename(Title:="Parcourir")
     
        If Chemin = False Then Exit Sub
     
        Application.ScreenUpdating = False
     
     
     
        With ActiveSheet.Name = Left(Mid(Chemin, InStrRev(Chemin, "") + 1), 31)
     
     
            Set Obj = ActiveSheet.OLEObjects.Add(Filename:=Chemin, Link:=False, DisplayAsIcon:=True)
     
        End With
     
        Application.ScreenUpdating = True
    Et je regarde comment en fait ce que contient la variable ?



    EDIT

    En enregistrant une macro, j'ai remarqué que quand je redimensionnait à la main l'objet ajouté avec la commande OLEOjbect, ce n'était pas le même nom qu'avec la fenetre d'insertion d'objet
    Dans le code j'ai pris l'objet insérer avec le code copié précédemment et j'ai obtenu ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        ActiveSheet.Shapes("AutoShape 9").IncrementLeft -288.75
        ActiveSheet.Shapes("AutoShape 9").IncrementTop -46.5
    Pour l'autre objet j'ai obtenu ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.Shapes("Object 3").IncrementLeft -6
        ActiveSheet.Shapes("Object 3").IncrementTop -1.5
    Le nom entre parenthèse n'est pas le même, Est-ce une piste à mon problème d'icone ?

  18. #18
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par ptitdal Voir le message
    Et je regarde comment en fait ce que contient la variable ?
    Il y a plusieurs méthode.
    La plus simple est d'aller regarder dans la fenêtre de variables locales lorsque se produit le bug (ne pas cliquer sur "Terminer").

    Le mieux est de mettre un point d'arrêt dans le code sur la ligne qui précède celle qui cause le bug.

    Tu peux aussi faire un affichage dans la fenêtre d'exécution en utilisant l'instruction Debug.Print.
    Ou utiliser un MsgBox, mais c'est moins bien parce que ça provoque un arrêt à valider.

    Il doit y avoir trois ou quatre autres méthode.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  19. #19
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Tu as aussi les espions mais dans le cas qui nous intéresse, je pense que ça ne sera pas nécessaire, je pense qu'il faut juste que tu regardes dans l'aide VBA l'utilisation de With

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ActiveSheet.Name = Left(Mid(Chemin, InStrRev(Chemin, "") + 1), 31)
    Comme quoi ne mettre qu'un bout de la ligne qui provoque l'erreur n'est pas une bonne idée

    Il faut aussi regarder ce instrRev, parce que rechercher une chaine vide "" dans un texte, je ne suis pas sûr que ça fasse exactement ce que tu attends.

    Peux tu fournir un fichier Démo stp?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2018
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Salut

    Tu as aussi les espions mais dans le cas qui nous intéresse, je pense que ça ne sera pas nécessaire, je pense qu'il faut juste que tu regardes dans l'aide VBA l'utilisation de With

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ActiveSheet.Name = Left(Mid(Chemin, InStrRev(Chemin, "") + 1), 31)
    Comme quoi ne mettre qu'un bout de la ligne qui provoque l'erreur n'est pas une bonne idée

    Il faut aussi regarder ce instrRev, parce que rechercher une chaine vide "" dans un texte, je ne suis pas sûr que ça fasse exactement ce que tu attends.

    Peux tu fournir un fichier Démo stp?

    ++
    Qwaz
    Très honnêtement je ne fait que reprendre des bouts de code que je trouve sur internet et que j'adapte à ma sauce pour faire ce que je veux. Bon c'est pas très catholique mais ca fonctionne plutôt bien, je bloque juste sur ce problème de mise en page de l'icone et d'ajout de fichier (en forme d'icone donc). Je vous transfert mon fameux fichier (en demo du coup sinon c'est trop lourd) pour que vous regardiez un peu.


    EDIT :

    Je pense avoir un peu compris d'où vient le problème, le soucis c'est que je ne dit pas à mon code quel icone prendre, du coup il n'en met pas et il ne peut pas faire la mise en page de mon fichier ajouté correctement, d'où le grand carré blanc. Il faudrait une variable qui sélectionne l'icone voulu en fonction du type de fichier. je ne sais pas si c'est possible mais ca me semble compliqué... Sinon je peux donner qu'un seul icone pour tous les fichiers que j'ajoute mais c'est pas très jolie.
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2013] Soucis code vba pour ouvrir doc word grace a access
    Par vinkey_33 dans le forum VBA Access
    Réponses: 5
    Dernier message: 17/01/2018, 12h08
  2. [XL-2007] Recheche code vba pour ouvrir la fenetre de trie
    Par nicogef dans le forum Excel
    Réponses: 1
    Dernier message: 09/09/2015, 12h20
  3. [XL-2003] Code VBA pour ouvrir Utilitaire d'analyse
    Par isteph32 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/09/2010, 20h24
  4. Code Vba pour ouvrir un fichier XML
    Par nomade333 dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/03/2008, 12h38

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