Incompatibilité de type
Bonjour le forum
Je suis en train de reprendre une application de gestion bancaire sous excel (2016 Fr)
J'ai commencé à la connecter à une base ACCESS, qui va petit à petit devenir le réceptacle des données (comptes, etc...), en lieu et place des feuilles EXCEL.
Dans ce forum, j'ai récupéré des briques de code pour insérer le résultat de mes requêtes SQL dans des ListBox
Le résultat de la requête SQL retourne une trentaine d'enregistrements
La valeur de a est celle-ci (variables locales) a : : Variant/Variant(0 to 12, 0 to 30)
Dans l'extrait de code, ci-dessous, sur la dernière ligne j'obtiens l'erreur : "Incompatibilté de TYPE" et j'ai beau chercher je ne comprends pas ce que je dois faire pour corriger cette erreur.
Merci d'avance pour vos lumières !
Patrick
.....
Set MonFichierAccess = OpenDatabase(FichierAccess)
Set MaTableDansAccess = MonFichierAccess.OpenRecordset(TableComptes, dbOpenTable)
'Instanciation des variables
Set cnx = New ADODB.Connection
Set rst = New ADODB.Recordset
'Connexion à la base de données
cnx.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FichierAccess & ";Persist Security Info=False;"
cnx.Open
'Exécution de la requête
rst.Open "SELECT * from Lignes_Compte_Principal WHERE Pointage <> 'x' ORDER BY Dates ", cnx
a = rst.GetRows
LBX_COMPTES.ColumnCount = UBound(a, 1) + 1 ' Donne bien 13 (il y a bien 13 colonnes)
LBX_COMPTES.List = Application.Transpose(a) ' ERREUR RETOURNEE : Incompatibilté de TYPE
......................
Bonjour Patrick_13080 et
Erreur dans la compréhension du code pour moi
LBX_COMPTES.ColumnCount = UBound(a, 1) + 1 Ne vous donne pas le nombre de colonnes mais de lignes, puisque vous limitez le calcul à la première dimension
Donc me transpose est peut-être de trop
De plus, ce n'est pas indiqué, est-ce que vous utilisez "Option Explicite" en début de module et déclarez bien vos variables !?
A+
Bonjour BrunoM45 et merci pour cette réponse
Option explicit renseignée : oui
Variable déclarées : il manquait la déclaration de a, je l'ai déclaré en Variant
Après, erreur sur la compréhension du code : peut-être bien ;)
Voilà ce que je viens d'essayer :
Mise en commentaires de : LBX_COMPTES.ColumnCount = UBound(a, 1) + 1
LBX_COMPTES.List = a
Je n'ai plus l'erreur précédente, et la listbox est bien renseignée, sauf que:
1- l'intérieur de la listbox est tout noir et quand je pointe sur une ligne je peux voir les données sur cette ligne (comme si la listbox était toute sélectionnée)
2-On se rend compte clairement que le remplissage des données dans la listbox s'est fait dans le mauvais sens (les lignes sont des colonnes)
==> Donc l'instruction 'application.transpose(a) est nécessaire à mon sens
Qu'en pensez-vous ?
Je viens de corriger le fond noir de la listbox ! erreur de ma part, désolé !
Donc : comment inverser l'écriture des données ?
Merci d'avance
Bonjour,
Bon, j'ai essayé plein de choses différentes, mais ce qui fonctionne vraiment bien, c'est de passer par une feuille excel cachée, que je popule, via requette SQL et qui sert de rowsource pour ma listbox.
Cela règle tous les problèmes : Le message d'erreur (incompatibilité de type), et le sens des informations dans la listbox.
Ce n'est pas élégant, mais au moins ça fonctionne bien, et me permet d'avancer sur mon projet
Merci encore pour vos participations & bonne continuation