XL 2019 Sommeprod vba et incompatibilité de type

Blaster

XLDnaute Nouveau
Bonjour à tous,

Je rencontre une incompatibilité de type pour le code ci-dessous (cf. fichier ):
J'ai du mal à comprendre ce qui cloche (déclaration variable, contenu table...)

Merci pour votre aide

VB:
Dim Analytique_Cde, Compte_Axe, an, Manifestation As String
Dim Montant_Axe As Variant


Sub test()
Compte_Axe = "6112060"
Analytique_Cde = "019-SPR"
an = 24
Manifestation = 19
Formule1 = "=SUMPRODUCT((COMPTE=Compte_Axe)*(MANIFEST=Manifestation)*(ANNEE=an)*(ANALYTIQUE=Analytique_Cde )*SOLDE)"
Montant = Evaluate(Formule1)


MsgBox (Montant)

End Sub
 

Pièces jointes

  • FICHIER TEST (1) (1).xlsm
    76 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Je ne sais si c'est ça mais vous déclarez Manifestation As String (chaîne de caratère) et vous la valorisez avec un numérique (19) !

Soit vous valorisez en chaine : Manifestation = "19"
Soit vous changez le type

Etant visiblement destinée à une chaîne de caractères la première solution est sans doute la plus adaptée.

19 ou "19" sont des constantes, vous pouvez les déclarer en contantes

Const Manifestation = 19
ou
Const Manifestation = "19"
Ou
Const Manifestation As String = "19"
Ou
Const Manifestation As Integer = 19


P.S. dans votre première ligne de déclaration, seule Manifestation est déclaré en String, les autres seront des variant.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Je n'ai pas dis que c'était la seule erreur,
Compte_Axe n'est pas déclarer
Mettez Option Explicit en haut de votre module.
J'en vois d' autres dans votre formule.
Lisez un tuto sur la concaténation ou chercher sur le forum, vous avez plein de fil de discussion sur le sujet.

Exemple :
Code:
Sub Truc()
    Dim LaBelleVariable As String, LaBelleFormule As String

    LaBelleVariable = "10"

    LaBelleFormule = "=COUNTIF(A1:A10,"">" & LaBelleVariable & """)"

    Feuil1.Range("D1").Formula = LaBelleFormule
End Sub
 

Blaster

XLDnaute Nouveau
Bonjour à tous,

@Hasco merci, grâce à ton aide j'ai pu avancer sur ma formule qui semble désormais plus adaptée.

Par contre, je rencontre une difficulté dans mes déclarations de variable

Si la colonne G contient du numérique cela fonction alors qu'avec du texte, je rencontre toujours une incompatibilité de type.


VB:
Dim Analytique_Cde, Compte_Axe, Année, Manifestation As String
Dim Montant_Axe  As Variant

Sub test()

            For Each cell In Feuil1.Range("A3:A14")

Compte_Axe = cell.Value
Analytique_Cde = cell(Row, 7).Value
Manifestation = cell(Row, 9).Value
Année = cell(Row, 10).Value

Formule1 = "=SUMPRODUCT((COMPTE= " & Compte_Axe & ")*(MANIFEST= " & Manifestation & ")*(ANNEE= " & Année & ")*(ANALYTIQUE= " & Analytique_Cde & ")*SOLDE)"
Montant_Axe = Evaluate(Formule1)


MsgBox (Montant_Axe)

            Next

End Sub

Merci pour vos avis
 

Pièces jointes

  • FICHIER TEST 2.xlsm
    86.8 KB · Affichages: 1
Dernière édition:

Blaster

XLDnaute Nouveau
Bonjour à tous,
Bonjour @Hasco,

Je viens de comprendre mon erreur, la formule suivante fonctionne :

VB:
Formule1 = "=SUMPRODUCT((COMPTE= " & Compte_Axe & ")*(MANIFEST= " & Manifestation & ")*(ANNEE= " & Année & ")*(ANALYTIQUE= """ & Analytique_Cde & """)*SOLDE)"

Par contre, j'ai du mal à comprendre la différence entre ces deux termes :
Code:
(ANALYTIQUE= """ & Analytique_Cde & """)

et

Code:
(ANALYTIQUE= " & Analytique_Cde & ")
 

Discussions similaires

Réponses
3
Affichages
253

Statistiques des forums

Discussions
312 215
Messages
2 086 314
Membres
103 176
dernier inscrit
jean.yvesjean.yves