Bonjour,
Je suis novice en matière de VBA excel, ceci est mon tout premier code et j'aimerais savoir si quelqu'un pourrait m'aider pour le problème suivant
Je désire, extraire des variables précises dans un fichier excel constitué de plusieurs feuilles, toutes avec la même structure, et écrire le résultat qui en découle sur une nouvelle feuille.
Voici mon code :
Lors de l'exécution, pendant un très court instant, je peux voir que ma nouvelle feuille "Résultat" se remplit correctement (au moins sur la 1ère feuille à analyser, je ne peux pas voir pour le reste, le traitement est trop rapide).
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 Sub test() Dim strTri As String Dim strApp As String Dim strEqp As String Dim i As Integer Dim Ws As Worksheet Dim Ws2 As Worksheet 'Création de la nouvelle feuille For Each Ws In ActiveWorkbook.Worksheets If Ws.Name = "Resultat" Then Ws.Delete Exit For End If Next Sheets.Add after:=Sheets(7) ActiveSheet.Name = "Resultat" 'Parcours de toutes les feuilles For Each Ws2 In ActiveWorkbook.Worksheets 'Réinitialisation de i i = 1 'Tant que la cellule n'est pas vide (j'ai moi même mis EOF à la fin de chaque feuille en colonne 1) Do While Ws2.Cells(i, 1).Value <> "EOF" 'Ignore le traitement si case vide ou contenant la chaine "Nom" (entete colonne) If Not (IsEmpty(Ws2.Cells(i, 1).Value)) Or Ws2.Cells(i, 1).Value <> "Nom" Then 'Copie des valeurs recherchées strTri = Mid(Ws2.Cells(i, 1).Value, 2, 3) strApp = Ws2.Cells(i, 4).Value strEqp = Ws2.Cells(i, 7).Value ActiveSheet.Cells(i, 1) = strTri 'Ecrit dans la nouvelle feuille ActiveSheet.Cells(i, 2) = strEqp ActiveSheet.Cells(i, 3) = strApp End If i = i + 1 'Passe à la ligne suivante Loop Next End Sub
J'obtiens une erreur de type "Dépassement de capacité" sur i.
Il semble que ce soit parce que la boucle analyse également la nouvelle feuille juste créée et efface également par dessus... (et n'arrive jamais au EOF puisque la page est auto générée, du coup VBA doit générer cette erreur automatiquement au bout d'un nombre d'itération trop important je pense)
Quelqu'un aurait une solution pour contourner ce problème ?
Je pensais peut-être à écrire sur un nouveau fichier plutôt qu'une nouvelle feuille, mais étant complètement novice dans le domaine ...
Merci d'avance !
Partager