Tableau VBA deux dimensions

Fermé
goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009 - 5 nov. 2009 à 11:55
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 7 nov. 2009 à 21:58
Bonjour,

J'essaie de créer ce petit script mais j' arrive pas et pourtant je cherche ! S'il y a des ames charitables capables de m'aider je vous en remercie.

Principe du script :

'on se place dans le feuillet "requête"
'on donne a la valeur K la valeur de l'id situé en "D9"
'ensuite on entre dans le feuillet "logiciel"
'pour K équivalent à la valeur de la colonne A
'alors les données sont entrées dans le tableau[i,j]
'ou i = ligne et j = colonne
'on entre dans le feuillet "requête"
'on recherche la premiere ligne vide
'et on entre les données dans cette ligne vide au fur et à mesure de la boucle


Pour l'instant cela me donne ca mais je dois dire que je commence a secher n'etant pas un pro de ce langage et le decouvrant presque. En espérant que la présentation du script est plutot clair et détaillé.


Sub ExempleTableau()

'Définition des variables
Dim i As Integer, j As Integer
Dim K As Integer

'*Choix du feuillet
Sheets("requête").Select

'*Attribution de l'id a la valeur K
K = Range("D9").Value

'*Définit le tableau à 2 dimensions ainsi que leur taille.
Dim VarTab(1 To 50, 1 To 50) As String

'*On ouvre la feuillet logiciel
Sheets("logiciel").Select

'*Pour i = 1 jusqu'à
For i = 1 To UBound(VarTab, 1) '*boucle sur la 1ere dimension

'* Si k = valeur de i
If Value = K Then
For j = 1 To UBound(VarTab, 2) '*boucle sur la 2eme dimension

'*Alimente les éléments du tableaux
VarTab(i, j) = i & j

'*on entre dans requête
Sheets("requête").Select

'*recherche ligne vide
nli = ActiveSheet.Range("A65356").End(xlUp).Row + 1

'*écrit le résultat du tableau[i,j] dans la ligne vide
ActiveSheet.Cells(nli, i, j) = VarTab(i, j)

Next j

End If

Next i


End Sub

11 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
5 nov. 2009 à 12:57
Sans exemple de ton fichier c'est pas facile mais....
je note en gras les ... corrections
Je comprends que tu veux mettre les données dans un tableau et pas les numéros de ligne : )
En espérant que cela t'aidera.
A+



Sub ExempleTableau()

'Définition des variables
Dim i As Integer, j As Integer
Dim K As Integer

'*Choix du feuillet
Sheets("requête").Select

'*Attribution de l'id a la valeur K
K = Range("D9").Value

'*Définit le tableau à 2 dimensions ainsi que leur taille.
Dim VarTab(1 To 50, 1 To 50) As String ' Certes, ça marche mais c'est lourd VarTab (50,2) aurait suffit

'*On ouvre la feuillet logiciel
Sheets("logiciel").Select

'*Pour i = 1 jusqu'à
For i = 1 To UBound(VarTab, 1) '*boucle sur la 1ere dimension
' là tu vois que tu n'utilise que 2 dimensions pas 50

'* Si k = valeur de i
If Value = K Then ' value n'est pas défini à la limite tu as peut-être voulu écrire i=k ???
For j = 1 To UBound(VarTab, 2) '*boucle sur la 2eme dimension

'*Alimente les éléments du tableaux
VarTab(i, j) = i & j ' seulement i & j varie de 1 à 50
'VarTab(i, j)=cells(i,j).value ' lavaleur d'une cellule ligne i colonne J est placée dans le tableau
'*on entre dans requête
Sheets("requête").Select

'*recherche ligne vide
nli = ActiveSheet.Range("A65356").End(xlUp).Row + 1

'*écrit le résultat du tableau[i,j] dans la ligne vide
ActiveSheet.Cells(nli, i, j) = VarTab(i, j) ' ça c'est faux il faut écrire ActiveSheet.Cells(nli, j) = VarTab(i, j)

Next j

End If

Next i


End Sub
0