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 :
En vous remerciant par avance. Bien cordialement
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
Partager