incompatibilité de type pour un tableau

jeremy29100

XLDnaute Nouveau
Bonjour à tous,

J'ai un soucis dans un programme que j'ai réalisé, qui fait appel à des sous fonctions. Ce sont des fonctions qui utilisent des tableaux créés dans le programme principal. Cependant j'ai une erreur qui s'affiche que je ne comprends "incompatibilité de type : tableau ou type défini par l'utilisateur attendu" au niveau de mon programme principal sur l'appel de la fonction concentration.

Code:
Sub CalculRimp()

'création de mes 2 tableaux
Dim max As Double
Dim tabt(10000), tabq(10000) As Double
Dim w As Integer
max = Workbooks("Outil.xls").Sheets("1").Cells(12, 8).Value
    For w = 9 To max
        tabt(w) = Workbooks("Outilxls").Sheets("1").Cells(w, 3)
        tabq(w) = Workbooks("Outil.xls").Sheets("1").Cells(w, 4)
    Next w

dim n, i as Integer
n=1000
       for i=1 to n
       c_courant = concentration(tabt(), tabq())
       next i
End Sub

Public Function concentration(ByRef tab1() As Double, ByRef tab2() As Double) As Double
max = Workbooks("Outil.xls").Sheets("1").Cells(12, 8).Value
dim Cq as double
dim tot as double
tot=0
dim q as integer
        for q=1 to max
       Cq=tab1(q)*tab2(q)
       tot=tot+Cq
       next q
concentration=tot
End Function
Je ne comprends pas l'incompatibilité de type sachant que tous mes tableaux sont des doubles.
Est-ce que quelqu'un pense avoir une idée d'où provient mon erreur?

En vous remerciant par avance,

Cordialement

jérémy
 

Efgé

XLDnaute Barbatruc
Re : incompatibilité de type pour un tableau

Bonjour jeremy29100 Et bienvenu sur le forum

tous tes tableaux ne pas sont des double
Déclarer :
Dim tabt(10000), tabq(10000) As Double
Reviens à
Dim tabt(10000) As Variant, tabq(10000) As Double
Pour n'avoir que des doubles :
Dim tabt(10000) As Double, tabq(10000) As Double

Mais ce ne dois pas être le fond du problème (un variant peut devenir Double)

Cordialement

EDIt
bienvenu
 
Dernière édition:

ralph45

XLDnaute Impliqué
Re : incompatibilité de type pour un tableau

Bonjour jeremy29100,

Sans décortiquer le code, à 1ère vue tu opères sur des tableaux de type ".xls". Le sont-ils réellement ou sont-ils plus de type ".xlsx", voire ".xlsm" ?

J'ai déjà eu un souci analogue de transposition entre 2003 et 2010...

A+
 

jeremy29100

XLDnaute Nouveau
Re : incompatibilité de type pour un tableau

Bonjour,

Je vais changer en 2 double distincts pour voir ce que ça donne.
Sinon je suis récemment passé sous excel 2010 alors qu'avant j'étais sous 2003. Et le code a été initialement écrit sur la version 2003. Que faut-il faire pour les passer en xlsx si c'est ça le problème.

Cordialement
 

Si...

XLDnaute Barbatruc
Re : incompatibilité de type pour un tableau

salut

Code:
Sub CalculRimp()
'création de mes 2 tableaux
Dim max As Double
Dim tabt(10000), tabq(10000) As Double

    For w = 9 To max
        tabt(w) = Workbooks("Outilxls").Sheets("1").Cells(w, 3) 
        tabq(w) = Workbooks("Outil.xls").Sheets("1").Cells(w, 4)
    Next w


Public Function concentration(ByRef tab1() As Double, ByRef tab2() As Double) As Double

       Cq=tab1(q)*tab2(q)
Avec cette déclaration, tabt(...) peut être numérique ou pas
Si ce n'est pas un nombre, tu auras une erreur au calcul de Cq.
Tu auras encore une erreur si les cellules concernées ne contiennent pas un nombre.

A noter que pour enregistrer les macros (2010) il faudra choisir le type .xlsm
 

Discussions similaires

Statistiques des forums

Discussions
312 088
Messages
2 085 201
Membres
102 817
dernier inscrit
Nini668