cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 2013
-
Modifié par cs_andrebernard le 3/09/2013 à 18:46
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
4 sept. 2013 à 18:35
Bonjour à tous
Attention !!! la question n'est pas simple...surtout pour moi
J'espere que la réponse ne sera pas pire
Pour savoir si un tableau est initialisé, j'utilise la super API SafeArrayGetDim qui me dépanne drolement
Seulement voila, dernierement j'ai eu besoin de créer un tableau de tableau dynamique
Type Tablo
TableauDonnees() As Variant
End Type
Public TabloTableauDonnees(5) As Tablo
Je récupere des données via EXCEL grace à cette fonction
Application.WorksheetFunction.Transpose(rng)
qui rempli directement le tableau soit en une dimension soit en deux dimensions
Donc je ne connais pas à l'avance la structure du tableau
J'arrive bien à savoir si le tableau est initialisé grace à
If SafeArrayGetDim(TabloTableauDonnees(t).TableauDonnees) Then
mais j'aimerais savoir si il est en une ou deux dimensions et la...pas moyen d'y arriver
Car si je fais appel à UBOUND avec l'index 2
UBound(TabloTableauDonnees(t).TableauDonnees, 2)
et bien evidemment si le tableau n'a qu'une dimension cela créé une erreur
J'ai lu sur internet qu'il existait cette API SafeArrayGetElement() mais je ne sais pas l'utiliser ni si elle correspond à mes besoins
Quelqu'un pourrait m'eclairer un peu dans cette demande
Merci et bonne journée
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 4 sept. 2013 à 11:39
tu as alors le choix entre :
- soit faire une gestion d'erreur (simple)
- soit ajouter deux membres (dim1 et dim2) en fonction du nb de lignes de de colonnes de la plage rng) à ta structure et t'en servir ensuite (ce sont les dimensions de chaque tableau généré).
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 Modifié par ucfoutu le 3/09/2013 à 19:15
Bonjour,
Qu'est rng ? comment est-elle déclarée et initialisée ?
Si, comme tout le donne à penser, il s'agit d'un range,
1) j'ai des difficultés à "voir" un "tableau de tableaux"
2) le tableau généré depuis une plage a les dimensions de cette plage
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 20131 3 sept. 2013 à 21:26
Bonjour UCFOUTU
1) j'ai des difficultés à "voir" un "tableau de tableaux" Si cela fonctionne, j'ai cherché pendant un moment sur les forum et quelqu'un donnait cette solution
Grace à ce typage, j'ai bien un tableau qui contient un autre tableau qui est quand a lui dynamique
2) le tableau généré depuis une plage a les dimensions de cette plage Oui c'est ça.
Le tableau prend la taille du range de EXCEL
Tout marche nickel, mais je suis obligé de traîner un variable donnant le nombre de champs.
Mais ce que j'aurais aimé savoir c'est comment peut on faire pour safeArrayGetDim ou une autre API afin de savoir si le tableau de tableau a une ou deux dimension
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 Modifié par ucfoutu le 3/09/2013 à 22:16
désolé, mais je ne te comprends pas.
Autant je sais ce que peut être un tableau de tableaux, autant je ne vois vraiment pas comment tu en dresses un à partir d'une plage.
tu n'as pas répondu à :
"Qu'est rng ? comment est-elle déclarée et initialisée ? "
et c'est pourtant un point crucial.
J'ajoute que le code montré dans ton premier message ne "montre" pas un "tableau de tableaux", mais une structure de tableaux.
On s'y perd.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 20131 4 sept. 2013 à 18:06
Bon bah d'accord !!!
Je pensais que y'avais un moyen avec les API de faire ça.
Je te remercie
Bonne journée
--
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 Modifié par ucfoutu le 4/09/2013 à 18:36
Même pas besoin de deux membres supplémentaires.
Un seul suffira. Pourquoi ?
Parce que le tableau résultat d'une transposition d'une plage ne peut être d'une seule dimension que dans le seul cas où la plage ne concerne qu'une colonne (transposée en ligne)
Ce ne pourra qu'être 2 dans tous les autres cas, sans exception.