Opérations sur les éléments d'un tableau à deux dimensions [Résolu]

Signaler
-
 Decarlo -
Salut,
J’ai une petite préoccupation concernant les tableaux en VBA. En effet, j’essaie un peu de m’exercer en remplissant un tableau de 2x5000 éléments (entiers) qui proviennent de colonnes F et L.
L’objectif est de faire la soustraction pour obtenir une différence entre les éléments de F et L et ensuite, les remplacer dans la colonne F.
Avec ce bout de code que j’ai essayé, ça marche.
Sub enreg_tab()
Dim tab_exemple(4999, 1)

For i = 0 To 4999
'Enregistrement des valeurs dans le tableau
tab_exemple(i, 0) = Range("F" & i + 2)
tab_exemple(i, 1) = Range("L" & i + 2)
'Soustraction et remplacement
Range("F" & i + 2) = tab_exemple(i, 0) - tab_exemple(i, 1)

Next
End Sub

Sauf que ça me prend environ 20 minutes pour finaliser l’opération. Alors, étant débutant, je me tourne vers vous pour enfin, essayer de trouver une alternative plus rapide.
Cordialement !

3 réponses

Messages postés
14896
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 octobre 2020
446
Bonjour

tout d'abord voici un petit tuto sur la bonne façon de poster un code sur le forum https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, je te conseille la lecture de cet autre tuto https://silkyroad.developpez.com/vba/tableaux/
Dès l'introduction, il montre comment remplir un tableau comme il faut.
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
19
Bonjour,

Poster sur plusieurs forums, est un manque de respect envers tous les bénévoles qui te consacrent de leur temps pour résoudre ton problème !
La perversité de cette démarche, c'est que tu ne nous informes pas que tu as posté sur d'autres forums !
Tu les laisses se décarcasser dans leur coin, sans leur donner la possibilité de consulter les réponses, souvent très intéressantes, des autres forums.
Cela aboutit généralement à leur faire perdre du temps qu'ils pourraient consacrer à d'autres personnes qui eux aussi ont besoin d'aide.

Avec des tableaux en moins de 0.05 seconde :
Sub enreg_tab()
Dim tabF, tabL, i As Long
Dim t As Single
t = Timer
  tabF = Range("F2:F5001").Value
  tabL = Range("L2:L5001").Value
  For i = 1 To 5000
    tabF(i, 1) = tabF(i, 1) - tabL(i, 1)
  Next i
  Range("F2:F5001").Value = tabF
Debug.Print Timer - t & " seconde"
End Sub 

Messages postés
14896
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 octobre 2020
446
Salut Patrice,
beaucoup postent sur plusieurs forums...

Le tuto que je lui ai mis en lien explique qu'il faut passer de "cellules" à tableau et inversement comme tu l'as fait.
Merci beaucoup à vous tous pour de l'aide. Vos codes ça marche nickel et mon problème est résolu. Merci pour les reproches aussi, j'suis désolé.