Bonjour à toutes et à tous,
Voila mon problème: j'ai écrit un petit programme sous VBA pour modifier un tableau assez conséquent (plus de 40 000 lignes).
Le programme marche bien si ce n'est que je doit appuyer sur la touche "échap" quelques secondes après l'avoir lancé pour visualiser les modifications que je veux ET pour que Excel arrête de ramer pour rien (je vois le processeur monter en charge petit à petit.. 10%...12%...14%...etc)
C'est comme si j'avais lancé une boucle infinie .. mais en mettant des stops aux endroits clefs pour voir comment se comporte le programme et où ça pouvait bloquer éventuellement, il se trouve que l'endroit faisant tout "capoter" étant juste avant de changer certaines cellules du tableau (les 4 dernières lignes)
Je précise que le script est sur une feuille et non un module, que certaines valeurs d'entrée sont récupérées depuis des userform et que j'ai eu quelques soucis du genre "erreur 400" et "erreur 1004" avant que ça fonctionne (j'ai dû changer cells(x,j) en application.cells(x,j).value)
Voila mon programme ci-dessous:
Merci d'avance pour votre aide!!
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 Sub LancementProgramme2() Dim RefLM As Long, CapaLin As Integer, DateModif As Date, NomPers As String, BoiteDial, i As Long, Nrow As Long, LigneRef As Long, boitedial2 ' Récupération des variables renseignées dans les champs de la feuille CAPA RefLM = TextBox1.Value CapaLin = TextBox2.Value DateModif = TextBox3.Value NomPers = TextBox4.Value 'Comptage du nombre de lignes Nrow = Range("A65536").End(xlUp).Row 'Vérification si la référence LM est déjà dans le tableau LigneRef = 999999999 For i = 2 To Nrow If Cells(i, 1) = RefLM Then LigneRef = i Next If LigneRef = 999999999 Then boitedial2 = MsgBox("La référence que vous avez renseigné n'est pas dans le tableau, voulez-vous créer une nouvelle référence?", vbYesNo, "Attention") If boitedial2 = vbYes Then LigneRef = Nrow + 1 If boitedial2 = vbNo Then Exit Sub Application.Cells(LigneRef, 1).Value = RefLM Application.Cells(LigneRef, 2).Value = CapaLin Application.Cells(LigneRef, 4).Value = DateModif Application.Cells(LigneRef, 5).Value = NomPers End Sub
Partager