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 :

Automatiser le rapprochement de deux informations


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Par défaut Automatiser le rapprochement de deux informations
    Bonjour,
    J'ai déjà posté un problème auquel j'étais confronté sous Access mais me suis également demandé si ce problème ne pouvait pas être résolu sous Excel.
    Je travaille donc dans une entreprise qui se charge de regrouper des bons de livraison avec des factures.
    Ces données sont actuellement sous Excel et le travail se fait sous Excel également.
    Un onglet est consacré aux bons de livraison et un autre aux factures.
    Le recoupage s'effectue de façon manuelle et un tableau croisé dynamique permet de visualiser les factures ayant un litige ou n'ayant pas de bon de livraison rattaché.
    Je souhaiterais savoir s'il est possible à l'aide d'un formule VBA ou d'une fonction Excel que je ne connais pas d'effectuer le rapprochement (du moins en partie, car je me doute bien que c'est infaisable si plusieurs bons de livraison correspondent à une seule et même facture).

    En vous remerciant pour votre apport futur,
    A bientôt ^^"

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    VBA ne fait pas des formule mais des programme.
    Alors je dirais que oui tu peux le faire en VBA mais d'aboprd il faut savoir ce que tu veux faire.
    Tu peux sans problème parcourir des tableau comparia des valeur rechercher des ligne contenant des informations,...
    Mais la vu les information que tu donne impossible de t'aider.

    Tu peux très bien pour chaque facture rechercher tous les bon de livraisons corespondant et regarder ce que tu as a regarder. Mais encore une fois impossible de t'aider sans info concrete. Ou sont les donné quel critère pour les trouver/comparer/...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Par défaut
    Pour les quelques précisions:
    Il y a un onglet Excel comprenant toutes les factures (Numéro facture, nom fournisseur, Mois, Année, Quantité et Montant), un autre contenant les BL (Numéro BL, nom fournisseur, Mois, Année, Quantité et Montant).
    Je sais bien entendu utiliser des philtres ou l'option "Rechercher" pour retrouver les montants que je souhaite mais le problème est: est-ce possible de le faire automatiquement ?
    Par exemple je rentre le BL (qui n'arrive pas en même temps que la facture) et sur un autre feuille de calcul il serait capable de le rapprocher de la facture ayant le même montant et la même quantité.

    J'espère avoir été assez clair...en tous cas merci pour ta réponse rapide

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Oui bien sur qu'il en est capable. Pas de souci pour ca
    tu parcours la liste de tes factures et tu regardes si les valeur corespondent si c'est le cas banco. Mais j'espère que tu as d'autre critère que montant et quantité car tu risque d'avoir de nombreux doublon, non?

    Mais avant de te lancer dans se projet je te conseillerais de ti'nitier au VBA afin d'avoir un apercu de ces possibilité. Car si tu part sans aucune connaissance tu va passer énormément de temps sur le forum a attendre que quelqu'un fasse le boulot a ta place et en plus il ne sera sans doute pas tout a fait adapté.
    Car en l'état tu n'a fournie pratiquement aucune infos exploitable. Tu saisie un BL comment? tu la met en relation c'est a dire? les donné sont dans quel ordre quel colonne qul ligne...... Bref sans une boule de cristale performante ou une grosse bestiole pour lire les entraille pas moyen de t'aider efficacement.

    mais imaginon que les infos sois dans lordre donnée les onglet sont Livraison et Facture? mettre en relation signifie mettre en couler la facture (tu y mettra l'action que tu veux)
    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
     
    Sub vvv()
    Dim i As Long
    Dim DerniereLigne As Long
    Dim montant As Double
    Dim quantite As Integer
    'je cherche la derniere ligne de la feuille avec les facture
    DerniereLigne = Worksheets("Facture").Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 
    'je récupère les montant il faudra que tu choisisse une méthode
    montant = 105.5 'a toi de trouver comment tu veux le retrouver
    quantite = 20 'idem
    'on parcour les ligne de la 2ème a la dernière
    For i = 2 To DerniereLigne
    'on compare les infos colonne 5 a la quantité et colonne 6 au montant
        If Worksheets("Facture").Cells(i, 5) = quantite And Worksheets("Facture").Cells(i, 6) = montant Then
            'si les deux sont identique n fait une action ici colorier la ligne avec la facture
            Worksheets("Facture").Rows(i).interiror.ColorIndex = 5
        End If
    Next i
    End Sub
    Voila le code c'est surtout pour te montrer le raisonnement. Je commence mon week end demain du coup il y a peu de chance que je puisse t'aider. Quelqu'un prendra peut être le relai. mais tant que tu n'aura pas réfléchie a ce que tu veux faire (je parle de l'algorithme pour arriver a ton resultat pas du résultat) ca sera difficile de t'aider

  5. #5
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut Rapprochement de fichiers
    Voici un autre exemple qui utilise l'algorithme suivant.
    On compte le nombre de ligne du feuillet factures
    On compte le nombre de ligne du feuillet BL
    On parcourt chaque ligne du feuillet parcours , on lit le transporteur

    on recherche le nom du transporteur dans le feuillet BL et l'on compare les quantités et montant s.


    Comme le dit Krovax , si une facture entraine une seule livraison , c'est OK .
    Sinon il faut donner toutes les conditions de l'algo ( tout est possible )




    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
    Sub rapprochement_Factures_BL()
     
    nb_factures = Worksheets("Factures").Range("C65536").End(xlUp).Row    ' on se base syur la colonne C pour le calcul du nombre de ligne
    nb_BL = Worksheets("B_Livraison").Range("C65536").End(xlUp).Row
     
    For ligne = 2 To nb_factures
    'on lit le transporteur
    transport = Trim(Worksheets("Factures").Cells(ligne, 2).Value)
    quant = Worksheets("Factures").Cells(ligne, 5).Value
    Montant = Worksheets("Factures").Cells(ligne, 6).Value
     
     
     With Worksheets("B_Livraison").Range("B2:B" & CStr(nb_BL))
        Set cellule = .Find(What:=transport, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
              If Not cellule Is Nothing Then
                  prem_occurence = cellule.Row
    trouvé = false
                    Do
                        If Worksheets("B_Livraison").Cells(cellule.Row, 5).Value = quant And _
                           Worksheets("B_Livraison").Cells(cellule.Row, 6).Value = Montant Then
                         ' on a trouvé , on indique
                            Worksheets("B_Livraison").Cells(cellule.Row, 7).Value = " Rapprochement OK"
                           Worksheets("B_Livraison").Cells(cellule.Row, 8).Value = Worksheets("Factures").Cells(ligne, 1).Value
                           Worksheets("Factures").Cells(ligne, 7).Value = " Rapprochement OK"
                           Worksheets("Factures").Cells(ligne, 8).Value = Worksheets("B_Livraison").Cells(cellule.Row, 1).Value
    trouvé = true                   
     End If
                      Set cellule = .FindNext(cellule)
                   Loop While Not cellule Is Nothing And cellule.Row <>  prem_occurence and trouvé = false
                End If
     End With
     
    Next

    End Sub
    Fichiers attachés Fichiers attachés

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Par défaut
    Merci beaucoup pour vos réponses, et désolé de ne pouvoir vous donner plus d'informations pour vous aider mais j'en ai pas vraiment...
    Je vais essayer de me débrouiller un peu avec ça mais le problème est qu'il n'y a pas de champ commun, sauf si le montant de la facture correspond exactement à celui du BL et de même pour la quantité.
    Peu de factures ont un numéro de BL affichées dessus et aucun BL ne dispo d'un numéro de facture...
    Je me rends compte que ma demande est un peu idiote car ça me semble impossible d'établir un rapprochement sans champ commun.
    Même un lettrage d'un logiciel comptable ne serait pas totalement fiable vu le risque de rapprochements incohérents résultants de la non existence de champs communs...

  7. #7
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut Rapprochement de fichiers
    En fait, la difficulté est dans l'analyse.
    Le problème n'est pas irrésolvable puisque manuellement, on arrive à faire des rapprochements.
    La donnée ( ou la colonne) commune semble être le nom du fournisseur.
    Dans mon algo , j'utilise en priorité ce champs.
    Si une facture peut donner lieu à 2 colis et 2 BL. Il doit y avoir un paramètre supplémentaire à incorporer qui est le prix unitaire et qui doit permettre de pister ce cas de figure.

    Dans la pratique , on fait un traitement itératif , on sort de la pile de BL , les rapprochements évident avec les factures et les rapprochements suivant se font par déduction. L'algorithme pourra donc commencer par celui fourni , ensuite , on fait des déductions sur les lignes restantes.

    PS : dans le fichier fournit dans le post précédent, pour voir le déroulement , efface les colonnes G et H avant de lancer la macro : outil -> macro -> Rapproc...
    Si tu veux envoi un aperçu des fichiers pour voir les solutions adoptables.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Par défaut
    Tout d'abord un grand merci pour ta réponse et ton programme.
    Il est parfaitement adapté à ce dont j'avais besoin, j'ai modifié quelques détails dedans ainsi qu'ajouté un tableau croisé dynamique.

    J'y ai modifié partie BL un montant et une quantité pour voir s'il parvenait à la retrouver (elle figurait dans "rapprochement ok") mais en vain...
    Je te joins ce que ça donne et je vais essayer de bidouiller encore quelques petites choses. Si t'as une solution à ce détail je suis tout ouïe

    EDIT:Étant sur un PC en papier mâché je ne parviens pas à te l'envoyer

    RE-EDIT : Autant pour moi, problème de taille. Je ne peux montrer que par screens
    J'ai surligné en orange le BL que j'ai modifié exprès pour voir s'il était retrouvé

    Nom : Tableau croisé dynamique.JPG
Affichages : 3100
Taille : 88,0 Ko

    Nom : Partie factures.JPG
Affichages : 4311
Taille : 198,6 Ko

    Nom : Partie BL.JPG
Affichages : 2171
Taille : 169,0 Ko

Discussions similaires

  1. Comment sortir deux informations liées à une table
    Par Chrigou dans le forum Langage SQL
    Réponses: 7
    Dernier message: 13/05/2012, 16h25
  2. Réponses: 3
    Dernier message: 09/03/2012, 10h18
  3. Récupérer une/deux informations
    Par toOow dans le forum Applets
    Réponses: 0
    Dernier message: 04/04/2011, 20h36
  4. Réponses: 7
    Dernier message: 17/08/2010, 16h12
  5. rapprochement entre deux tables
    Par nassu dans le forum Access
    Réponses: 14
    Dernier message: 09/04/2006, 09h21

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