Salutations amis développeurs !
Je viens humblement à vous afin de m'aider à comprendre voir à trouver une solution à un problème sous Excel VBA.

J'ai fait une macro qui balaie les enregistrements d'un tableur Excel rang A depuis A1. Cela fonctionne très bien mais à condition qu'il y ait au moins deux enregistrements sinon ma variable "Numrows" n'a pas d'affectation et vaut 0 d'où un erreur 6 de dépassement de capacité.

Extrait du code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Const URL = "http://192.168.63.228/Rework/ReworkBatch"
Public Numrows As Integer
 
Sub ENCODAGE_01_17_10_21()
 
 
    Dim Obj As WebDriver
    Set Obj = New ChromeDriver
    Dim Enr_cellule As String
    ' Variables du compteur
    Dim x As Integer
    Dim y As Integer
    Dim z As Integer
 
 
saisieLongueurPC = 14 'Application.InputBox(" Veuillez saisir la longueur du PC ")
saisieLongueurEXP = 6 'Application.InputBox(" Veuillez saisir la longueur de la date de PER ")
saisieLongueurLOT = 8 ' Application.InputBox(" Veuillez saisir la longueur du lot ")
saisieLongueurSN = 16 'Application.InputBox(" Veuillez saisir la longueur de la date de SN ")
 
    With Obj
 
         .Start "Chrome"
         .Get URL
        ' remplis les champs de connection '
         .FindElementById("Username").SendKeys "OPER"
         .FindElementById("Password").SendKeys "0000"
 
          Application.WindowState = xlMaximized
 
        ' clique pour se connecter
         .FindElementByCss("input[value='OK']").Click
 
        ' Stoppe toutes les activités d'Excel
          Application.Wait DateAdd("s", L, Now)
 
        ' Compte le nombre des enregistrements jusqu'a trouver une cellule vide.
          Numrows = Sheets("Feuil1").Range("A1", Range("A1").End(xlDown)).Rows.Count
 
 
    For x = 1 To Numrows
          y = x
 
          Enr_cellule = Range(("A") & y).Value
 
          PC = "(01)" + Mid(Enr_cellule, 3, saisieLongueurPC)
          PER = "(17)" + Mid(Enr_cellule, 19, saisieLongueurEXP)
          LOT = "(10)" + Mid(Enr_cellule, 27, saisieLongueurLOT)
          SN = "(21)" + Mid(Enr_cellule, 38, saisieLongueurSN)
 
        ' c'est ici que la fonction est activée
 
         'la cellule B1 recoit son affectation ici
         Range(("B") & y).Value = PC + PER + LOT + SN
         Enr_formatte = Range(("B") & y).Value
 
 
          .FindElementById("UnitCode").SendKeys Enr_formatte
          .FindElementById("SearchParentBtn").Click
 
    Next
        ' Call Worksheet_Change(Range(("B") & y)) ' A VOIR SI CELA INITIALISE L ECOUTE
          MsgBox Numrows & " Enregistrements ont été saisis "
 
   End With
 
End Sub
En vous remerciant par avance. Bien cordialement