[Petite question] Différents types de variables dans une variable tableau() ?

Stakov

XLDnaute Nouveau
Bonjour à tous,

Est-il possible d'inscrire dans une variable tableau différents types de variables ?

J'aimerais en effet créer une variable tableau à 2 dimensions avec d'un côté des variables ranges et de l'autre côté des variables string.

Or d'après ce que je sais on déclare un tableau de la manière suivante :
Dim MonTableau(2,3) as Range

Donc ici chaque élément du tableau est considéré comme un Range. Est ce que si je déclare le tableau en Variant je pourrai faire ce que je souhaite ?

Merci d'avance !
Stakov
 

Efgé

XLDnaute Barbatruc
Re : [Petite question] Différents types de variables dans une variable tableau() ?

Bonjour Stakov
Pas certain d'avoir compris,
Ton tableau fait 3 lignes sur 4 colonnes.
Tu peux utiliser As Variant, mais tu peux utiliser As String, tout dépend de la façon dont tu récupère les Ranges.
VB:
Sub Tableau()
Dim MonTableau(2, 3) As String, i&, j&
For i = LBound(MonTableau, 1) To UBound(MonTableau, 1)
        MonTableau(i, 0) = Cells(i + 1, 1).Value
        MonTableau(i, 1) = Range("A" & i + 1).Address
Next i
For i = LBound(MonTableau, 1) To UBound(MonTableau, 1)
    Range(MonTableau(i, 1)).Select
    MsgBox MonTableau(i, 1)
Next i
End Sub
Cordialement
 

Stakov

XLDnaute Nouveau
Re : [Petite question] Différents types de variables dans une variable tableau() ?

Bonjour Efgé, merci pour ton retour

Je ne suis pas sur de comprendre comment tu déduis que mon tableau fait 4 colonnes alors que la déclaration que je donne est (2,3) :confused:

Ce que je voulais faire, c'était Stocker en colonne 1 / ligne 1 une variable range, et en colonne 2 / ligne 1 une variable string. Ceci afin d'utiliser cette variable tableau comme argument d'une macro.

Cela dit la manière dont tu contourne le problème est astucieuse !
merci :)
 

Paritec

XLDnaute Barbatruc
Re : [Petite question] Différents types de variables dans une variable tableau() ?

Bonsoir Fred:eek: stakov,
c'est simple un tableau commence en ligne 0 et colonne 0
par contre ta variable Range là il faut m'expliquer???
Un range c'est pour travailler sur une feuille pas dans un tableau
a+
Papou:eek:
 

ROGER2327

XLDnaute Barbatruc
Re : [Petite question] Différents types de variables dans une variable tableau() ?

Bonjour à tous


Un objet Range peut parfaitement être chargé dans un tableau de type Variant.​
VB:
Sub toto()
Dim i&
Dim v(1 To 3, 1 To 2)
    For i = 1 To 3
        Set v(i, 1) = Range(Cells(i, 1), Cells(i, 2))
        v(i, 2) = CStr(i)
    Next
    For i = 1 To 3
        MsgBox v(i, 2) & " : " & v(i, 1).Address & " : " & v(i, 1)(1) & " : " & v(i, 1)(2)
    Next
End Sub


ROGER2327
#6464


Vendredi 27 Gueules 140 (Saint Tabagie, cosmogène - fête Suprême Quarte)
3 Ventôse An CCXXI, 6,8112h - violier
2013-W08-4T16:20:49Z
 

Pièces jointes

  • XLD_201715_Tableau de type Variant.xlsm
    16.2 KB · Affichages: 43

Paritec

XLDnaute Barbatruc
Re : [Petite question] Différents types de variables dans une variable tableau() ?

Bonsoir Roger le forum
Je n'ai jamais dit que l'on ne pouvait pas charger un range dans un tableau
mais qu'un qu'un élément du tableau soit un range là ????
a+
papou:eek:
 

ROGER2327

XLDnaute Barbatruc
Re : [Petite question] Différents types de variables dans une variable tableau() ?

Re...

Bonsoir Roger le forum
Je n'ai jamais dit que l'on ne pouvait pas charger un range dans un tableau
mais qu'un qu'un élément du tableau soit un range là ????
a+
papou:eek:
Je n'ai jamais dit que vous avez dit que...
Mais je dis qu'un élément d'un tableau peut parfaitement être un objet Range complet (i.e. pas seulement les valeurs de l'objet, mais l'objet et tous ses attributs). Si vous mettez un point d'arrêt après la fin de la première boucle du code toto, vous constaterez que les éléments v(1,1), v(2,1), v(3,1) sont de type Variant/Object/Range.
On rencontre rarement ce type d'utilisation des tableaux, qui peuvent rapidement devenir très encombrants...


Bonne soirée.


ROGER2327
#6465


Vendredi 27 Gueules 140 (Saint Tabagie, cosmogène - fête Suprême Quarte)
3 Ventôse An CCXXI, 7,0825h - violier
2013-W08-4T16:59:53Z
 

Pièces jointes

  • Capture2.jpg
    Capture2.jpg
    69.9 KB · Affichages: 74
  • Capture2.jpg
    Capture2.jpg
    69.9 KB · Affichages: 84
  • Capture2.jpg
    Capture2.jpg
    69.9 KB · Affichages: 82

Efgé

XLDnaute Barbatruc
Re : [Petite question] Différents types de variables dans une variable tableau() ?

Bonjour Stakov, Bonjour Papou ;), Bonjour ROGER
Je reviens sur ce fil pour amener quelques précisions à l'attention de Stakov
Quand on déclare un tableau à deux dimentions, la première représente "les lignes", la deuxième "les colonnes"
Comme l'a dit Papou Par défaut, les tableaux commencent à 0.
Donc MonTableau(2, 3) peut être représenté comme ceci :
____________________________
!(0 ; 0) ! (0 ; 1) ! (0 ; 2) !(0 ; 3) !
____________________________
!(1 ; 0) ! (1 ; 1) ! (1 ; 2) !(1 ; 3) !
____________________________
!(2 ; 0) ! (2 ; 1) ! (2 ; 2) !(2 ; 3) !
____________________________

Ton idée serait donc plutot MonTableau(1 to 3, 1 to 2) :

_____________
!(1 ; 1) ! (1 ; 2) !
_____________
!(2 ; 1) ! (2 ; 2) !
_____________
!(3 ; 1) ! (3 ; 2) !
_____________


Ensuite, comme l'a expliqué ROGER, on peut attribuer un objet à un tableau avec, dans le cas qui nous occupe,
Set MonTableau(0, 0) = Range("A1")
Ceci va permetre de retrouver toutes les caractéristiques de l'objet mais va allourdir la place mémoire utilisée par le tableau.
C'est pour cela que j'avais précisé " tout dépend de la façon dont tu récupère les Ranges. "

Ma proposition te permet d'avoir les adresses des ranges tout en conservant un tableau de type String, beaucoup plus léger.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji