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 :

Boucle pour extraire une liste de clients spécifique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    chargée d'études
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : chargée d'études
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Par défaut Boucle pour extraire une liste de clients spécifique
    Bonjour,

    je souhaiterai automatiser la manipulation quotidienne sur un fichier. Ce fichier est complété chaque jour (un onglet par mois) pour remonter les déclarations de fraude à la carte des clients. Les clients ayant déclaré un montant total <=600€ sont ensuite à envoyer à la comptabilité dans un onglet à part (c'est ce qui nous intéresse ici).

    j'ai déjà bien amorcé le programme mais je sèche un peu pour tenir compte uniquement des n° client ayant un total déclaré <=600€ dans le sens où nous sommes sur du ligne à ligne (et pas sur un cumul total). Vous trouverez en PJ le fichier.

    Dans l'onglet "AVRIL 2019" en colonne A le numéro dossier et en colonne D le montant déclaré pour chaque transaction frauduleuse. Le format de cet onglet ne doit pas changer. Pour un client, il y a donc plusieurs lignes.
    L'onglet "LISTE DOSSIERS" sera l'onglet à envoyer à la compta. On doit y retrouver le numéro du dossier, le numéro de l carte, la date de l'opération et le montant contesté.

    MErci beaucoup par avance pour votre aide !!

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    '---------------------------------------------------------------------------------------------------------
    '
    '                                       PROGRAMME VBA AUTOMATISATION
    '
    'Auteur : 
    'Date de création : 04/04/2019
    '
    '---------------------------------------------------------------------------------------------------------
     
    ' Objectif : automatiser l'envoi quotidien des clients ayant des montants contestés <= à 600€
     
     
    Sub extract()
     
    '<< 0 >> - Paramétrage
     
    Dim i As Integer
    Dim list As Worksheet
    Dim ws As Worksheet
    Dim mois As String
    Dim an As String
    Dim lastline As Long
     
    mois = UCase(Format(Now, "mmmm")) 'Déclaration du mois
    an = Year(Date) 'Déclaration de l'année
     
    Set list = ThisWorkbook.Worksheets("LISTE DOSSIERS") 'Déclaration de l'onglet avec la liste des clients à envoyer à la compta
    Set ws = ThisWorkbook.Worksheets(mois & " " & an)
     
    lastline = ThisWorkbook.Worksheets(mois & " " & an).Range("I" & Rows.Count).End(xlUp).Row
     
     
    '<< 1 >> - Compteur pour faire la somme des montants déclarés (colonne 40, pour être pas vu ou écraser l'existent)
    i = 5
    temp = 0
    Do
        If ws.Cells(i, 6) <> "" And Cells(i + 1, 6) = "" Then
            temp = ws.Cells(i, 13)
        ElseIf (ws.Cells(i, 6) = "" And Cells(i + 1, 6) = "") Or (ws.Cells(i, 6) = "" And Cells(i + 1, 6) <> "") Then
            temp = temp + ws.Cells(i, 13)
        End If
     
        If temp <= 600 Then
            ws.Cells(i, 41) = "ok"
        Else:
            ws.Cells(i, 41) = "ko"
        End If
     
        If ws.Cells(i, 6) <> "" And ws.Cells(i + 1, 6) = "" Then
            ws.Cells(i, 42) = ws.Cells(i, 6)
        Else:
            ws.Cells(i, 42) = ws.Cells(i - 1, 42)
        End If
     
    i = i + 1
    Loop While (ws.Cells(i, 13) <> "")
     
     
    '<< 2 >> - Boucle pour récupérer les clients ayant un total <= à 600€
     
    Sheets.Add
    ActiveSheet.Name = "temp"
    Set temp = ThisWorkbook.Worksheets("temp")
    lastline_bis = ThisWorkbook.Worksheets("temp").Range("A" & Rows.Count).End(xlUp).Row
     
    ws.Range("AO:AP").Copy Destination:=temp.Range("A1")
     
    i = 5
    Do
        If temp.Cells(i, 1) Like "ko" Then
                Range(temp.Cells(i, 1), temp.Cells(i, 2)).Delete
        End If
    Loop While (temp.Cells(i, 2) = temp.Cells(i + 1, 2))
    i = i + 1
     
     
     
    '<< 3 >> - Envoie du mail à la compta
     
    'Dim Ol As Object
    'Dim Olmail As Object
    'Dim CurrFile As String
     
    'Set Ol = CreateObject("outlook.application")
    'Set Olmail = Ol.CreateItem(olMailItem)
     
     
    'ThisWorkbook.Worksheets("LISTE DOSSIERS").Copy
    'ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Liste_clients_fraude_CB"
     
    'MsgBox "Le fichier est prêt à être envoyé."
     
    ' Paramétrage du mail :
        'With Olmail
            '.To = "" ' A... '-> on ne peut pas automatiser le destinataire car celui-ci change tout le temps
            '.CC = "" ' Cc... (Notes qu'il y a un seul destinataire pour la copie, et tu peux en rajouter autant que tu veux mais en y séparant du point virgule ";"
            '.Subject = " Extraction fraudes CB du " & Format(Date, "dd/mm/yy") ' Objet du mail -> dynamique selon le nom du client et la date du jour
            '.body = "Bonjour," & _
                    'Chr(13) & Chr(13) & "Veuillez trouver ci-joint la liste des clients du jour" & _
                    'Chr(13) & Chr(13) & "Bonne réception," & Chr(13) & Chr(13) & "L'équipe Fraude"
     
            '.Attachments.Add ActiveWorkbook.FullName 'joindre le fichier
            '.Send '"Display" pour afficher la fenêtre Outlook....  ou "Send" pour envoyer le mail directement.
        'End With
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Femme Profil pro
    chargée d'études
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : chargée d'études
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Par défaut Pour compléter mon post précédent
    La partie pour l'envoi du fichier par mail est déjà ok, donc pas besoin de modifier !

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    vous cumulez les montants par numéro de dossier et envoyer les somme inférieur à 600 eur ??

  4. #4
    Membre du Club
    Femme Profil pro
    chargée d'études
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : chargée d'études
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Par défaut
    Bonjour Bennasr,

    On envoie uniquement la liste des clients qui ont a total déclaré inférieur a 600€

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    On envoie uniquement la liste des clients qui ont a total déclaré inférieur a 600€
    un client = un dossier ??? je voie pas de numéro de client non ??

  6. #6
    Membre du Club
    Femme Profil pro
    chargée d'études
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : chargée d'études
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Par défaut
    Oui pardon , je parle de client mais ici c'est dossier. Oui un client = dossier

Discussions similaires

  1. Erreur d'un parsing xml pour extraire une liste
    Par Turvy dans le forum Android
    Réponses: 4
    Dernier message: 10/12/2013, 12h55
  2. [XL-2010] Code vba pour extraire une chaîne spécifique de caractéres
    Par samy35 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 25/09/2013, 18h34
  3. Besoin d'idée pour le tri d'une liste de client
    Par lolaalol dans le forum C++
    Réponses: 1
    Dernier message: 05/12/2012, 02h40
  4. Boucle SQL pour générer une liste d'années
    Par shaun_the_sheep dans le forum SQL
    Réponses: 3
    Dernier message: 03/07/2012, 17h19
  5. boucle & tag pour afficher une liste<hot> !
    Par tonton69max dans le forum Play!
    Réponses: 1
    Dernier message: 01/06/2010, 08h31

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