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 :

Erreur de compilation instruction incorrecte


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2020
    Messages : 26
    Points : 23
    Points
    23
    Par défaut Erreur de compilation instruction incorrecte
    BONJOUR
    J'ai tenté de construire une macro pour appliquer cette formule dans un tableau (avec l'aide du site)
    cette formule est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Essai()
    Dim x As Integer
    x = 1
     For Each Cell In Range("E1:E95")  'pour une plage de E1 à E95
        If Cell.Font.ColorIndex = 3 Then
        Cell(x, 2).Value = 0
        Else
        Cell(x, 2).Value = Cell(x, 1).Value
        End If
    Next Cell
    End Sub
    mais lorsque je souhaite appliquer cette macro j'ai un message

    erreur de compilation instruction incorrecte à l'intérieur d’une procédure
    et dans le pavé blanc j'ai la phrase suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets.Adds After:=Worksheets.count
    qu'est-ce que cela veut dire?

    c'est pour faire cela que je souhaite faire une macro

    si la valeur de la cellule E1 est en rouge alors la valeur de la cellule F1 est égale à 0.00€,
    si la valeur de la cellule E2 est en rouge alors la valeur de la cellule F2 est égale à 0.00€
    et ainsi de suite jusqu'à la fin du tableau

    Merci pour une réponse

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Essayez ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets.Add After:=Sheets(Sheets.Count)
    Cdlt

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Les deux formulations Cell(x, 2).Value = 0 et Cell(x, 2).Value = Cell(x, 1).Value puisque Cell est une variable non indicée.
    Mais il faudrait que tu expliques ce que tu veux faire exactement dans ces lignes de code pour te donner la syntaxe correcte.

    Il y a un autre problème dans ton code (mais ce n'est pas ce qui cause le bug) : visiblement, la variable x sert à changer de ligne de destination mais elle n'est jamais incrémentée, ce qui veut dire qu'elle restera à 1 pendant toute l'exécution.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Essai()
    Dim x As Integer
    x = 1
     For Each Cell In Range("E1:E95")  'pour une plage de E1 à E95
        If Cell.Font.ColorIndex = 3 Then
           Cell.Offset(0, 1).Value = 0
        Else
           Cell.Offset(0, 1).Value = Cell.Value
        End If
    Next Cell
    End Sub
    Cordialement,
    Franck

  5. #5
    Membre à l'essai
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2020
    Messages : 26
    Points : 23
    Points
    23
    Par défaut Erreur de compilation instruction incorrecte
    Voilà ce que voudrai obtenir en macro
    par exemple si 19.81 est débité alors je met la valeur de la cellule en rouge et au crédit je mets 0.00
    et ainsi de suite ainsi pour toute somme débitée je met la valeur en rouge et au crédit je met 0.00 à chaque fois
    j espère que c'est plus clair comme explication



    Colonne D Colonne E Colonne F
    POSTE DEBIT CREDIT
    d - 19.81 € - 19.81 €
    C -46,39 € -46,39 €
    F -700,00 € -700,00 €
    D -4,99 € -4,99 €
    D -2,09 € -2,09 €
    D -33,87 € -33,87 €
    D -9,65 € -9,65 €

  6. #6
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Dans ton exemple, toute la colonne E étant remplie, cela doit vouloir dire que toute la colonne F doit être à 0.
    C'est cela?
    En clair, si une cellule de la colonne E est remplie, on met la cellule correspondante colonne F à 0.
    Si une cellule de la colonne E est vide, on ne fait rien.

    Ce code fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Essai()
    Dim C As Range
     
      For Each C In Range("E1:E95")        'pour une plage de E1 à E95
        If C.Value <> vbNullString Then    'Si la cellule en E n'est pas vide
          C.Font.ColorIndex = 3            'on met la couleur de police en rouge
          C.Offset(0, 1).Value = 0         'La cellule en F = 0
        End If                             'FIN SI
      Next C                               'Boucle
    End Sub
    Cordialement,
    Franck

Discussions similaires

  1. [XL-2010] Excel 2010 n'exécute pas les macros.
    Par skhan740 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/07/2015, 12h38
  2. Réponses: 17
    Dernier message: 08/09/2014, 12h22
  3. Excel 2010 : Erreur d'exécution -2147417848(80010108)
    Par AF_2.8 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2011, 19h55
  4. Installation Visual C++ 2010 & erreur de compile
    Par Nono Sto dans le forum Visual C++
    Réponses: 1
    Dernier message: 06/09/2010, 01h28
  5. Erreur de compilation VBA "Projet ou bibliothèque introuvable"
    Par princeyobs dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2009, 12h14

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