Bonjour à tous,
Je suis un utilisateur VBA débutant et cela fait cinq jours que je bute sur un problème.
J'utilise des variables tableau interdépendantes.
Ma première variable tableau, tableau(I, 0), récupère des données dans un onglet Excel nommé "Exercice" (tableau(I, 0) = Sheets("Exercice").Range("A" & I + 1) )
Ma deuxième variable tableau, tableau(I, 1), est égal à 1 si tableau(I - 1, 0) est > 7 et si tableau(I - 1, 2) est = 2
Ma troisième variable tableau, tableau(I, 2), est égal à 2 si tableau(I, 0) est > 8
Mon problème, c'est que la deuxième variable ne fonctionne pas puisque VBA construit d'abord mon premier tableau, puis mon deuxième et enfin mon troisième. Comme s'il construisait colonne après colonne.
Au stade de tableau(I, 1), VBA n'a aucune information sur la valeur de tableau(I, 2).
Sur le tableur Excel, je ne rencontre pas ce problème, puisque le tableur construit ligne après ligne. Je peux très bien construire ma cellule B2 en fonction de la cellule C1. Pas dans mon code VBA.
J'espère avoir été clair.
Qu'est-ce que je n'ai pas compris ? Comment faire pour que mes variables tableau se comportent comme dans un tableur Excel ?
Merci de votre aide.
P.S. : merci de ne pas me donner l'astuce de remplacer dans ma deuxième variable tableau(I - 1, 2) par tableau(I-1, 0) est > 8. Vous n'avez compris, ce n'est pas ce que je recherche.
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 Sub Exemple() 'Déclarations Dim tableau() Dim derniereLigne As Integer Dim I As Integer derniereLigne = Sheets("Exercice").Cells(Rows.Count, 1).End(xlUp).Row 'Dernière ligne de la base de données ReDim tableau(derniereLigne - 1, 2) 'Redimensionnement For I = 0 To derniereLigne - 1 tableau(I, 0) = Sheets("Exercice").Range("A" & I + 1) 'Enregistrement des valeurs dans le tableau 7, 8, 9 , 8, 7 Next For I = 1 To derniereLigne - 1 If tableau(I - 1, 0) > 7 And tableau(I - 1, 2) = 2 Then tableau(I, 1) = 1 End If Next For I = 0 To derniereLigne - 1 If tableau(I, 0) > 8 Then tableau(I, 2) = 2 End If Next For I = 0 To derniereLigne - 1 Sheets("Exercice").Range("S" & I + 1) = tableau(I, 0) Next For I = 0 To derniereLigne - 1 Sheets("Exercice").Range("T" & I + 1) = tableau(I, 1) Next For I = 0 To derniereLigne - 1 Sheets("Exercice").Range("U" & I + 1) = tableau(I, 2) Next End Sub
Partager