VBA Excel / Tableaux

yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 février 2009 - 9 janv. 2009 à 16:35
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 12 janv. 2009 à 00:12
Bonjour,

Soit la variable "nomtab", chaine de caractère concaténée :

Puis ensuite je voudrais que ce "nomtab" corresponde aux différents tableaux que j'ai préalablement créés.

Ce qui donnerait au final quelquechose come ça :

nomtab = "T_" & LCase(cat) & "_" & type_valorisation
nomtab(1, 1) = 5

Or biensur cela ne fonctionne pas car au début "nomtab" est une chaine de caractère puis ensuite "nomtab" est un tableau.
Je ne sais pas si vous voyez, mais je veux agir le libellé du tableau, ceci en fonctionne d'une vhaine de caractères.

Merci d'avance.

Y.C

4 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 janv. 2009 à 19:36
salut,

le tableau a un nom (de variable) pour le mode développement, mais tu ne peux pas travailler dans un tableau en essayant d'utiliser une variable qui va créer son "nom", ce n'est pas du php...

NB : "VBA EXCEL" ce n'est pas VB6..., il y a une rublique pour VBA.
topic déplacé

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 janv. 2009 à 19:39
Salut
J'ai rien compris.
Au départ, tu nous dit que c'est une chaine.
Après tu nous sors d'autres variables "cat" et "type_valorisation" sorties de je ne sais où
et au final tu écris un chiffre dans un tableau portant le nom de la chaine.

Alors parlons le même langage, et pour commencer, le français :
"je voudrais que "nomtab" corresponde aux tableaux que j'ai créés" : Corrspondre : Quelle définition, comment veux tu, informatiquement, faire correspondre une chaine et un tableau ?
"je veux agir [sur] le libellé du tableau" : Faudra nous dire ce que c'est qu'un libellé de tableau

