Hello,
j'ai du mal à comprendre l'intérêt d'utiliser des variables globales et des enum alors que l'objet Range() est fait pour ça ...
Qu'est-ce que tu fais que Range() ne sait pas faire ?
Je ne vois pas bien le rapport avec les objets range...
Je vais développer un peu plus mon organisation (on ne sait jamais si ça se trouve je m'organise comme un manche ):
Imaginons un onglet sur lequel on trouve un tableau comportant trois colonnes, par exemple concernant une liste de points:
- Colonne d'abscisse X
- Colonne d'ordonnée Y
- Colonne de couleurs des points (je dis ça au pif hein c'est pour l'exemple...)
Ce tableau a bien sûr une ligne d'en-tête X Y couleur.
L'en-tête X est contenu dans la cellule "A1".
Je pourrais faire référence à la troisième ligne des ordonnées de mon tableau de la manière suivante:
worksheets(1).range("A1").offset(1,3).value
Cependant je ne trouve ça ni pratique ni pérenne.
Sur la question de la praticité, je préfère avoir des noms qui veulent dire qqch à la place de "A1" où de la colonne 1, du coup en définissant:
1 2
| public const C1_Pts as string = "A1"
public const DCOL_YPts as long = 1 |
je peux alors écrire :
worksheets(1).range(C1_Pts).offset(DCOL_YPts,3).value
(Je précise qu'en vrai mes pages ont aussi des noms, et que je donne des noms à mes cellules Excel)
Pour la pérennité, ma méthode me semble également utile. Imaginons qu'on rajoute une colonne avant celle de la couleur, par exemple le type de points, à ce moment là il me suffira de changer dans mes constantes globales la valeur de DCOL_YPts, et je n'aurais pas à toucher au reste du code...
Bon c'est un peu dur à expliquer textuellement et j'ai fait très bref mais ça donne une idée de ce que je fais je pense.
Mon objectif actuel est de synthétiser toutes les informations constantes associées à un tableau de façon plus compacte.
Ci-dessous un exemple de code issu d'une de mes applis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| '====> Premières cellules de tableaux
Public Const ISCc1_DonImp_C1 As String = "ISC_DonImp_C1"
'====> Organisation des tableaux
' Données d'import
Public Enum DonImp
dcolNoms = 0
dcolNbCar = 1
dcolNoCol = 2
dcolNoLig = 3
ivbNoms = dcolNoms + 1
ivbNbCar = dcolNbCar + 1
ivbNoCol = dcolNoCol + 1
ivbNoLig = dcolNoLig + 1
NbCol = 4
End Enum
Public Const INFOS_DonImp As String = "True,True,False,False" |
J'aimerais utiliser une instruction du type Enum, mais qui marche aussi pour les string, et encore mieux pour des tableaux array, ce qui me premettrait d'écrire plus intuitivement mon code (et qu'il soit également plus clair), et dans l'idéal j'aimerais transmettre toutes les infos associées à un tableau à une sous-procédure de manière simple.
Pour Tirex28:
Mon problème n'est pas de déclarer plusieurs tableaux, mais que je vais avoir des tableaux ayant un nombre de données associées différentes. Exemple:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Public Type Tableau1
Nom As String
Col1 As Long
NbCol As Long
End Type
Public Type Tableau2
Nom As String
Col1 As Long
Col2 as Long
NbCol As Long
End Type
Sub Init()
With MesTableaux1
.NbCol = 1
.dcolCol1 = 0
.Nom = "Données"
End With
With MesTableaux2
.NbCol = 2
.dcolCol1 = 0
.dcolCol2 = 1
.Nom = "Rapport"
End With
End Sub |
J'espère avoir été plus clair...?
Partager