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

Rechercher des sujets similaires à "nombre usertext incrementer fois"