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 Erreur d'exécution '13 : Incompatibilité de type [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    collaboratrice comptable
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : collaboratrice comptable
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Problème Erreur d'exécution '13 : Incompatibilité de type
    bonjour a ceux qui voudront bien m'aider.

    Voila j'ai un niveau moyen - en VBA, et j'essaye de coder une macro, mais j'ai cette erreur Incompatibilité de type qui me fait ... j'sais bien quoi, et que je n'arrive pas à résoudre.

    Je vous joint ma macro :

    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
    Sub report()
     
    Dim Rang, RangA As Long
    Dim Cellule, CelluleA As Range
    Dim DébitB, DébitA, CréditB, CréditA As Double
     
        For Each Cellule In Sheets("ECR").Range("e13:e999")
        Rang = Cellule.Row
        DébitB = Sheets("ecr").Range("h" & Rang)
        CréditB = Sheets("ecr").Range("I" & Rang)
            If Not IsNull(DébitB) Or (CréditB) Then
                For Each CelluleA In Workbooks("00- Sommaire Général").Sheets("BAL").Range("b14:b1000")
                    If Not IsEmpty(CelluleA) Then
                        RangA = CelluleA.Row
                        DébitA = Workbooks("00- Sommaire Général").Sheets("BAL").Range("I" & RangA) + DébitB
                        Workbooks("00- Sommaire Général").Sheets("BAL").Range("I" & RangA) = DébitA
                        CréditA = Workbooks("00- Sommaire Général").Sheets("BAL").Range("j" & RangA) + CréditB
                        Workbooks("00- Sommaire Général").Sheets("BAL").Range("j" & RangA) = CréditA
                    End If
                Next CelluleA
            End If
        Next Cellule
    End Sub
    Le but de cette macro est de reporter les valeurs d'une feuille "ECR", dans la feuille "BAL" du workbook "00- Sommaire général".

    Voila, merci a ceux qui essayeront de m'aider.

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    A tout hasard, tu ne serais pas en symbole décimal "," ?

    Si c'est le cas, convertit la valeur de la cellule lors de la mise à jour de la variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DébitB = Cdbl(Sheets("ecr").Range("h" & Rang).Value)
    Jérôme

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Points : 307
    Points
    307
    Par défaut
    Bonjour,

    il y a quelques erreurs sur le nom du fichier , il manque l'extension : "00- Sommaire Général" à transformer en "00- Sommaire Général.xls" ou .xlsm suivant la version .

    Ensuite sur le nom de l'onglet , à mon avis il faut respecter la casse ( majuscule ou minuscule ) -> Sheets("ecr") remplacé par Sheets("ECR") ou l'inverse suivant ton fichier.

    A mon avis , il faut revoir l'algorithme car la condition est vraie à chaque fois :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Not IsNull(DébitB) Or (CréditB) Then
    remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DébitB = val(Sheets("ECR").Range("h" & Rang))
    CréditB = val(Sheets("ECR").Range("I" & Rang))
    If DébitB <> 0 And CréditB <> 0 Then
    ensuite , je n'ai pas bien compris le traitement : pour chaque ligne non vide de l'onglet "BAL" , on ajoute les valeurs de l'onglet ECR ?
    Si il s'agit d'un report sur la première ligne vide , il faudrait revoir la condition ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Not IsEmpty(CelluleA) Then   ' remplacer par If  IsEmpty(CelluleA)
    Après ces conseils , je te laisse finaliser

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    sinon, dès le départ :

    voir : http://club.developpez.com/aidenouve...es/Balises.gif

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Rang, RangA As Long
    Dim Cellule, CelluleA As Range
    Dim DébitB, DébitA, CréditB, CréditA As Double
    Avec cette façon de déclarer tes variables, seules les dernières de chaque ligne sont dans le type écrit, les autres sont en variant, voir ta fenêtre variables locales pour le constater.
    voir : http://silkyroad.developpez.com/VBA/LesVariables/#LII

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  5. #5
    Candidat au Club
    Femme Profil pro
    collaboratrice comptable
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : collaboratrice comptable
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci à tous pour vos conseils

    Je vais revoir ma macro car il y a plusieurs choses qui ne vont pas.
    Je voudrait que la boucle ne tourne que pour les cellules non vides, et la, ce n'est pas le cas, elle tourne pour TOUTES les cellules ... bref, une usine à gaz!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur d'exécution "13" incompatibilité de type
    Par zenico64 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 14/12/2010, 10h45
  2. Erreur d'exécution 13 : incompatibilité de type
    Par Ptikir dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/04/2009, 15h59
  3. erreur d'exécution 13 incompatibilité de type
    Par glamgeek dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/03/2009, 12h03
  4. "erreur d'exécution 13 : incompatibilité de type"
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 19/07/2007, 15h47
  5. erreur d'exécution 13, incompatibilité de type
    Par PHPdudimanche dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/06/2007, 15h20

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