VB sur Powerpoint 2003, appel de slide [Résolu]

Signaler
Messages postés
10
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010
-
Messages postés
10
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010
-
Bonjour,

Débutante en VB
Je dois construire une présentation powerpoint et y incorporer des procédures avec VB. (powerpoint 2003)

A partir d'une chaîne de caractère contenant le nom de mes slides je souhaite que ces diapos soient appelées les unes à la suite des autres...???

J'ai créé un bouton de commande sur une diapo initiale auquel j'associe une structure de boucle "For...Next". Est-ce réalisable et si oui comment ??
Je souhaite en fait, qu'en cliquant sur un bouton de commande la boucle for next appel en premier lieu une diapo puis une autre....

Je ne sais comment m'y prendre.

Help me please

11 réponses

Messages postés
6992
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 octobre 2020
114
Donc je comprends mieux:

If Réponse 2 fausse (optionbouton) Then
ActivePresentation.Slides(2).Select'slide de réponse 2
ElseIf Réponse 3 fausse (optionbouton) Then
ActivePresentation.Slides(3).Select'slide de réponse 3
'Jusqu'à 15
-
-
-
'et à la fin
Else
ActivePresentation.Slides(1).Select'slide présentation vous rester sur votre questionnaire
End If

Donc il faut que vous mettiez vos optionBouton en conséquences. Vous voyez cela, si vous avez un problème avec vos optionbouton on voit cela ensuite. En gros c'est la marche à suivre
@+
Messages postés
6992
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 octobre 2020
114
Voici un module pour faire une pause:

Sub PauseDateDiff(NbSec As Long)
Dim tempotemp
tempotemp = Now()
Do Until (DateDiff("s", tempotemp, Now()) > NbSec)
DoEvents
Loop
End Sub

Sub test()
PauseDateDiff 5' 5secondes, mettre à votre convenance
End Sub
Utilisation:

Private Sub CommandButton1_Click()

If NoteCorr.Q1 <> Note.Q1 Then
ActivePresentation.SlideShowWindow.View.GotoSlide (8)
test'pause
ActivePresentation.SlideShowWindow.View.GotoSlide (1)'retour au questionnaire
End If

If NoteCorr.Q2 <> Note.Q2 Then
ActivePresentation.SlideShowWindow.View.GotoSlide (9)
test 'pause
ActivePresentation.SlideShowWindow.View.GotoSlide (1)'retour au questionnaire
End If
End Sub

@+ Le Pivert
Messages postés
6992
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 octobre 2020
114
Bonjour,
Pour sélectionner un slide:

ActivePresentation.Slides(3).Select' 3 est le 3ème slide de la présentation

Maintenant à vous de voir comment vous allez afficher vos slides pour les sélectionner. Avec une listBox ou un comboBox?

@+
Messages postés
10
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010

Merci beaucoup pour cette réponse aussi rapide!!

En revanche, pour ce qui est de la sélection des slides je voudrai justement ne pas avoir à les sélectionner mais plutôt qu'elles s'affichent l'une à la suite de l'autre grâce à la structure de boucle comme "for next" par exemple, est-ce faisable ?

Peut-être que ce n'est pas la meilleure idée qu'il soit....

Merci!
Messages postés
6992
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 octobre 2020
114
Si votre bouton est sur le 1er slide dés que vous cliquez pour sélectionnez un autre slide vous perdez le focus du 1er slide donc du bouton.
Donc je ne comprends pas très bien le but de la manoeuvre.Si c'est pour faire défiler les slides les uns après les autres, il n'y a pas besoin de programmation, la fonction Diaporama est là pour cela.
Il faudrait un peu plus d'explications
@+
Messages postés
10
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010

effectivement je me suis mal expliquée.

En fait, j'ai élaboré un questionnaire avec deux modalités de réponses (bouton d'option)et je voudrais pour la suite afficher des diapos qui feront office de correction --> autant de diapos à afficher que de mauvaises reponses.

Mon questionnaire compte 15 questions, il me faut alors 15 diapos mais je ne souhaite pas toutes les afficher à chaque fois!
C'est pourquoi je pensais partir d'une chaîne de caractère contenant par exemple des référence relatives aux diapos qu'il sera nécessaire de lancer.

J'espère avoir été plus clair que précédemment! merci de votre patience.
Messages postés
10
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010

Merci beaucoup!! Je vous tiens au courant!!
Messages postés
6992
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 octobre 2020
114
J'ai fait des recherches sur le Net, ce code ne fonctionne pas en mode diaporama.

Donc le plus simple est de mettre des optionbouton:
Impair pour le bonnes réponses et pair pour les mauvaises:
'bonne réponse
Private Sub OptionButton1_Click()
MsgBox "Bravo, bonne réponse!"
End Sub
'mauvaise réponse
Private Sub OptionButton2_Click()
ActivePresentation.SlideShowWindow.View.GotoSlide (3)'slide d'explication
End Sub
Donc maintenant que vous êtes au slide 3 il faut revenir au questionnaire:
'retour avec un bouton sur chaque slide d'explication
Private Sub CommandButton1_Click()
ActivePresentation.SlideShowWindow.View.GotoSlide (1)
End Sub
Je pense que comme cela tout devrait fonctionner. Excusez pour la mauvaise direction de départ, mais ce n'est pas si simple!
@+ Le Pivert
Messages postés
10
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010

Je suis à la fois surprise mais surtout contente de voir l'enthousiasme avec lequel vous m'aider dans la réalisation de mon projet.

Je me suis aidée de la solution avec If...Then...Else en modifiant la condition mais un petit souci persiste. Si je ne parviens à le résoudre je travaillerai avec la dernière solution que vous m'avez proposé.

Voici mon code:

Private Sub CommandButton1_Click()

If NoteCorr.Q1 <> Note.Q1 Then
ActivePresentation.SlideShowWindow.View.GotoSlide (8)
End If
If NoteCorr.Q2 <> Note.Q2 Then
ActivePresentation.SlideShowWindow.View.GotoSlide (9)
End If
End Sub

Ce code est directement lié à mon questionnaire (Q1, Q2 ... )
Bien entendu je n'ai pas que deux questions mais avant de continuer il faudrait que je modifie mon code de telle manière que:
- si l'individu a mal répondu à ces deux premières questions, il y ait un temps d'arrêt sur la diapo (8) qui présente la correction à la 1ère question avant de passer à la diapo(9) (correction 2ème question).

Puis-je adapter mon code en conséquence ????

J'espère être assez clair dans mes explications

merci d'avance
Messages postés
10
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010

Je vous remercie encore!!

j'étais complètement bloquée il y a peu de temps et maintenant je vois mon projet avancer!!!

Je me mets au travail!a+
Messages postés
10
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010

ca marche super !!! merci beaucoup à très bientot!!!
je saurai ou me rendre en cas de besoin!!