Nombre dans usertext et l'incrémenter 10 fois
Bonjour à tous,
Je souhaiterai écrire un bout de code en vba qui permet a l'utilisateur d'ecrire un nombre. Donc pour cela j'ai fais un Userform avec un textbox et un bouton ok. Le problème c'est que j'aimerai que ce chiffre saisie soit testé copié puis coller dans un autre logiciel en ctrl+v, puis si il y'a un retour d'information, qu'il passe au chiffre suivant.
Par exemple :
L'utilisateur entre le chiffre 1254, il appuie sur ok, le chiffre est copié puis collé dans un autre logiciel. Si il y' a un retour alors il passe au 1255, si retour au 1256 il passe au 1257 et cela 20 fois. Si il n'y a pas de retour alors c'est la suite de la macro qui prends la main.
Le userform est fait, le moyen de copié est fait, le soucis c'est que je ne trouve pas le moyen de faire une boucle 20 fois et d'incrémenter le chiffre de +1.
Merci d'avance !
Salut,
Si tu fournis ton fichier avec le code déjà en place, ça serait quant même plus simple de t'aider, non
Cordialement.
Ah oui pardon autant pour moi
Mais c'est un peu compliquer car beaucoup de fichier entre en liaison.
En fait voici le code qu'il faut que je modifie le code qui se trouve en module 11 :
Function Verif_Article_Login()
'===============================================================================================
'================================ Déclaration des variables ====================================
'===============================================================================================
'Login
Dim Utilisateur As String
Dim MotDePasse As String
Utilisateur = Fenetre_Login_Verif.User.Text
MotDePasse = Fenetre_Login_Verif.Mdp.Text
'Incrémentation de la nomenclature excel
Dim L As Integer
Dim i As String
'===============================================================================================
'================================ Authentification TN52/JDE ====================================
'===============================================================================================
If Utilisateur = "Name" And MotDePasse = "Pass" Then
Shell ("Y:\Base\Fichiers Macro\TN5250J.bat") 'Lancement de TN5250j
Application.Wait (Now + TimeValue("0:00:06")) 'Temps de pause 6s
UsrCMD = "" & Fenetre_Login_Verif.User & "{TAB}" 'Rappel de la saisie User
SendKeys UsrCMD 'Importer la saisie dans JDE
Application.Wait (Now + TimeValue("0:00:01")) 'Temps de pause 02s
PassCMD = "" & Fenetre_Login_Verif.Mdp & "{ENTER}" 'Rappel de la saisie Password
SendKeys PassCMD 'Importer la saisie dans JDE
Unload Fenetre_Login_Verif 'Fermeture de la fenêtre login (UserForm1)
Application.Wait (Now + TimeValue("0:00:06")) 'Temps de pause 3s
Else
Fenetre_Incorrect.Show
Exit Function
End If
'===============================================================================================
'================================ Interrogation articles =======================================
'===============================================================================================
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
'===============================================================================================
'================================ Début de la Boucle de séléction ==============================
'===============================================================================================
L = 1
Do While Cells(L, 3) <> ""
If Cells(L, 3) > 30999999 And Cells(L, 3) < 32000000 Then
Cells(L, 3).Copy 'Copier la cellule d'excel
SendKeys "^v", True 'Coller la cellule dans le champ code produit de JDE
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 <> 31 Then 'Analyser la celulle A1
Cells(L, 2).Value = "" 'Laisser la cellule vide
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
Cells(L, 2).Value = "1" 'Mettre un 1
SendKeys "^e", True 'Effacer le code article
End If
End If
L = L + 1 'Cellule suivante
Loop
End Function
Le code ci dessus est ce que je souhaite faire SAUF que le code va changer a ce moment la :
Do While Cells(L, 3) <> ""
If Cells(L, 3) > 30999999 And Cells(L, 3) < 32000000 Then
Il ne faut plus que ce soit une condition mais que l'info vienne du userform (Fenetre_Inter_SA) qui contient le textbox (Code_SA).
L'utilisateur rentre un code. Le code est analysé, la boucle ci dessus est exécuté. Si il est affiché un 23 alors c'est qu'il faut passé au code suivant (code +1) sinon un autre userform s'affiche demandant le format du plan.
J'ai un peu avancé dans le code, le souci c'est que je n'arrive pas a incrémenter de +1 le Usertext :
Sub Verification_SousEmsemble()
'Login
Dim Code As String
Dim compteur As Integer
Code = Fenetre_Inter_SA.Code_SS.Text
'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
'===============================================================================================
'================================ Interrogation articles =======================================
'===============================================================================================
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
'===============================================================================================
'================================ Début de la Boucle de séléction ==============================
'===============================================================================================
For compteur = 1 To 20
Codesaisie = "" & Fenetre_Inter_SA.Code_SS 'Rappel de la saisie code sous assemblage
SendKeys Codesaisie 'Importer la saisie dans JDE
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
'ici je voulais mettre Fenetre_Inter_SA.Code_SS.Value +1 mais ca ne fonctionne pas
Next
'===============================================================================================
'================================ Fin de la Boucle de séléction ================================
'===============================================================================================
SendKeys "{F3}", True 'retour page articles
SendKeys "2", True 'Fiche article
SendKeys "{ENTER}", True
L = 1
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
Bonjour
Pourquoi ne pas donner un fichier qui fonctionne
Les chemins ne correspondent à rien
Tu parles du Module11 avec la macro Function Verif_Article_Login()
A part que cette macro se trouve dans le Module7
Ensuite pour le mot de passe et utilisateur : Tu les transformes en majuscules, mais ensuite tu les vérifies en comparant avec des minuscules (chercher l'erreur)
Je n'ai pas réussi à faire fonctionner ton fichier
Désolé je m'y suis mal pris peut-être
Je ne sais pas à quel moment il faut entrer le code que tu fournis
A te lire
J'ai changé le nom d'utilisateur et mot de passe pour éviter de les publier sur le forum. Mais en effet j'aurai pu les mettre en majuscule. J'ai retravaillé sur le fichier entre temps.
Le fichier code.xls doit être lancé en premier, pour analyser le fichier code_temp.txt.1 et le sauvegarder dans Base.xls.
Dans le fichier base.xls se trouvent toutes les macros. La macro en question se trouve dans le module 12.
Les chemins des différents fichiers sont :
C:\ptc_config\config_perso_wf2\Macros_Articles\code_temp\code_temps.txt.1
C:\ptc_config\config_perso_wf2\Macros_Articles\code_xls\code.xls
C:\ptc_config\config_perso_wf2\Macros_Articles\code_xls\base.xls
Beaucoup de macro ne fonctionneront pas chez vous puisque vous devez disposer de JDE (emulateur d'AS/400)
La macro qui se trouve dans le module 12 fonctionne, le soucis c'est que je n'arrive pas a incrémenter de +1 la valeur saisie dans le Usertext "Fenetre_Inter_SA.Code_SS.Text" et ce maximum 20 fois.
Si au bout des 20 fois aucun code n'est libre, alors il ré-ouvre le userform qui demande a l'utilisateur de saisir un nouveau code. pour recommencer l'opération. Si dans la boucle il trouve un numéro vide, alors il passe a la suite de la macro.
Bonjour
Pas facile facile quand on ne peut pas tester (même un minimum)
Essaies
Sub Verification_SousEmsemble()
'===============================================================================================
'================================ Déclaration des variables ====================================
'===============================================================================================
'Login
Dim Code As Integer
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"
' .
' suite du code
' .
Code = Fenetre_Inter_SA.Code_SS.Text
'For compteur = 1 To 20
For compteur = Code To Code + 20
'Codesaisie = "" & Fenetre_Inter_SA.Code_SS 'Rappel de la saisie code sous assemblage
'SendKeys Codesaisie 'Importer la saisie dans JDE
SendKeys "" & Str(compteur) 'Importer la saisie dans JDE
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"
Exit For
End If
Next
If compteur > Code + 20 Then
' retour car pas de numéro libre
Exit Sub
End If
' .
' Suite et fin du code
' .
'===============================================================================================
'================================ Fin de la Boucle de séléction ================================
'===============================================================================================
En surligné les modifications faites
Merci de ton aide bonzai en tout cas. Je comprends bien que ce n'est pas facile d'essayer a l'aveugle. Mais il me semblait que c'était juste un code assez courant, apparemment c'est un peu plus compliqué que ca.
Pour en revenir à ta réponse, j'ai un problème au niveau de cette ligne du coup :
Code = Fenetre_Inter_SA.Code_SS.Text
Erreur 6
Dépassement de capacités
Je suis entrain de regarder ce que ca signifie.
EDIT : Je cherche pour rien, puisque je met une valeur 23000000, forcément qu'il y'a un dépassement de capacité puisque VBA c'est 37650 quelque chose comme ca le max non ?
Le problème c'est qu'en changeant Integer par Long je me retrouve avec un dépassement de capacité à cette ligne :
For compteur = Code To Code + 20 'Compteur jusque +20
EDIT 2 :
C'est bon bonzai ! Même a l'aveugle tu as réussis, c'est moi qui me suis planté :s. Le problème venait du compteur qui était en Integer, il fallait le mettre en As long aussi !
La boucle marche parfaitement au final ! Merci beaucoup