cs_chacha971
Messages postés10Date d'inscriptionmardi 27 avril 2010StatutMembreDernière intervention30 avril 2010
-
27 avril 2010 à 11:03
cs_chacha971
Messages postés10Date d'inscriptionmardi 27 avril 2010StatutMembreDernière intervention30 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....
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 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
@+
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 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
cs_chacha971
Messages postés10Date d'inscriptionmardi 27 avril 2010StatutMembreDernière intervention30 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!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 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
@+
cs_chacha971
Messages postés10Date d'inscriptionmardi 27 avril 2010StatutMembreDernière intervention30 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.
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 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
cs_chacha971
Messages postés10Date d'inscriptionmardi 27 avril 2010StatutMembreDernière intervention30 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).