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 :

Créer une macro pour vérifier des prix


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut Créer une macro pour vérifier des prix
    Bonjour à tous,

    J'ai un fichier avec :

    Colonne A = Référence
    Colonne B = Désignation
    Colonne C = Observation
    Colonne D = Prix Public
    Colonne E = Prix tarif 1
    Colonne F = prix tarif 2
    Colonne G = prix Tarif 3

    Les prix tarif 1,2 et 3 doivent toujours être inférieurs au prix public.
    J'ai 6.000 références et je voudrais créer une macro qui vérifie que le prix dans les colonne E,F et G soit bien inférieur au prix de la colonne D.
    Lorsqu'il y a une erreur, il faudrait que cela soit signaler de la manière suivante : une MsgBox avec à l'intérieur la ligne contenant l'erreur et l'écart entre les deux prix en rouge.

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Points : 437
    Points
    437
    Par défaut
    Une mise en forme conditionnelle sur les colonnes E, F, G devrait suffire sans se casser la tête

  3. #3
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    D'ahbitude c'est bien de commencer le code plus tot que de demander ua autre de tout nous faire... mais la j'avais un peu de temps

    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
    Sub compaprix()
    Dim DerniereLigne As Long
    Dim i As Long
    DerniereLigne = Range("A65536").End(xlUp).Row ' si la dernière ligne de ta colonneA n'est pas a tester retir le nombre de ligne à ne pas tester à la fin
     
    For i = 2 To DerniereLigne  'remplace le 2 par la première ligan a tester
     
        If Cells(i, 4) < Cells(i, 5) Then
        MsgBox "Pour la ligne " & i & " l'écart de prix est de " & Cells(i, 5) - Cells(i, 4) & "€"
        ElseIf Cells(i, 4) < Cells(i, 6) Then
        MsgBox "Pour la ligne " & i & " l'écart de prix est de " & Cells(i, 6) - Cells(i, 4) & "€"
        ElseIf Cells(i, 4) < Cells(i, 7) Then
        MsgBox "Pour la ligne " & i & " l'écart de prix est de " & Cells(i, 7) - Cells(i, 4) & "€"
        End If
    Next i
    End Sub
    Par contre pour la fenêtre avec des couleur soit ut te fait un userform et tu le présente comme il faut
    soit tu regarde ici

    Edit : c'est vrai qu'une mise en former conditionnel est bien pratique mais elle forcerais a parcourir le tableau pour repérer les erreur 6000ligne c'est long

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Merci pour ton aide. Voici ton code que j'ai modifié pour coller au plus près de mon fichier :
    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
     
    Sub Verification()
    Dim FL2 As Worksheet, PremAdresse As String
    Dim i As Integer, DerLig2 As Long
     
    Set FL2 = Worksheets("Tarif OEM")
    DerLig2 = FL2.Cells(FL2.Rows.Count, 5).End(xlUp).Row
     
     
    For i = 2 To DerLig2  'remplace le 2 par la première ligan a tester
         If Cells(i, 8) < Cells(i, 9) Then
        MsgBox "Pour la ligne " & i & " l'écart de prix est de " & Cells(i, 9) - Cells(i, 8) & "€"
        ElseIf Cells(i, 8) < Cells(i, 11) Then
        MsgBox "Pour la ligne " & i & " l'écart de prix est de " & Cells(i, 11) - Cells(i, 8) & "€"
        ElseIf Cells(i, 8) < Cells(i, 13) Then
        MsgBox "Pour la ligne " & i & " l'écart de prix est de " & Cells(i, 8) - Cells(i, 13) & "€"
        End If
    Next i
    End Sub
    J'ai une erreur d'exécution '13' : Incompatibilité de type.
    Le code s'arrête sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MsgBox "Pour la ligne " & i & " l'écart de prix est de " & Cells(i, 9) - Cells(i, 8) & "€"
    Je ne connais pas trop l'utilisation des msgBox. Peux tu m'aider SVP ?

    Merci.

  5. #5
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Oui c'est assez facile je paris qu'au moment de l'erreur si tu regarde la valeur du i et que tu cherche la ligne correspondante elle ne contient pas de valeur numérique
    Ca ne devrais pas venir de la message box

Discussions similaires

  1. [FASM] Créer une macro pour faire des chaînes explicites
    Par Forthman dans le forum Assembleur
    Réponses: 0
    Dernier message: 30/07/2014, 09h36
  2. [XL-2007] Créer une macro pour supprimer des onglets dans un autre classeur
    Par nicosd54 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 10h01
  3. Réponses: 3
    Dernier message: 12/06/2007, 13h47
  4. Réponses: 21
    Dernier message: 23/05/2007, 16h16
  5. Réponses: 8
    Dernier message: 09/01/2007, 16h30

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