Opérations sur les éléments d'un tableau à deux dimensions

Résolu
Decarlo - 16 mai 2020 à 03:01
 Decarlo - 16 mai 2020 à 22:27
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

Whismeril Messages postés 19055 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 12 juin 2024 657
16 mai 2020 à 08:54
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.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 21
16 mai 2020 à 11:11
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 

0
Whismeril Messages postés 19055 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 12 juin 2024 657
16 mai 2020 à 12:02
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.
0
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é.
0
Rejoignez-nous