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 :

[VBA-E]Macro Vérification Tarif


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut [VBA-E]Macro Vérification Tarif
    Bonjour,
    J'ai actuellement un problème d'ordre général sur ce sujet :

    J'ai un fichier mensuel, qui donne la conso de chaque ligne téléphonique (1000 lignes tel)

    Ce fichier est assez lourd et représente 24 colonnes sur 10000 Lignes.

    Le but est de vérifier les tarifs erronés sur les derniers mois.
    Sur l'une des colonnes se trouve le type de facturation et je doit en vérifier 6 (sur tout le fichier il y a peu près 15 type de facturation)

    Dans ma première idée.
    Je faisais un tri auto, puis sélection Type facturation A.
    Puis la suite de la macro sélectionnait la colonne du premier mois et commençait à vérifier si le tarif du type de facturation A était bien appliqué à toute les lignes de cette colonne.
    A chaque erreur il copiait la ligne dans un autre fichier

    (Tout ceci marche actuellement)

    Mais premier problème est qu'il y a plusieurs colonnes et que donc il est possible qu'il ait plusieurs erreurs dans la même ligne mais la macro ne le vois pas et copie deux fois la ligne dans le rapport d'erreur.
    Donc j'aimerais bien éviter les doublons.

    Autre problème, la macro est très lourde et enchaîne boucle sur boucle (cf code juste dessous)
    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
     
     
    'Déclaration de la variable i et j
     
             Dim i As Integer
             Dim j As Integer
             Dim A As Variant
             Dim B As Variant
             Dim C As Variant
             Dim D As Variant
             Dim E As Variant
             Dim F As Variant
             Dim h As Integer
             Dim k As Integer
     
     
     
             Sheets("Base").Select
     
             A = Range("B2").Value
             B = Range("B3").Value
             C = Range("B4").Value
             D = Range("B5").Value
             E = Range("B6").Value
             F = Range("B7").Value
     
     
     
    For i = 3 To 15000
             Windows("Facture_ligne_mobile.xls").Activate
                If Range("D" & i).Value = "Type Facturation A" Then
                   If Range("H" & i).Value <> A Then
                         Rows(i).Copy
                         Windows("verif_mobile.xls").Activate
                         Sheets("Rapport").Select
                             For j = 3 To 15000
                                 If Range("A" & j).Value = Range("X65000").Value Then Range("A" & j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                 :=False, Transpose:=False: Exit For
                             Next j
                End If
                End If
     
        Next i
    (La dernière partie du code est répéter 6 fois avec La Valeur de facturation qui change et le type de facturation)


    J'aimerais que la macro, fasse
    -vérification colonne H,I et J avec :
    -Type de Facturation A puis B puis C puis D puis E (Tri)
    -Paramètre le tarif A A puis B puis C puis D puis E
    Et quand il détecte une erreur il finit la vérification de la ligne complète (3 colonnes) puis s'il y a une erreur ou plusieurs de copier cette ligne dans un autre fichier.

    Merci d'avance pour vôtre aide

  2. #2
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 3 To 15000
             Windows("Facture_ligne_mobile.xls").Activate
                If Range("D" & i).Value = "Type Facturation A" Then
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                   If Range("H" & i).Value <> A Then
                         Rows(i).Copy
                         Windows("verif_mobile.xls").Activate
                         Sheets("Rapport").Select
                             For j = 3 To 15000
                                 If Range("A" & j).Value = Range("X65000").Value Then Range("A" & j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                 :=False, Transpose:=False: Exit For
    Comment marche les else ? ,
    Car là :
    Si erreur en H il copie et sort de la boucle,
    J'aimerais bien qu'il fasse a la suite
    ==> sinon il vérifie I, si erreur, il copie et sort de la boucle, sinon il vérifie J, etc ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
                             Next j
                End If
                End If
     
        Next i

  3. #3
    Membre confirmé Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Par défaut
    tu peu emboiter un if dans un else tiens par exemple un bou de code d'une macro quelconque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (a=3) then
       range("A1").value = 5
       else
             if (a=3) then
                  range("A1").value = 6
             else 
                   if (a=4) then
                        range("A1").value = 7
                   end if
             end if
    end if

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    En adaptant ceci, j'ai réussi à avoir un résultat plutôt satisfaisant.

    Sinon je voudrais faire une macro qui aurait plusieurs condition dans le IF et permettrait de colorier les cases en rouges ou bleu (selon les cases erronés ou pas, car sur une ligne certaines cases sont correct)

    Un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If range("b"&i).value= 6 or 12 or 10 then
    'selectionne et en bleu
    ....

  5. #5
    Membre confirmé Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Par défaut
    pour mettre plusieur conditions dans le if tu peux par exemple un bout d'une de mes macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If (text <> "Grand Total" And Sheets("Table pivot").Range("A1").Value <> vide) Then
    ainsi tu peux voir que les condition sont séparés par des and ou des or.

    pour colorier le font d'une case on prendra la case A1, en violet par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With (range("A1").Interior)
             .ColorIndex = 39
             .Pattern = xlSolid
    End With
    voilà d'autre question?

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    J'avais essayé avec les or et And mais ca me faisait un résultat assez bizzare.
    Mais je vais retenter.

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

Discussions similaires

  1. [VBA-E] Macro automatique ouverture Excel
    Par P50 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/04/2006, 11h42
  2. [VBA-E] Macro introuvable
    Par Persons dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/04/2006, 10h12
  3. [VBA] Excel + macro + aléatoire
    Par spopo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/01/2006, 15h42
  4. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23
  5. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 14h30

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