Comment intégrer une condition dans mon code sendkey
Bonjour le forum
Je rencontre un soucis avec mon code sendkeys.
En effet, le code me permet de renseigner automatiquement notre logiciel à partir des informations contenues dans une plage excel.
Le problème qui se pose est que le logiciel est fait de telle sorte que lorsque la valeur de la cellule D7=3 (ce qui signifie que c'est femme mariée), le logiciel demande le nom et prenom du mari mais lorsque D7 = 2 ou 4, le logiciel saute les champs reservés au nom et prenom du mari.
Puis que ma plage excel comporte en cellule D16 et D17, les cellules reservées au nom du mari.
Comment faire pour que lorsque la valeur en D7 = 3, il prenne en compte la valeur des cellules D16 et D17.
Mais si D7 est different de 3, il doit laisser les cellules D16 et D17 et aller directement à la cellule D18.
Je reste à votre disposition si pas clair chez vous.
Ci-joint le fichier.
Salut le forum
J'ai eu une piste que je voulais partager avec vous afin que vous puissiez mieux m'aider.
Comment intégrer le code ci-dessous dans le code du fichier joint?
J'ai essayé moi-même mais j'ai raté.
Dans ce code, c'est si D7 = 3 mais dans mon cas réel c'est si J8 = 3 qui doit être utilisée.
Le fichier joint est celui qui correspond à mon cas réel.
Il contient également le code que j'ai bidouillé et qui ne fonctionne pas.
Merci de voir svp.
For i = 3 To 44
Select Case i
Case 16, 17
If Cells(7, 4).Value = 3 Then
SendKeys Cells(i, 4).Value, True
End If
Case Else
SendKeys Cells(i, 4).Value, True
End Select
attendre 0.6
SendKeys "~"
attendre 1
Next
Salut Zombe
Voici un code possible
Sub activesimple()
Dim I As Integer, MemJ8 As Integer
'On Error GoTo gestionerreur
If MsgBox("ASSUREZ-VOUS QUE VOTRE SESSION", vbYesNo, "Demande de confirmation") = vbYes Then
AppActivate "ESSAI"
MemD7 = ""
'POSITIONNEZ-VOUS SUR LE MENU SIMPLIFIE IGOR SOUHAITE
For I = 3 To 44
' Si I = 8 alor on mémorise la valeur de la cellule
If I = 8 Then MemJ8 = range("J8").Value
' Si I = 16 ou 17
If I = 16 Or I = 17 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, 4).Value, True
attendre 0.6
SendKeys "~"
attendre 1
End If
Else
' Si I à une autre valeur que 16 ou 17
SendKeys Cells(I, 4).Value, True
attendre 0.6
SendKeys "~"
attendre 1
End If
Next
SendKeys "+{F3}"
attendre 1
For I = 45 To 52
SendKeys Cells(I, 4).Value, True
attendre 0.6
SendKeys "~"
attendre 1
Next
SendKeys "+{F6}"
attendre 1
For I = 53 To 53
SendKeys Cells(I, 4).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 SubA+
Salut BrunoM45
Votre code est trop cool.
Il répond parfaitement à mes attentes.
Si vous me permettez, je vais encore vous demander deux petits services :
1- Toujours dans le sens des conditions : le code ci-dessous me permet d’insérer N dans un champ de mon logiciel.
Je dois saisir N lorsque la 1ère lettre de la cellule B4 commence par P. Si c’est autre chose que P, on ne saisi pas N. on laisse la saisie continuer.
Je souhaiterai trouver une condition pour dire que lorsque la 1ère lettre de B4 est P, que cette partie du code s’exécute sinon qu’on passe au traitement suivant.
2- Serait-il possible de faire en sorte (intégrer code macro) qu’en appuyant sur la touche ESC, cela entraine l’arrêt de la macro (en cours d’exécution) ?
Pouvez-vous voir ces 2 points ?
Je vous remercie d’avance.
Next
SendKeys "N" & Chr(13), True
attendre 0.6
SendKeys "{LEFT}"
SendKeys "{ENTER}"
attendre 1