probleme:constante requise

Excel.Deb

XLDnaute Nouveau
Bonjour,
je voudrais remplir un tableau à partir des données d'un autre tableau dans une autre feuille.
Voici le code vba,mais après compilation je recois une erreur:constante requise sur la variable j de tableau_pdp.
Sub parcours_tableau()

'Déclaration des variables

Dim i As Integer, j As Integer
i = 66
j = 15
Dim tableau_pdp(i, j) As Integer
Dim tab_final(1 To 100, 1 To 5) As Variant

ReDim Preserve tableau_pdp(1 To i, 1 To j)
j = 3
For i = 1 To 66
If Not IsEmpty(Cells(i, j)) = True Then
tab_final(i, 1) = tableau_pdp(i, 3)
End Sub
Merci de me suggérer des idées d'amélioration
 

Paf

XLDnaute Barbatruc
Bonjour,

beaucoup de choses ....

si la déclaration nécessite une constante, déclare i et j comme constante ( et supprime les déclarations Dim):
VB:
Const i = 66
Const j = 15

Mais pourquoi déclarer
Dim tableau_pdp(i, j) As Integer puis redimensionner ReDim Preserve tableau_pdp(1 To i, 1 To j)

autant déclarer directement Dim tableau_pdp(1 To i, 1 To j) As Integer.

Si je comprend bien, certains éléments de tableau_pdp vont être "copiés" dans le tableau tab_final , pourquoi déclarer un tableau as integer et l'autre as variant puisqu'on ne viendra y copier que des integer (???)
pourquoi déclarer le tableau "recevant" plus grand que le "donnant" ?


Sur le principe de fonctionnement du code, on va copier les éléments d'un tableau vide dans un autres tableau en fonction de la valeur d'une cellule d'une feuille ?

Il faudrait d'abord initialiser le premier tableau ( a priori avec les données de la feuille) .

A bientôt
 

Excel.Deb

XLDnaute Nouveau
Bonjour,
merci pour la remarque déjà,je viens de la corriger.
Pour clarifier le tableau_pdp contient des articles avec des quantités planifiés,donc on va se contenter de l'extraction des codes des articles et par la suite copier les composants adéquats qui se trouvent dans un autre tableau...donc je me suis dit que le "tab_final" contient plusieurs types de variables d'où le type variant.
ce sont des tableaux qui sont déjà créés sur excel,je voulais juste les identifier avec un code afin de pouvoir travailler avec,donc pourquoi initialiser le premier tableau?
merci
 

Paf

XLDnaute Barbatruc
le tableau_pdp contient des articles avec des quantités planifiés

Tel que le code est écrit, le tableau ne contient rien du tout puisqu'il vient d'être dimensionné !

Ou le code n'est pas complet, ou il y a confusion entre tableaux sur feuilles Excel et tableaux VBA (array), ou je n'ai rien compris, mais le code n'est pas prévu pour réaliser ce que tu décris.
 

Excel.Deb

XLDnaute Nouveau
Re,
le code n'est pas complet et incorrect parce qu'il veut pas se compiler,et je suis toujours débutant en vba.
j'ai déjà publié ce que je voudrais réaliser comme travail,mais tant qu'il y a pas de suggestions concrètes pour le moment,je me débrouille.
merci pour l'astuce de la constante quand meme.
 

Paf

XLDnaute Barbatruc
l'astuce n'en n'est pas une ...

Car dans ce cas, déclarer i et j comme constante, interdira leur modification dans le reste du code.

Si dès le départ on connait les dimensions à donner au tableau on peut écrire :

VB:
Dim tableau_pdp(1 To 65, 1 To 15)

Si ce tableau doit contenir une plage de données, on peut écrire (par exemple):
Code:
Dim tableau_pdp
tableau_pdp=Worksheets("Feuil1").range("A1:O65")

le tableau sera alors initialisé avec les données de la plage de la feuille.

Ses dimensions peuvent être récupérées par :
pour la première : Ubound(tableau_pdp,1)
pour la deuxième: Ubound(tableau_pdp,2)


...il y a pas de suggestions concrètes pour le moment...
Ben .... la seule demande concerne un problème de constante...

Si tu attend plus , demande plus .... mais il faudra plus de précisions...

Je te dis que le tableau est vide, tu me répond : le tableau_pdp contient des articles avec des quantités .
Déjà on ne se comprend pas. de plus si ce tableau contient des articles (chaine de caractères) il ne faut pas le déclarer en Integer.

A+
 

Discussions similaires

Réponses
11
Affichages
375

Statistiques des forums

Discussions
312 687
Messages
2 090 950
Membres
104 705
dernier inscrit
Mike72