Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion noelle
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

noelle

Guest
bonsoir à tous
je cherche à lire un tableau de données contenu dans une feuille excel en utilisant la variable "array" qui, si j'ai bien compris me remonte les valeurs de la plage range selectionnée.
mais je n'arrive pas à trouver la façon d'utiliser "array" en vba
quelqu'un aurait il une idée ?
merci mille fois d'avance
 
Bonsoir Noelle, le Forum

Une Array peu avoir plusieurs dimensions... Disons que pour commncer on peux décrire tout simplement ceci :

Sub MiniArray()
Dim MyArray As Variant
Dim i As Byte

MyArray = Sheets("Feuil1").Range("A1:A500")

For i = 1 To UBound(MyArray)
MyArray(i, 1) = MyArray(i, 1) * 2
Next

Sheets("Feuil1").Range("A1:A500") = MyArray

End Sub

Ce genre de codes sur de grande plage de données est jusqu'à dix fois plus rapide que de travailler directement dans une boucle For Each Cell in Plage...

Mais peut-être cherches-tu quelques chose de plus précis ? ou de plus compliqué ?

Bonne Soirée
@+Thierry
 
Bonjour Noelle, le Forum

Tiens, pendant la nuit "OurDearFriend" a mis un autre exemple tout chaud de ce type d'Array dans le Forum, çà permettra de confirmer quant à la rapidité d'exécution car il utilise le même type de Timer que j'ai testé dimanche soir pour les Set de Collection et c'est concluant :

=> Lien supprimé

Bonne Journée
@+Thierry
 
Bonjour le forum

Sur un fil précédent, dans un test d'optimisation, MyDearFriend a démontré brillamment que le temps d'exécution entre deux macros en boucle de nature différente peut varier de 1 à 15 fois environ.

@+Thierry donne dans ce fil un modèle de configuration de macro utilisant la boucle For Next avec affichage en fin de calcul de tableau.

Avec tout cela, j'ai testé le temps d'exécution de deux macros de natures de boucle différentes mais qui affichent à chaque récurrence le résultat dans le tableau.

Essai 1 avec For Each Next :

Sub ForeachTableau()
Dim A As Long
T = Timer
A = 1
For Each C In Sheets("Feuil1").Range("A1:J50000")
C.Value = A
A = A + 1
Next
MsgBox " cellules renseignées en " & CStr(Timer - T) & " secondes"
End Sub

Essai 2 avec For Next en double boucle :
Sub ForTableauBis()
Dim MyArray As Variant
Dim i As Long
Dim j As Long
Dim A As Long
A = 1
T = Timer
MyArray = Sheets("Feuil1").Range("A1:J50000")
For i = 1 To UBound(MyArray, 1)
For j = 1 To UBound(MyArray, 2)
Cells(i, j) = A
A = A + 1
Next j
Next i
MsgBox " cellules renseignées en " & CStr(Timer - T) & " secondes"
End Sub

Les temps d’exécution sont à peu de chose près équivalents : 54s sur ma bécane.


Puis j’ai repris l’essai deux. J’ai modifié la macro comme le suggère opportunément @+Thierry, de façon que l’affichage ne soit effectué qu’en fin de procédure:

Essai 3 :
Sub ForTableau()
Dim MyArray As Variant
Dim i As Long
Dim j As Long
Dim A As Long
A = 1
T = Timer
MyArray = Sheets("Feuil1").Range("A1:J50000")
For i = 1 To UBound(MyArray, 1)
For j = 1 To UBound(MyArray, 2)
MyArray(i, j) = A
A = A + 1
Next j
Next i
Sheets("Feuil1").Range("A1:J50000") = MyArray
MsgBox " cellules renseignées en " & CStr(Timer - T) & " secondes"
End Sub

Temps d’exécution : 0,6s !

Y’a pas photo, 100 fois plus vite !

Cette configuration fait toute la différence, je roule désormais en Ferrari, Lol

Merci Père Noël @+Thierry

Cordialement

Bernard
 
Héhéhé Bernard

Merci en tout cas, savais-tu même que Ferrari vendait des LapTops ?

!!!

Mais même avec un truc comme çà, il reste des bases importantes en programmation, que, si elles sont ignorées, on a vite fini par se retrouver en 2 Chevaux !!

Bonne Fin de Journée
@+Thierry
 
Re à tous

C'est pour le fun hi hi

Quel est le sexe d'un micro-ordinateur ?

Réponse d'un informaticien :

Un micro-ordinateur est de sexe féminin pour les 5 raisons suivantes :

* A l'exception de son concepteur, personne ne comprend sa logique interne.
* Avant de faire impression, il doit être aperçu.
* Les menus qu'il affiche sont copieux mais beaucoup d'options sont indisponibles.
* La moindre erreur est stockée en mémoire pour être ressortie au moment le plus inopportun.
* Vous découvrez vite qu'il coûte un budget énorme en accessoires et en maintenance.

Réponse d'une informaticienne :

Un micro-ordinateur est de sexe masculin pour les 5 raisons suivantes :

* Pour capter son attention, il faut d'abord l'allumer.
* Il contient plein d'informations mais il est sans imagination.
* Il est incapable de vider la poubelle sans injonction de votre part.
* Il est supposé vous aider, mais la plupart du temps c'est lui qui constitue le problème.
* Vous réalisez vite que si vous aviez attendu plus longtemps avant de l'acquérir, vous auriez eu un modèle plus performant !


Salut 🙂

Bernard
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
255
Réponses
4
Affichages
133
Réponses
4
Affichages
138
Réponses
7
Affichages
183
Réponses
6
Affichages
177
Réponses
3
Affichages
170
  • Question Question
XL 2019 fonction
Réponses
2
Affichages
133
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…