azertym
Messages postés47Date d'inscriptionvendredi 8 août 2003StatutMembreDernière intervention 7 décembre 2014
-
12 mars 2012 à 10:29
azertym
Messages postés47Date d'inscriptionvendredi 8 août 2003StatutMembreDernière intervention 7 décembre 2014
-
12 mars 2012 à 10:46
Bonjour les codeurs !
Me revoici sur le forum pour une dernière question.
Je dispose d'un userform (Fenetre_Inter_SA) avec un Usertext (Code_SE).
J'aimerai que le Userform demande à l'utilisateur de saisir un chiffre. Puis ce chiffre est testé et incrémenté 20 fois. Si au bout de 20 fois il n'y a aucun retour, il redemande de saisir un chiffre.
Voici le code que j'ai pour le moment :
Sub Verification_SousEmsemble()
'Login
Dim Code As Long
Dim compteur As Integer
'Incrémentation de la nomenclature excel
Dim L As Integer
Dim i As String
MsgBox "Veuillez activer la fenêtre de JDE"
Application.Wait (Now + TimeValue("0:00:04")) 'Temps de pause 02s
SendKeys "{F3}", True
SendKeys "{F12}", True
Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 02s
SendKeys ("1"), True 'Article
Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
SendKeys "{ENTER}", True
Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
SendKeys ("2"), True 'Fiche article
Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
SendKeys "{ENTER}", True
Application.Wait (Now + TimeValue("0:00:03")) 'Temps de pause 03s
SendKeys "i", True 'Interrogation
Code = Fenetre_Inter_SA.Code_SE.Text
For compteur = Code To Code + 20 'Compteur jusque +20
SendKeys "" & Str(compteur) 'Rappel de la saisie code sous assemblage
Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 02s
SendKeys "{ENTER}", True
Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
SendKeys "+!", True 'Selectionner le code d'action
SendKeys "^c", True 'Copier de la lettre code d'action
SendKeys "+{TAB}", True 'placer le curseur sur code action
Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 01s
Cells(1, 1).Select
ActiveSheet.Paste 'Coller la selection
If Cells(1, 1).Text <> 23 Then 'Analyser la celulle A1
SendKeys "+{TAB}", True 'Placer le curseur sur le N° Article
SendKeys "^e", True 'Effacer le numéro article
SendKeys "{TAB}", True 'Placer le curseur sur code action
SendKeys "{TAB}", True 'Placer le curseur sur code article
Else
MsgBox "libre"
End If
If compteur > Code + 20 Then
' retour car pas de numéro libre
Exit Sub
End If
Next
SendKeys "{F3}", True 'retour page articles
SendKeys "2", True 'Fiche article
SendKeys "{ENTER}", True
If Application.WorksheetFunction.CountIf(Range("B:B"), 1) > 0 Then
Fenetre_Suite.Show 0 'Fin de la vérification des articles, demande de passer à la macro suivante.
Else
MsgBox "Vérification términée." 'Fin de la vérification des articles.
End If
SendKeys "{NUMLOCK}", True
End Sub
Le soucis avec ce code c'est que VB me retourne un message d'erreur :
Erreur 6, Dépassement de capacité sur cette ligne :
For compteur = Code To Code + 20 'Compteur jusque +20
Je ne comprends pas bien pourquoi puisque j'ai mis la variable "code" en As Long puisque l'utilisateur saisie un 23 000 000. Normalement en As long on est pas limité si ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 12 mars 2012 à 10:35
Bonjour,
Je ne sais ce qu'est ton "UserText" ici mentionné.
Travailler avec des sendkeys, encore une fois, est très tortueux et maladroit.
Quant au problème que tu exposes ici : dépassement de capacityé, il est évident : compteur, déclaré en Integer, ne saurait compter au delà de la limite d'un integer !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
azertym
Messages postés47Date d'inscriptionvendredi 8 août 2003StatutMembreDernière intervention 7 décembre 2014 12 mars 2012 à 10:46
Roh le c... J'ai zappé le compteur .... C'était bien ca le problème. J'ai oublié de me dire que le compteur était lui aussi un As long ....
Pour les sendkeys je te l'ai dis Ucfoutu, je n'ai absolument pas le choix. Et crois moi tu verrais le programme, j'ai du trouver plein de subterfuges pour éviter le plus d'erreurs possible. Pour le moment tout fonctionne quand même mais c'est très très aléatoire à cause du temps de connexion avec JDE .... Des fois la connexion met 2 secondes des fois 15. Du coup les sendkeys eux n'attendent pas, sa balance a tout va sans réfléchir :\. C'est le seul point négatif que j'ai sur toutes mes macros.
En tout cas ce forum m'aura était d'une très grande utilité et surtout toi Ucfoutu !