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

Rechercher des sujets similaires à "incompatibilite type"