S'il te plait, donne des exemples concrets de ce que veux faire, parce que là, c'est du charabia !
Est-ce que, ce que tu appelles "tableau" a un rapport avec des Cellules dans une feuille Excel ou bien seulement dans des tableaux définis sous VBA ? Comment as-tu déclaré tes tableaux ? de quels types ? ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 février 2009
11 janv. 2009 à 21:55
Voilà je voudrais en fait "réduire" ce code suivant (c un peu l'usine à gaz) :

Dim val As Integer
Dim num_ligne As Integer
Dim cat As String

Dim T_banque_d(1 To 12, 2009 To 2100) As Single
Dim T_banque_c(1 To 12, 2009 To 2100) As Single
Dim T_salaire_c(1 To 12, 2009 To 2100) As Single
Dim T_logement_d(1 To 12, 2009 To 2100) As Single
Dim T_logement_c(1 To 12, 2009 To 2100) As Single
Dim T_equipement_d(1 To 12, 2009 To 2100) As Single
Dim T_electricite_d(1 To 12, 2009 To 2100) As Single
Dim T_nourriture_d(1 To 12, 2009 To 2100) As Single
Dim T_diversloisirs_d(1 To 12, 2009 To 2100) As Single
Dim T_diversloisirs_c(1 To 12, 2009 To 2100) As Single
Dim T_impotsassurance_d(1 To 12, 2009 To 2100) As Single
Dim T_vetement_d(1 To 12, 2009 To 2100) As Single
Dim T_sante_d(1 To 12, 2009 To 2100) As Single
Dim T_sante_c(1 To 12, 2009 To 2100) As Single
Dim T_telephonie_d(1 To 12, 2009 To 2100) As Single
Dim T_transport_d(1 To 12, 2009 To 2100) As Single
Dim T_remboursements_c(1 To 12, 2009 To 2100) As Single

num_ligne = 2

While Worksheets("TRANSACTIONS").Cells(num_ligne, 1).Value <> ""If (Month(Worksheets("TRANSACTIONS").Cells(num_ligne, 1).Value)) 1 And (Year(Worksheets("TRANSACTIONS").Cells(num_ligne, 1).Value)) 2009 Then

cat = Worksheets("TRANSACTIONS").Cells(num_ligne, 7).Value

If Worksheets("TRANSACTIONS").Cells(num_ligne, 7).Interior.ColorIndex = 10 Then
type_valorisation = "c"
End If

If Worksheets("TRANSACTIONS").Cells(num_ligne, 7).Interior.ColorIndex = 45 Then
type_valorisation = "d"
End If

nomtab = "T_" & LCase(cat) & "_" & type_valorisation
'*****
If nomtab = "T_banque_d" Then
T_banque_d(1, 2009) = T_banque_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_banque_c" Then
T_banque_c(1, 2009) = T_banque_c(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 4).Value
End If
If nomtab = "T_salaire_c" Then
T_salaire_c(1, 2009) = T_salaire_c(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 4).Value
End If
If nomtab = "T_logement_d" Then
T_logement_d(1, 2009) = T_logement_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_logement_c" Then
T_logement_c(1, 2009) = T_logement_c(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 4).Value
End If
If nomtab = "T_equipement_d" Then
T_equipement_d(1, 2009) = T_equipement_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_electricite_d" Then
T_electricite_d(1, 2009) = T_electricite_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_nourriture_d" Then
T_nourriture_d(1, 2009) = T_nourriture_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_diversloisirs_d" Then
T_diversloisirs_d(1, 2009) = T_diversloisirs_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_diversloisirs_c" Then
T_diversloisirs_c(1, 2009) = T_diversloisirs_c(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_impotsassurance_d" Then
T_impotsassurance_d(1, 2009) = T_impotsassurance_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_vetement_d" Then
T_vetement_d(1, 2009) = T_vetement_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_sante_d" Then
T_sante_d(1, 2009) = T_sante_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_sante_c" Then
T_sante_c(1, 2009) = T_sante_c(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 4).Value
End If
If nomtab = "T_telephonie_d" Then
T_telephonie_d(1, 2009) = T_telephonie_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_transport_d" Then
T_transport_d(1, 2009) = T_transport_d(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 3).Value
End If
If nomtab = "T_remboursements_c" Then
T_remboursements_c(1, 2009) = T_remboursements_c(1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 4).Value
End If
'*****
End If

num_ligne = num_ligne + 1

Wend

Worksheets("Répartition").Cells(5, 4).Value = T_banque_d(1, 2009)
Worksheets("Répartition").Cells(5, 5).Value = T_banque_c(1, 2009)
Worksheets("Répartition").Cells(5, 6).Value = T_salaire_c(1, 2009)
Worksheets("Répartition").Cells(5, 7).Value = T_logement_d(1, 2009)
Worksheets("Répartition").Cells(5, 8).Value = T_logement_c(1, 2009)
Worksheets("Répartition").Cells(5, 9).Value = T_equipement_d(1, 2009)
Worksheets("Répartition").Cells(5, 10).Value = T_electricite_d(1, 2009)
Worksheets("Répartition").Cells(5, 11).Value = T_nourriture_d(1, 2009)
Worksheets("Répartition").Cells(5, 12).Value = T_diversloisirs_d(1, 2009)
Worksheets("Répartition").Cells(5, 13).Value = T_diversloisirs_c(1, 2009)
Worksheets("Répartition").Cells(5, 14).Value = T_impotsassurance_d(1, 2009)
Worksheets("Répartition").Cells(5, 15).Value = T_vetement_d(1, 2009)
Worksheets("Répartition").Cells(5, 17).Value = T_sante_d(1, 2009)
Worksheets("Répartition").Cells(5, 17).Value = T_sante_c(1, 2009)
Worksheets("Répartition").Cells(5, 18).Value = T_telephonie_d(1, 2009)
Worksheets("Répartition").Cells(5, 19).Value = T_transport_d(1, 2009)
Worksheets("Répartition").Cells(5, 20).Value = T_remboursements_c(1, 2009)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 janv. 2009 à 00:12
nomtab = "T_" & LCase(cat) & "_" & type_valorisation





comme dit précédemment, tu ne peux pas utiliser un tableau par son nom
"dynamique"




par contre tu peux créer un tableau de ... tes tableaux. de 1 à 16. et tu gardes l'index de la première dimension dans laquelle tu veux lire ou écrire les valeurs



type_valorisation =



<strike>"c"</strike> 2









T_Unique(type_valorisation,1, 2009) = T_Unique(type_valorisation,1, 2009) + Worksheets("TRANSACTIONS").Cells(num_ligne, 4).Value





maintenant ton code à l'air d'un sacré sac de noeuds , il y a sans doute d'autres choses à revoir... (conception)

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
Rejoignez-nous