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 :

Récupérer le nom d'un objet OLE dans une cellule en fonction d'une sélection de liste déroulante


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Par défaut Récupérer le nom d'un objet OLE dans une cellule en fonction d'une sélection de liste déroulante
    Bonjour,
    J'ai un souci avec une MACRO.
    Je suis débutant donc, soyez indulgent SVP.
    J'ai une liste déroulante sur ma page 1 qui doit afficher un PDF par item.
    La liste est liée à une liste sur la page 2 appelée "liste" où sont stockés sous forme d'objets OLE les 27 PDF auxquels je dois accéder.
    J'arrive à afficher un pdf via la MACRO en écrivant directement le n° d'objet (ex. : "Objet 38") mais je ne vois pas du tout comment faire correspondre
    le paramètre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Shapes("Objet 38").Select
    avec l'item de ma liste déroulante.
    Si vous avez une idée, je suis preneur...
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Zonecombinée7_QuandChangement()
      Application.DisplayAlerts = False
      Sheets("cartes").Activate
      ActiveSheet.Shapes("Objet 38").Select
      Selection.Verb Verb:=xlPrimary
      Sheets("Feuil1").Activate
      Application.DisplayAlerts = True
    End Sub
    Merci d'avance

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,

    Pour te répondre efficacement nous devons connaître la nature de ta liste.

    S'agit t'il d'une liste type validation de données, ou mieux d'une combobox (ActiveX) je dis mieux car ce type d'objet dispose d'un élément intéressant le On Change qui permettrais de récupérer plus facilement la modification pour l implémenter dans ton code la valeur, variable, sélectionnée.

    Bat

  3. #3
    Membre actif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Par défaut
    dans mon code ci-dessus, on voit le "quandchangement" qui correspond au "onchange" que vous m'avez décrit.
    C'est une combobox mais ils l'appellent tout simplement Zone Combinée.
    A chaque changement, je lance un nouveau pdf mais je ne sais pas comment récupérer le nom de l'objet correspondant a l'item sélectionné.
    J'ai 27 titres auxquels la liste est attribuée en collonne A.
    La collonne C contient les 27 pdf en objets OLE et les noms des objets avec les guillements (ex "Objet 38").

  4. #4
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Re,

    Tu pourrais faire une copie d'écran de ta feuille avec les objets ect ainsi qu'un second screen shot de ta liste déroulante histoire de voir cmt tes données sont agencées dans ton tableau.

  5. #5
    Membre actif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Par défaut
    J'ai pas acces au pc pour le moment. Je fais ça ce soir.
    Ce qu'il faudrait, c'est de récupérer le n° d'item de la combobox et faire correspondre le nom de l'objet avec la contenu de la case correspondante qui contient ces noms.
    Je suis sùr que c'est simple mais je n'ais rien trouver sur le net pour m'aider.. Merci encore

  6. #6
    Membre actif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Par défaut
    Nom : PAGE1.png
Affichages : 757
Taille : 29,0 Ko
    Nom : PAGE2.png
Affichages : 764
Taille : 31,1 Ko

  7. #7
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Re,

    Il faudrait, selon moi, travailler avec ta liste : au lieu de liste ta colonne A, on listerait A, B, C mais ne laisserais visible dans la liste que la À, la b et c serait invisible dans la liste mais leur valeur accessible.

    Donc en sélectionnant un élément de ta liste on aurait accès au nom de l'objet lié.

    Un exemple de ce que ça pourrait donner, sans avoir testé

    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
     
    'pour initialiser la cbobox
     
      ComboBox1.ColumnCount = Worksheetsk("nom feuille"). Range(A2:C20).Columns.Count
      ComboBox1.ColumnWidths = "50;0;0"
      ComboBox1.List = Worksheetsk("nom feuille").Range(A2:C20). Value
     
    ' lors de la modif de cbobox
     
    Sub ComboBox1_OnChange()
      Choix = ComboBox1.Column(1)
      ShapeName = ComboBox1.Column(3)' on récupère la valeur c cachée correspondant au choix
     
      'ton code d' ouverture avc ces variables récupéré à la place du texte en dur
     
    End Sub
    Ps : pas mal cette idée de récupéré le shape par la valeur de la cellule, pour ma part je travail généralement avec un lien hypertext formulé pour l'ouverture de fichier tiers (pdf, Word, Ppt...)

  8. #8
    Membre actif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Par défaut
    Je travaille sans succès une approche plus brutale et moins smart, du fait de ma méconnaissance d'EXCEL et du BASIC (Je programme en C ..)
    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
    19
    20
    21
    22
    23
    24
    25
    Sub Zonecombinée7_QuandChangement()
      Dim fichier As String
     
      If Zonecombinée7.Selected(1) = True Then
        fichier = "objet 38"
      ElseIf Zonecombinée7.Selected(2) = True Then
        fichier = "objet 5"
      ElseIf Zonecombinée7.Selected(3) = True Then
        fichier = "objet 6"
      ElseIf Zonecombinée7.Selected(4) = True Then
        fichier = "objet 7"
      .
      .
      .
      .
      ElseIf Zonecombinée7.Selected(27) = True Then
        fichier = "objet 35"
      End If
      Application.DisplayAlerts = False
      Sheets("cartes").Activate
      ActiveSheet.Shapes(fichier).Select
      Selection.Verb Verb:=xlPrimary
      Sheets("Feuil1").Activate
      Application.DisplayAlerts = True
    End Sub
    Mais le compilateur me pointe la première ligne If avec le message "Erreur d'exécution 424, Objet requis"
    Je pense que je passe à côté de quelque chose.

    Mon tableau est présenté de façon étrange car j'ai essayé longtemps de faire fonctionner tout ça avec des liens hypertexte mais avec les fichiers intégrés sous forme d'objets OLE, ça ne fonctionnait pas.

    Si je n'y arrive pas comme ça, j'essayerais votre méthode..

  9. #9
    Membre actif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Par défaut
    Résolu...
    Je me mélangeais les pinceaux entre les formules et les macros VBA.
    Du coup, j'ai tout fait en MACRO sur une USER FORM et ça fonctionne nickel.
    Merci des conseils

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/02/2009, 16h20
  2. Réponses: 5
    Dernier message: 10/05/2007, 13h31
  3. Stockage d'OBJET OLE dans une Table Paradox ou Firebird ?
    Par QAYS dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/04/2007, 12h59
  4. Réponses: 2
    Dernier message: 08/03/2007, 10h50
  5. Recuperation des objet ole dans une base SQL
    Par TOPGUN89 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 25/11/2005, 09h14

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