Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Powerpoint > VBA PowerPoint
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/05/2011, 17h48   #1
Invité de passage
 
Inscription : avril 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 18
Points : 3
Points : 3
Par défaut Macro complèmentaire sur un dossier unique

Bonjour,

Voila j'ai :

Une macro complementaire appelé compt
et plusieurs présentations avec des noms différents.

Dans chaque préssentation il y a une macro bartrue qui permet de modifier les barre d'outil comme je le veux ( je supprime certains boutons)

Ma macro complementaire contient une macro auto_open qui permet de lancer la macro bartrue au lancement du ma Présentation avec la procédure suivante :

Code :
1
2
3
4
5
auto_open ()
 
application.run("Présentation1!bartrue")
 
end sub
Cette procédure marche parfaitement.

Sauf que problème :

- 1er : Cette procédure marche uniquement avec Présentation1 alors que je voudrais que cela marche avec toutes mes présentations du dossier.

- 2e : Une fois que j'ai chargé ma complementaire sur ma présentation1 elle reste chargée pour tous les autres powerpoint même ceux que je ne veux pas.

Je voudrais que la complèmentaire soit chargée au démarrage uniquement pour les présentations présentent dans le même dossier que celui de la complémentaire sachant que je ne sais pas dans quel dossier la complèmentaire va être mise mais elle sera mise obligatoirement dans le même que mes présentations.

Cordialement
Neoxaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 19h27   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Une macro complémentaire est valable pour l'application, par contre tu peut mettre un code dans l'Auto_Open pour que le reste ne soit opérationnel que dans le répertoire que tu veux.

Pour la première essayes avec ActivePresentation, mais à ne pas mettre entre guillement.

Je n'ai pas testé

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 18h46   #3
Invité de passage
 
Inscription : avril 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 18
Points : 3
Points : 3
Bonjour,

Après plusieurs test, impossible de trouvé,

J'ai essayé comme tu m'as dis :

Code :
application.run (activepresentation!bartrue)
Mais cela me créé une erreur : Propriété ou methode non gérée


Autre test :

Code :
1
2
3
Dim Nom As String
Nom = ActivePresentation.Name
Application.Run ("Nom!bartrue")
Erreur : soit "Propriété ou méthode non gérée" soit il me met aucune erreur mais ne me fait rien non plus soit il me met une erreur "sub or function no defined" car dans ce cas la je pense qu'il cherche une fonction appelé Nom au lieux de chercher ce qu'il y a à l'intèrieur.

Code :
1
2
3
Dim Nom As String
Nom = ActivePresentation.Name
Application.Run (Nom!bartrue)
Erreur : "Le qualificateur doit être une collection" en m'indiquant bartrue

Code :
Activepresentation.application.Run "bartrue"
Rien ne se passe pourtant elle passe bien dedans car j'affiche un message juste avant pour vérifier s'il y passe.

Je comprend pas les erreurs car Nom renvoie bien Présentation1.ppt comme ce que j'avais mis à la base.

Cordialement
Neoxaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 18h38   #4
Invité de passage
 
Inscription : avril 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 18
Points : 3
Points : 3
Bonjour,

J'ai réussi à faire le lancement de la macro complémentaire uniquement quand la présentation est dans le même dossier que celle-ci grâce à une recherche (filesearch) donc il me reste plus qu'à trouver le moyen de lancer la macro de ma présentation active et tout sera terminé. Mais comme dis précédemment j'ai effectué pas mal de test car il me manque plus que ça et impossible de lancer cette macro. Pour l'instant obligé de mettre le nom exacte de la présentation. Mais sachant que des futures présentations vont être créées et que je ne connais pas leur nom je ne peux pas l'écrire avec cela : (code utilisé : application.run("Présentation1.ppt!nom_de_la_macro") )

