Bonjour JC06, Pascal, le Forum
Et oui l'usage d'un Tableau est bien pratique dans pas mal de cas et c'est surtout bien plus rapide d'exécution qu'une boucle du Style "For Each Cell in Range" !
L'usage d'un Tableau en simple transfer comme dans ce cas précis est un premier pas très facile à franchir puisque il ne faut respecter que la taille de départ et celle d'arrivée.
Mais puisque vous avez l'air de vous interresser à ces tableaux, dans la foulée on peut faire des "choses" ...
Imaginons que Pascal ait besoin de tranférer les données de "D6:E94" en Multipliant la valeur de chaque Item en Colonne "D" par 2 et en Divisant la Valeur de chaque Item de la Colonne "E" par 2...
Voici comment le tablo (oups tableau !!! lol) va servir :
Sub ReportAndCalculationViaArray()
Dim Tablo As Variant
Dim i As Integer
Tablo = Workbooks("Annee2.xls").Worksheets("Balance").Range("D6:E94")
For i = 1 To UBound(Tablo)
Tablo(i, 1) = Tablo(i, 1) * 2
Tablo(i, 2) = Tablo(i, 2) / 2
Next i
Workbooks("Annee3.xls").Worksheets("BAI").Range("D6:E94") = Tablo
End Sub
Il est bien entendu que les cellule de la Plage source contiennent évidemment du numérique, sinon on va entendre VBE !!!
Mais qu'à celà ne tienne, puisque on a tout dans un tableau, on peut aussi scanner les valeurs dans la foulées comme ceci :
Sub ReportAndCalculationViaArray()
Dim Tablo As Variant
Dim i As Integer
Tablo = Workbooks("Annee2.xls").Worksheets("Balance").Range("D6:E94")
For i = 1 To UBound(Tablo)
If IsNumeric(Tablo(i, 1)) Then Tablo(i, 1) = Tablo(i, 1) * 2
If IsNumeric(Tablo(i, 2)) Then Tablo(i, 2) = Tablo(i, 2) / 2
Next i
Workbooks("Annee3.xls").Worksheets("BAI").Range("D6:E94") = Tablo
End Sub
Voilà comme ceci ce fil pourra servir pour les premiers pas de Tableaux !
Bonne Fin de Journée
@+Thierry