Sendkeys

Barnadas Messages postés 28 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 16 septembre 2013 - 1 mars 2013 à 17:22
Barnadas Messages postés 28 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 16 septembre 2013 - 3 mars 2013 à 11:42
Bonjour à tous,

j'ai une macro que j'appelle 3 fois qui exécute des sendkeys mais les sendkeys ne fonctionnent que lors de la première exécution. quelqu'un a-t-il une idée pourquoi ça ne fonctionne pas ? et/ou une solution ?
mon code ci-dessous
sachant que zone et forme1 sont des formes libres sous ppt, list_numdiapo(y) est un numéro de diapositive ppt.

sub forme()
Call Intersect(zone, forme1, list_numdiapo(y), "Zone SEI")
ActivePresentation.Slides(list_numdiapo(y)).Shapes.Paste
Call Intersect(zone, forme2, list_numdiapo(y), "Zone SEL")
ActivePresentation.Slides(list_numdiapo(y)).Shapes.Paste
Call Intersect(zone, forme3, list_numdiapo(y), "Zone SELS")
ActivePresentation.Slides(list_numdiapo(y)).Shapes.Paste
end sub

Sub Intersect(a, b, c, d)
ActivePresentation.Slides(c).Select
ActiveWindow.Selection.SlideRange.Shapes.Range(Array(a, b)).Select
ActiveWindow.Selection.ShapeRange.Copy

SendKeys "%", True
For i = 1 To 50
DoEvents
Next

SendKeys "h", True
For i = 1 To 50
DoEvents
Next

SendKeys "y4", True
For i = 1 To 50
DoEvents
Next

ActiveWindow.Selection.SlideRange.Shapes.Range(a).Select
Set toto = ActiveWindow.Selection.ShapeRange
toto.Name = d
nomshape = toto.Name

End Sub

j'ai d'urgence besoin de votre aide
merci d'avance

10 réponses

Utilisateur anonyme
1 mars 2013 à 17:46
Bonjour,

j'ai d'urgence besoin de votre aide


Ce n'est pas grave. Le bénévolat en urgence, ce n'est pas notre genre. Surtout avec un code non-indenté et non commenté. Même que personne ne sait d'où vient ton y et ce qui se passe avec. Parce ce que, tel que ton code est présenté, ton y vaut toujours 0 (zéro) et que cela se pourrait très bien que tes Sendkeys marchent trois fois sur ta diapositive 0.

Mais bon, le devin de service va peut-être découvrir autre chose.
0
Barnadas Messages postés 28 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 16 septembre 2013
1 mars 2013 à 19:14
petites précisions, le y est un entier positif et le list_numdiapo(y) est juste un stockage d'un entier.

comment puis-je mettre le code indenté ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 mars 2013 à 19:31
Bonjour,
1)
comment puis-je mettre le code indenté

Troisième icône en partant de la droite.
le y est un entier positif

déclaré où et comment et initialisé où et comment ?
2) "travailler" à coups de sendkeys est lourd, sujet à aléas et à éviter. Préfère-lui des instructions directes.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Barnadas Messages postés 28 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 16 septembre 2013
1 mars 2013 à 19:41
sub forme() 
Call Intersect(zone, forme1, list_numdiapo(y), "Zone SEI") 
ActivePresentation.Slides(list_numdiapo(y)).Shapes.Paste 
Call Intersect(zone, forme2, list_numdiapo(y), "Zone SEL") 
ActivePresentation.Slides(list_numdiapo(y)).Shapes.Paste 
Call Intersect(zone, forme3, list_numdiapo(y), "Zone SELS") 
ActivePresentation.Slides(list_numdiapo(y)).Shapes.Paste 
end sub 

Sub Intersect(a, b, c, d) 
ActivePresentation.Slides(c).Select 
ActiveWindow.Selection.SlideRange.Shapes.Range(Array(a, b)).Select 
ActiveWindow.Selection.ShapeRange.Copy 

SendKeys "%", True 
For i = 1 To 50 
DoEvents 
Next 

SendKeys "h", True 
For i = 1 To 50 
DoEvents 
Next 

SendKeys "y4", True 
For i = 1 To 50 
DoEvents 
Next 

ActiveWindow.Selection.SlideRange.Shapes.Range(a).Select 
Set toto = ActiveWindow.Selection.ShapeRange 
toto.Name = d 
nomshape = toto.Name 

End Sub 
0

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

Posez votre question
Barnadas Messages postés 28 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 16 septembre 2013
1 mars 2013 à 19:48
le y a peu d'importance mais il est déclarer dans la meme macro, j'ai juste enlever tout le code qui ne sert pas. si le "y" est génant mettez un nombre entier à la place.

en fait je travaille avec les sendkeys parce que l'instruction directe de la fonction que je cherche est (pour moi) introuvable.

j'ai rajouté dans le ruban "accueil" la fonction "forme - intersection" qui trace l'intersection de 2 formes sélectionnées (uniquement sous ppt2010)

si quelqu'un connait l'instruction directe de cette fonction, je suis très largement preneur !
vu qu'il n'y a plus l'enregistreur de macro depuis la version de 2007, je n'arrive pas à trouver l'instruction...

merci d'avance
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 mars 2013 à 21:54
Ouais ...
1) tu as bien présenté cette fois-ci ton code entre balises code, mais nous déplorons qu'il ne soit pas indenté !
2) tu n'as jusqu'à présent pas soufflé le moindre mot concernant l'outil utilisé. C'est bien dommage et assez "léger" !
Il nous faut deviner, donc ? Choisir entre toutes les applications Office de Microsoft ?
Ce n'est que par élimination (puisque ce n'est pas Word, ni Excel, etc... que je pense qu'il s'agit de la seule que je n'utilise personnellement jamais : PowerPoint
!
Je le signale (à ta place, donc) à l'attention de ceux qui ont l'habitude d'en utiliser le VBA. DEt te laisse là.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
2 mars 2013 à 02:27
Bonjour,

Si tu passes par personnaliser le ruban et que tu laisses ton pointeur de souris quelques secondes sur la commande en question, il y a une info-bulle qui s'affiche et le nom anglais à la fin du texte de l'info-bulle. (ShapesIntersect)
0
Utilisateur anonyme
2 mars 2013 à 02:41
Bonjour,

Dans l'aide de VBA pour PowerPoint, ils disent que pour faire en VBA ce qui peut être fait dans l'interface, il faut passer par ShapeRange.
0
Utilisateur anonyme
2 mars 2013 à 02:55
Bonjour,

Tu peux toujours examiner les exemples que tu peux récupérer sur cette page.
0
Barnadas Messages postés 28 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 16 septembre 2013
3 mars 2013 à 11:42
Bonjour à tous,

j'ai regarder avec attention ce que vous m'avez dit, dans l'aide VBA, la fonction ShapesIntersect n'existe pas, on ne peut l'appliquer à rien.

j'ai également regarder dans les exemples donnés par cmarcotte mais il n'y a pas la fonction intersection de formes dedans

Avez-vous d'autres idées ??

Merci à tous et bon dimanche
0
Rejoignez-nous