VB sur Powerpoint 2003, appel de slide

Résolu
cs_chacha971 Messages postés 10 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 30 avril 2010 - 27 avril 2010 à 11:03
cs_chacha971 Messages postés 10 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 30 avril 2010 - 28 avril 2010 à 14:34
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

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
27 avril 2010 à 14:05
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
@+
3
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
28 avril 2010 à 12:08
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
3
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
27 avril 2010 à 11:44
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?

@+
0
cs_chacha971 Messages postés 10 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 30 avril 2010
27 avril 2010 à 11:59
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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
27 avril 2010 à 12:07
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
@+
0
cs_chacha971 Messages postés 10 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 30 avril 2010
27 avril 2010 à 13:17
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.
0
cs_chacha971 Messages postés 10 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 30 avril 2010
27 avril 2010 à 14:16
Merci beaucoup!! Je vous tiens au courant!!
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
27 avril 2010 à 16:19
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
0
cs_chacha971 Messages postés 10 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 30 avril 2010
28 avril 2010 à 09:25
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
0
cs_chacha971 Messages postés 10 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 30 avril 2010
28 avril 2010 à 13:59
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+
0
cs_chacha971 Messages postés 10 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 30 avril 2010
28 avril 2010 à 14:34
ca marche super !!! merci beaucoup à très bientot!!!
je saurai ou me rendre en cas de besoin!!
0
Rejoignez-nous