Fonctionalité sur la SENDKEY
Bonjour à tous
Je viens vers vous pour de plus amples éclaircissements.
En effet, j'ai automatisé la saisie des informations de mon fichier excel vers notre logiciel.
Malgré le menu d'aide sur la sendkey, j'ai pas eu de réponses satisfaisante voila pourquoi je souhaite me referer à vous afin de trouver des réponses à mes interrogations.
1) Est-il possible de faire "autre chose" (ouvrir d'autre fichier ou faire des saisies manuelles sur d'autre fichiers...) pendant que la macro sendkey est exécutée(en cours de traitement)?
2)J'ai constaté que des fois, que l'exécution de la macro n'active pas le logiciel. pourtant la macro devrait d'abord ouvrir le logiciel avant de reporter les données dessus. ce qui n'est souvent pas le cas. dans la même suite, lorsque je constate cela (que le logiciel n'a pas été activé, je l'active moi et je vois que la macro avait déjà commencé a reporter les informations.
J'aimerai savoir ce qui est à l'origine de cela et si possible comment solutionner ces points soulevés (1 et 2)?
Ci-dessous le code :
Sub activePack()
'On Error GoTo gestionerreur
If MsgBox("ASSUREZ-VOUS QUE VOTRE", vbYesNo, "Demande de confirmation") = vbYes Then
AppActivate "NOM DU LOGICIEL ICI"
'POSITIONNEZ-VOUS SUR LE MENU SIMPLIFIE IGOR SOUHAITE
For I = 3 To 6
SendKeys Cells(I, 10).Value, True
attendre 0.6
SendKeys "~"
attendre 1
Next
SendKeys "N" & Chr(13), True
attendre 0.6
SendKeys "{LEFT}"
SendKeys "{ENTER}"
attendre 1
For I = 7 To 43
SendKeys Cells(I, 10).Value, True
attendre 0.6
SendKeys "~"
attendre 1
Next
SendKeys "+{F3}"
attendre 1
For I = 44 To 51
SendKeys Cells(I, 10).Value, True
attendre 0.6
SendKeys "~"
attendre 1
Next
SendKeys "+{F6}"
attendre 1
'For I = 51 To 51
'SendKeys Cells(I, 10).Value, True
'attendre 0.6
'SendKeys "~"
attendre 1
Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"
End If
End Sub
Sub activesimple()
'On Error GoTo gestionerreur
If MsgBox("ASSUREZ-VOUS QUE VOTRE SESSION", vbYesNo, "Demande de confirmation") = vbYes Then
AppActivate "NOM DU LOGICIEL ICI"
'POSITIONNEZ-VOUS SUR LE MENU SIMPLIFIE IGOR SOUHAITE
For I = 3 To 43
SendKeys Cells(I, 10).Value, True
attendre 0.6
SendKeys "~"
attendre 1
Next
SendKeys "+{F3}"
attendre 1
For I = 44 To 51
SendKeys Cells(I, 10).Value, True
attendre 0.6
SendKeys "~"
attendre 1
Next
SendKeys "+{F6}"
attendre 1
For I = 52 To 52
SendKeys Cells(I, 10).Value, True
attendre 0.6
SendKeys "~"
attendre 1
Next
Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"
End If
End Sub
Sub attendre(sec%)
Dim deb&, fin&
deb = Timer
fin = deb + sec%
Do Until Timer >= fin
DoEvents
Loop
End SubJe reste à votre disposition pour de plus amples informations.
Bonjour Zombe
1) réponse : NON et surtout pas oserais-je dire
En effet SendKeys simule des appuis sur le clavier, donc si tu ouvres d'autres fichiers,
les envois se feront vers le nouveau fichier
2)
J'ai constaté que des fois, que l'exécution de la macro n'active pas le logiciel. pourtant la macro devrait d'abord ouvrir le logiciel avant de reporter les données dessus
Comme tu le dis toi même, le code spécifié, ACTIVE le logiciel sous entendu, il est déjà ouvert, peut être réduit sur la barre de taches
Je pense qu'il faut donc faire un test, mais ne sachant pas de qu'elle logiciel il s'agit, difficile
A+
Salut BrunoM45
Merci de vous être interessé à mon sujet.
Ok pour le point 1.
Pour le point 2, le logiciel est déjà ouvert et réduit dans la barre des tâches.
En exécutant la macro, elle devrait chercher le logiciel dans la barre des tâches (l'activer à partir de la barre des tâches) pour commencer le remplissage.
Ce que je déplore est le faite qu'il n'active pas le logiciel depuis la barre des tâches. Lorsque je constate qu'il ne l'a pas activé, je le fais moi-même. cela a des repercussions sur l'ordre de remplissage.
Je précise également que dans mon code, il y'a une parti qui permet de pouvoir arrêter la macro à tout moment.
Le problème avec ce code est qu'il ne fonctionne pas correctement.
En effet, lorsque je fais ESC(ce qui permet l'arrêt de la macro en cours d'exécution), un msgbox me demande de confirmer l'arrêt ce que je fais. Le problème intervient lorsque je relance à nouveau la macro. le même msgbox demandant confirmation de la macro réapparait quand bien même j'ai pas appuyer la touche ESC. Tout cela contribue à perturber le fonctionnement de mon code.
Je profite joindre le code afin que vous puissiez apprécier.
Option Explicit
Public Var
Declare Function GetKeyState Lib "user32" (ByVal nvirtkey As Long) As Integer
Dim noaction As Boolean
Sub activePack()
Dim I As Integer, MemJ8 As Integer
Var = 0
'On Error GoTo gestionerreur
If MsgBox("ASSUREZ-VOUS QUE VOTRE", vbYesNo, "Demande de confirmation") = vbYes Then
noaction = False
AppActivate "ICI NOM DU LOGICIEL"
'POSITIONNEZ-VOUS SUR LE MENU SIMPLIFIE IGOR SOUHAITE
For I = 3 To 6
SendKeys Cells(I, 10).Value, True
attendre 0.6
If noaction Then Exit Sub
SendKeys "~"
attendre 1
If noaction Then Exit Sub
Next
SendKeys "N" & Chr(13), True
attendre 0.6
If noaction Then Exit Sub
SendKeys "{LEFT}"
SendKeys "{ENTER}"
attendre 1
If noaction Then Exit Sub
For I = 7 To 45
'POSITIONNEZ-VOUS SUR LE MENU SIMPLIFIE IGOR SOUHAITE
'For I = 3 To 45
' Si I = 8 alor on mémorise la valeur de la cellule
If I = 8 Then MemJ8 = Range("J8").Value
' Si I = 17 ou 18
' si I = 7
If I = 17 Or I = 18 Then
' Si la veleur mémorisée est 3
If MemJ8 = 3 Then
' On inscrit le nom et le prénom du mari
SendKeys Cells(I, 10).Value, True
attendre 0.6
If noaction Then Exit Sub
SendKeys "~"
attendre 1
If noaction Then Exit Sub
End If
Else
' Si I à une autre valeur que 16 ou 17
SendKeys Cells(I, 10).Value, True
attendre 0.6
If noaction Then Exit Sub
SendKeys "~"
attendre 1
If noaction Then Exit Sub
End If
Next
SendKeys "+{F3}"
attendre 1
If noaction Then Exit Sub
For I = 46 To 53
SendKeys Cells(I, 10).Value, True
attendre 0.6
If noaction Then Exit Sub
SendKeys "~"
attendre 1
If noaction Then Exit Sub
Next
SendKeys "+{F6}"
attendre 1
If noaction Then Exit Sub
'For I = 51 To 51
'SendKeys Cells(I, 10).Value, True
'attendre 0.6
'SendKeys "~"
attendre 1
End If
Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"
End Sub
Sub attendre(sec%)
Dim deb&, fin&
deb = Timer
fin = deb + sec%
Do Until Timer >= fin
DoEvents
Var = GetKeyState(27)
If Var > 0 Then
If MsgBox("Confirmation arrêt macro", vbOKCancel) Then
SendKeys Chr(27)
noaction = True
Var = 0
Exit Sub
End If
End If
Loop
End SubBonsoir,
Essaie :
AppActivate "ICI NOM DU LOGICIEL"
Attendre 1la suite sans changement...
A+
Salut galopin01
merci pour votre intervention.
J'ai déjà mis en pratique votre solution et pour le moment j'ai pas encore rencontré de difficulté.
Je ferai utiliser par d'autres utilisataires afin de mieux apprécier.
le seul problème qui se pose régulièrement réside dans l'arrêt de la macro par la touche ESC.
Le problème subsiste. Avez-vous une solution?
Merci encore pour tout