Bonsoir,
Autre question, quelle différence cela fait-il si je renseigne : donnees = Range("C20:C24").Cells au lieu de .value ?
Que nous dis Crosoft à ce sujet ?
Propriété Worksheet.Cells : Renvoie un objet Range qui représente toutes les cellules de la feuille de calcul (et pas seulement les cellules actuellement utilisées).
Objet Range (Excel) : Représente une cellule, une ligne, une colonne, une sélection de cellules contenant un ou plusieurs blocs de cellules contigus ou une plage 3D.
Le membre par défaut de Range transfère les appels sans paramètres à la propriété Value et les appels avec paramètres au membre Item.
Donc si l'on suit le raisonnement, Cells est un objet Range qui transfère les appels sans paramètres à la propriété Value. Donc l'un comme l'autre renverra un tableau à deux dimensions. Exemple :
Sub Test101()
Dim t As Variant
t = Range("Tableau1")
Debug.Print "With t = Range(""Tableau1"")"
Debug.Print UBound(t)
Debug.Print t(2, 1)
Set t = Nothing
t = Range("Tableau1").Cells
Debug.Print "With t = Range(""Tableau1"").Cells"
Debug.Print UBound(t)
Debug.Print t(2, 1)
Set t = Nothing
t = Range("Tableau1").Value
Debug.Print "With t = Range(""Tableau1"").Value"
Debug.Print UBound(t)
Debug.Print t(2, 1)
End Sub
Pour le résultat :
Maintenant, je le dis toujours mieux vaut être explicite avec Excel donc dans le meilleur des monde, on utilisera Feuil1.Range("A1:A100").Value et cela même si cela nous coûte en écriture.
Bonne programmation...