Alors soit réussir à le généraliser en lançant avec la présentation active soit réussir à écrire dans la macro le nom de la présentation mais là je ne sais pas du tout si c'est possible de modifier le code de la macro avec la macro si c'était possible il suffirai d'écrire au lieux de Présentation1.ppt le nom de la nouvelle présentation.

Cordialement
Neoxaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 18h44   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Je t'avoue que je ne me suis pas trop penché sur ton problème par manque de temps.

Pour écrire du code dans du code, c'est possible, mais je n'ai pas encore testé sous PPT, par contre une piste sous Excel : Visual Basic Editor: Manipuler l'éditeur de macros ... par macro

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 20h34   #6
Invité de passage
 
Inscription : avril 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 18
Points : 3
Points : 3
Bonjour,

Voila en m'aidant de ce que tu m'as donné j'ai créé cela :

Code :
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
Dim Ancien As String, Nouveau As String, Cible As String
    Dim i As Integer
 
    Ancien = "Présentation1.ppt"
    Nouveau = ActivePresentation.Name
With AddIns("prsc").Application.VBE.SelectedVBComponent
    For i = 47 To 48
            Cible = .CodeModule.Lines(i, 1)
 
            Cible = Replace(Cible, Ancien, Nouveau)
            .CodeModule.ReplaceLine i, Cible
    Next i
End With
 
Dim adr As String
adr = ActivePresentation.Path
 
With Application.FileSearch
    .NewSearch
    .LookIn = adr
    .SearchSubFolders = False
    .FileName = "prsc.ppa"
    .MatchTextExactly = True
    .FileType = msoFileTypeAllFiles
     If .Execute > 0 Then Application.Run ("Présentation1.ppt!AttachEvents") Else bar
End With
 
    Ancien = ActivePresentation.Name
    Nouveau = "Présentation1.ppt"
With AddIns("prsc").Application.VBE.SelectedVBComponent
    For i = 47 To 48
            Cible = .CodeModule.Lines(i, 1)
            Cible = Replace(Cible, Ancien, Nouveau)
            .CodeModule.ReplaceLine i, Cible
    Next i
End With
Problème, Il me dit variable objet ou bloc with non défini ( après test ce problème arrive quand il entre dans le premier with) ce problème survient quand je lance la présentation avec la complèmentaire chargé.


Quand je lance ce code dans une procédure simple genre sub test() et que je l'a lance j'ai une autre erreur :

(Sachant que mon instruction Application.Run ("Présentation1.ppt!bartrue") que je veux changer se trouve entre les lignes 45 et 58 donc ça va)

Donc au premier lancement, il me change bien comme je le veux en Application.Run ("activepresentation.ppt!bartrue") sauf qu'il me dit "Powerpoint could not open the file" alors qu'il existe bien et donc il devrait l'ouvrir, la preuve,

au 2e lancement donc avec le changement déjà fait au premier lancement, il me lance bien ma macro bartrue. Donc pourquoi quand il fait le changement avant il n'arrive pas à lancer la macro et quand il ne fait pas le changement il y arrive ?

Cordialement
Neoxaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 20h37   #7
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Où as-tu mis ton code ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 01h06   #8
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

As-tu essayé
Code :
Application.Run ActivePresentation.Name & "!Bartrue"
PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/05/2011, 23h29   #9
Invité de passage
 
Inscription : avril 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 18
Points : 3
Points : 3
Bonjour,

Mon code posté est mis dans un module de classe qui se trouve dans ma macro complèmentaire. Pour lancer ma macro qui est dans ma présentation

(PGZ je test ce code demain je dis ce qu'il en est )

Cordialement
Neoxaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 21h36   #10
Invité de passage
 
Inscription : avril 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 18
Points : 3
Points : 3
Bonjour,

Un grand merci PGZ ça marche nikel comme je le veux C'est un peu tordu comme écriture mais ça marche

PS : Merci philippe pour ton aide

Cordialement
Neoxaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h02.


 
 
 
 
Partenaires

Hébergement Web