Sendkeys

Signaler
Messages postés
28
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
16 septembre 2013
-
Messages postés
28
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
16 septembre 2013
-
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


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.
Messages postés
28
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
16 septembre 2013

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é ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.
Messages postés
28
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
16 septembre 2013

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 
Messages postés
28
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
16 septembre 2013

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.

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)

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.

Bonjour,

Tu peux toujours examiner les exemples que tu peux récupérer sur cette page.
Messages postés
28
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
16 septembre 2013

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