IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème d'incompatibilité de type ?!


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Par défaut Problème d'incompatibilité de type ?!
    Bonjour à tous,

    Je développe un programme d'automatisation du reporting de la direction financière dans laquelle j'effectue un stage actuellement, mon programme consiste en gros à importer deux fichiers source txt et de les lire afin d'effectuer les calculs nécessaires en mémoire et m'affecter dans ma feuille excel le résultat obtenu.

    Quand je lance mon programme, pas de problème pour l'importation et il commence la lecture et c'est là que se pose le problème plus vers la fin de la lecture ( je le vois à travers ma barre de progression, il s'arrête à 21404/22929)
    il s'agit donc apparemment d'une erreur d'incompatibilité de type et quand je clique dur débogage il me renvoi la ligne suivante
    TableauFinalParCompteMoyen(j, 1) = CDbl(TableauFinalParCompteMoyen(j, 1)) + CDbl(Montant)

    voici une partie de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    While Not EOF(intFic)
        'lire la ligne et la stocker dans strligne
        lblprogress.Caption = "Lecture de la ligne " + CStr(Nbreligne) + " sur " + CStr(NombreDeLignes)
        Line Input #intFic, strLigne
        ' si la ligne commence par BA. , c'est la ligne qui contient nos données
        If InStr(1, strLigne, "BA.") Then
        'puisque la ligne contient beacoup d'info elle doit etre stockée dnas un tableau délimité par espace
     
            Do While InStr(1, strLigne, "  ") > 0
                strLigne = Replace(strLigne, "  ", " ")
            Loop
     
            Dim ligneEntiere As Variant
            'Diviser la ligne séparée par tabulation
            ligneEntiere = Split(strLigne, " ")
            'variable qui contiendera le numéro de compte
            Dim NumeroDeCompte As Variant
            'Diviser la ligne séparée par .
            NumeroDeCompte = Split(ligneEntiere(1), ".")
            'ecriture du compte dans la cellule A2 , A3 , A4 et ainsi de suite
     
     
     
            Dim MontantApresVirgule As Variant
            Dim MontantAvantVirgule As Variant
            Dim Montant As Variant
            Montant = ligneEntiere(UBound(ligneEntiere))
     
            Dim PosDerniereVirguleMontant As Integer
            PosDerniereVirguleMontant = InStrRev(Montant, ".")
            If PosDerniereVirguleMontant = 0 Then
                Montant = Montant
            Else
                MontantApresVirgule = Mid(Montant, PosDerniereVirguleMontant + 1, 2)
                MontantAvantVirgule = Mid(Montant, 1, PosDerniereVirguleMontant - 1)
                MontantAvantVirgule = Replace(MontantAvantVirgule, ",", "")
                MontantAvantVirgule = Replace(MontantAvantVirgule, " ", "")
                Montant = MontantAvantVirgule & "," & MontantApresVirgule
            End If
     
            Dim Rubrique As String
            Rubrique = Mid(NumeroDeCompte(1), 1, 4)
     
     
            'ActiveWorkbook.ActiveSheet.range("B" & i).Value = CDbl(Montant)
     
            If NumeroDeCompte(1) = TableauFinalParCompteMoyen(j, 0) Or TableauFinalParCompteMoyen(j, 0) = "" Then
                TableauFinalParCompteMoyen(j, 0) = NumeroDeCompte(1)
                TableauFinalParCompteMoyen(j, 1) = CDbl(TableauFinalParCompteMoyen(j, 1)) + CDbl(Montant)
            Else
                j = j + 1
                'ReDim Preserve TableauFinalParCompte(0 To j, 0 To 2)
                TableauFinalParCompteMoyen(j, 0) = NumeroDeCompte(1)
                TableauFinalParCompteMoyen(j, 1) = CDbl(Montant)
            End If
     
     
            If Rubrique = TableauFinalParRubriqueMoyen(k, 0) Or TableauFinalParRubriqueMoyen(k, 0) = "" Then
                TableauFinalParRubriqueMoyen(k, 0) = Rubrique
                TableauFinalParRubriqueMoyen(k, 1) = CDbl(TableauFinalParRubriqueMoyen(k, 1)) + CDbl(Montant)
            Else
                k = k + 1
                'ReDim Preserve TableauFinalParCompte(0 To j, 0 To 2)
                TableauFinalParRubriqueMoyen(k, 0) = Rubrique
                TableauFinalParRubriqueMoyen(k, 1) = CDbl(Montant)
            End If
     
            i = i + 1
     
        End If
    'pas d'importance
    Me.Repaint

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Soit j'ai pas les yeux en face des trous, et je le vois pas, mais à quoi ça correspond ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableauFinalParCompteMoyen
    C'est une fonction que tu utilises que tu as créé ? c'est une variable tableau ? je ne le vois nulle part défini.
    Ou c'est le nom de ton programme (ce qui me semblerait un peu étrange..) ?

    As-tu regardé à quoi ressemblait ta ligne "j" de ton tableau, pour voir si ces valeurs-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDbl(TableauFinalParCompteMoyen(j, 1)) + CDbl(Montant)
    Sont bien déjà des chiffres pour les convertir en nombre ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pratique dangereuse de travailler avec des variants.
    Comment est le format des nombres dans ton fichier texte?


    PS. Attention, le séparateur décimal de vba est toujours le point . !!!

  4. #4
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Par défaut
    Bonjour

    Je suis navrée je n'ai jamais été notifiée de vos réponses ce n'est qu'en revenant par hasard sur le site que j'ai vu vos postes

    Merci Mercatog de m'avoir redirigé vers cet ancien lien !!

    pour répondre à la question concernant le tableau par compte c'est un tableau que j'ai en mémoire qui stocke les infos du fichier txt importé et effectue les calculs qu'il faut

    Je ne sais pas si ça vous avance plus que ça ?? :/
    j'avoue que j'ai un peu de mal à comprendre la réponse de illight

    merci à tous !!

Discussions similaires

  1. [XL-2010] Problème de "Incompatibilité de type"
    Par noob73 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2014, 18h12
  2. [XL-2010] Problème d'incompatibilité de type (erreur d’exécution 13)
    Par Dubbleu dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/07/2013, 16h54
  3. Problème d'incompatibilité de type
    Par dth.0 dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/09/2010, 14h11
  4. Ouverture d'un .doc - Problème d' "Incompatibilité de type"
    Par Amitom dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/03/2009, 15h11
  5. Problème d'Incompatibilité de type
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/01/2009, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo