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 :

Modifier des liens Excel-Pptx par messageBox


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
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2016
    Messages : 46
    Par défaut Modifier des liens Excel-Pptx par messageBox
    Bonjour le forum,

    J'ai récupéré un bout de code pour pouvoir modifier le nom du fichier en lien avec powerpoint.

    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
    Sub ChgLiaisonOle()
     
       Dim Slde As Slide, Shpe As Shape, lNucar As Long, sNewFile As String, sFichierOLE As String, sNewOLE As String
     
       For Each Slde In ActivePresentation.Slides
          For Each Shpe In Slde.Shapes
             If Shpe.Type = msoLinkedOLEObject Then
                sFichierOLE = Mid(Shpe.LinkFormat.SourceFullName, InStrRev(Shpe.LinkFormat.SourceFullName, "\"))
                sNewOLE = Replace(sFichierOLE, "FichierA", "Fichier1") 'pour le remplacement
                sNewFile = ActivePresentation.Path & sNewOLE
                Shpe.LinkFormat.SourceFullName = sNewFile
             End If
          Next Shpe
       Next Slde
       MsgBox sNewFile
    End Sub
    Je souhaiterais pouvoir faire le "Replace" par messageBox pour que chaque utilisateurs puisse faire la modification sans rentrer dans VBA.

    Ce que je souhaite au final :
    Je renomme mon "FichierA" en "Fichier1" (donc je perds le lien vers pptx). [Il existe aussi un fichierB, fichierC...qu'il faudra aussi renommer fichier2, fichier3...]
    Je lance une macro qui m'ouvre un messageBox avec : "De quel fichier voulez-vous modifier le lien ?" (la réponse dans ce cas sera "FichierA" ou "FichierB"...) / "Comment voulez-vous renommer votre lien" (Là on saisie "Fichier1" ou "Fichier2"...).
    En validant par OK, la macro remplace tous les liens s'apellant "FichierA" par "Fichier1"...

    Je précise que ne suis pas programmeur (vous vous en doutez !) mais que à force de lire des bouts de codes j'arrive (plus ou moins) à adapter (des fois...).
    Mais je ne sais pas faire de messageBox avec question/réponse...Et surtout, je ne sais pas si dans ce cas-là il faut mieux la macro sur Excel ou sur Pptx ???
    Dans le cas du code ci-dessus, c'est sur pptx, mais est-ce la meilleur solution ?

    Merci à vous de prendre le temps de me lire.
    Cordialement,

    Gilles

  2. #2
    Expert éminent 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
    Par défaut
    Citation Envoyé par Bob182 Voir le message
    je ne sais pas faire de messageBox avec question/réponse...
    Les MsgBox ne contiennent qu'un message et des boutons. https://docs.microsoft.com/fr-fr/off...sgbox-function
    Elles ne permettent pas de saisie.

    Si on veut ajouter une saisie, il faut passer par une InputBox. https://docs.microsoft.com/fr-fr/off...utbox-function
    Mais ceci non plus ne correspond pas à ton besoin car une InputBox ne peut avoir qu'un seul champ de saisie.
    Et faire plusieurs InputBox à la suite, ce n'est pas très ergonomique.

    Si tu veux plusieurs champs de saisie, il faudra passer par un UserForm.
    Lire ceci : http://silkyroad.developpez.com/VBA/UserForm/

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2016
    Messages : 46
    Par défaut
    Bonjour et merci Menhir,

    Je vais lire ça...

    1ère question qui me vient :
    Lorsqu'on à rempli le UserForm comment dit-on "dès que je valide par OK, la macro reprend" ?

    Cordialement,
    Gilles

  4. #4
    Expert éminent 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
    Par défaut
    En fait, c'est le bouton Ok (ou autre nom) qui lancera le traitement.
    Regarde le chapitre IV-H du lien que je t'ai indiqué.

    Les UserForm, ce n'est pas ma spécialité. Je n'en utilise jamais. Je ne suis donc pas le mieux placer pour te renseigner sur ce sujet.
    Personnellement, je trouve les UF de VBA assez laids et peu ergonomiques et je préfère utiliser directement un onglet "paramètres" dans lequelle la macro vient piocher ses données.

    Autre chose : essaye de consacrer plus 10 min à la lecture des liens donnés avant de poser une question.

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2016
    Messages : 46
    Par défaut
    Je suis en train de me documenter sur les UserForms.

    Mais :

    Comment remplir un Combobox avec la liste des classeurs qui sont liés à un PowerPoint ?

    L'idée étant : Dans mon combobox1 je choisi le nom du classeur que je veux modifier dans une liste de noms (ex : "FichierA") et dans un combobx2 je renseigne le nouveau nom que je veux lui donner (ex : "Fichier1").

    Merci.

    Cordialement,
    Gilles

  6. #6
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2016
    Messages : 46
    Par défaut
    @Menhir :

    Je lis, je lis... Mais je suis au boulot et je fais plein de truc en même temps et j'ai pleins de questions que me viennent au fur et à mesure que je découvre...Désolé.

    Merci.

    Cordialement,
    Gilles

  7. #7
    Expert éminent 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
    Par défaut
    N'oublie pas aussi d'aller visiter l'aide VBA concernant les UserForm : https://docs.microsoft.com/fr-fr/off...icrosoft-forms

  8. #8
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2016
    Messages : 46
    Par défaut
    OK.
    Je laisse de côté les UserBox pour le moment et je passe par un InputBox (merci Menhir).

    Voilà où j'en suis :

    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
    Sub ChgLiaisonOle()
     
       Dim Slde As Slide, Shpe As Shape, lNucar As Long, sNewFile As String, sFichierOLE As String, sNewOLE As String, _
       Obj As Control, reponse As String, Message, Default, MyValue
     
       For Each Slde In ActivePresentation.Slides
          For Each Shpe In Slde.Shapes
             If Shpe.Type = msoLinkedOLEObject Then
                sFichierOLE = Mid(Shpe.LinkFormat.SourceFullName, InStrRev(Shpe.LinkFormat.SourceFullName, "\"))
     
     
                Message = "Entrer le nom du PDV étudié :"
                Title = "InputBox Demo"
                Default = "PDV"
     
                MyValue = InputBox(Message, Title, Default)
     
     
                sNewOLE = Replace(sFichierOLE, "BASE", MyValue) 'pour le remplacement
                sNewFile = ActivePresentation.Path & sNewOLE
                Shpe.LinkFormat.SourceFullName = sNewFile
             End If
          Next Shpe
       Next Slde
       MsgBox sNewFile
    End Sub
    Cela fonctionne bien.
    Je souhaiterais l'améliorer car je dois renseigner le nom du PDV pour chaque Shapes.

    Comment adapter pour que je ne renseigne le nom du PDV qu'une seul fois ?
    Et que ça me change TOUS les noms de fichier contenant "BASE" par le nom du PDV que je renseigne dans l'InputBox...

    Merci.

    Cordialement,
    Gilles

Discussions similaires

  1. [PPT-2016] Modifier des liens Excel dans Powerpoint
    Par Goub-Goub dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 20/05/2018, 10h55
  2. [HTML 4.0] Modifier des liens internes
    Par jeanmarc34 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/07/2009, 10h36
  3. modifier des fichiers Excel compris dans un jar
    Par soulspeace dans le forum Eclipse
    Réponses: 1
    Dernier message: 24/06/2009, 10h28
  4. [XBAP] Comment afficher et modifier des fichiers Excel ?
    Par anthyme dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 22/09/2008, 09h24
  5. [VBA] Modifier des cellules excel en fonction de leur couleur
    Par Tententai dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/03/2007, 18h14

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