Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Création d'un journal d'écriture à partir d'un tableau des ventes

KarBudJak59260

XLDnaute Nouveau
Bonjour,

Je cherche une solution qui j'avoue me facilitera la vie

Actuellement je travail sur un fichier excel de ventes que j'aimerais transformé pour importer dans mon logiciel de comptabilité.
J'ai checké les fils de discussions pour voir si je trouve une solution, et j'ai testé celle la. Mais pour mon problème et étant novice en macro j'ai fais que des bétises.

Dans un premier temps : Je n'arrive pas à mettre dans mon fichier de mes montant en mode montant du coup j'ai beau cherché rien a faire.

Dans un second temps : Malgré mais nombreuses tentatives infructueuses, je voit pas comment en partant du fichier ci-joint arrivé à créer mon journal d'écriture, je m'explique :

Je reçois une fois par mois le fichier des ventes, et j'en ai marre de tout faire a la main, sachant que ça me fait perdre du temps.

Dans ce fichier apparait :

Colonne A : Le numéro de facture
Colonne B : La date
Colonne C : Montant TTC
Colonne D : Produits Exo (Intra-Export)
Colonne E : Produit HT 5,5 %
Colonne F : TVA s/ Prod 5,5 %
Colonne G : Produit HT 20 %
Colonne H : TVA s/ Prod 20%
Colonne I : Port 20%
Colonne J : TVA s/Port 20 %
Colonne K : Port Exo (Intra-Export)
Colonne L : Mode de règlement
Colonne M : Pays
Colonne O : Libellé (qui doit apparaitre) autrement dit le Pays + Mode de règlement

La particularité c'est que chaque mode de règlement correspond à un compte :

Chèque : 580100
Carte Bancaire : 580200
Transfert Bancaire : 580300
PayPal : 580400
PayPlug : 580700

J'ai mis dans le deuxieme onglet l'ecritures que j'aimerais faire apparaitre (en faisait expres de passer de la fac 1600 à la 1612 pour la différence avec les exports)

Pouvez-vous me dire si c'est possible ? et si oui comment réaliser cela ?

Merci par avance pour vos réponses,

KarBudJak
 

Pièces jointes

  • test.xlsx
    36 KB · Affichages: 39

vgendron

XLDnaute Barbatruc
Hello
voici une solution par macro
pour le test, je mets le résultat dans une feuille 3 ==> le code peut etre modifié pour adapter la feuille cible
 

Pièces jointes

  • Test (2).xlsm
    62.6 KB · Affichages: 44

KarBudJak59260

XLDnaute Nouveau
Oh Merci beaucoup,
Il y a juste le transfert bancaire qui se met pas, mais au pire je ferai un filtre et je le mettrai à la main c'est pas un soucis, il y a tres peu.

Je vous remercie enormément pour l'aide que vous m'avez apporté.

J'ai juste une question, comment peut-ont se former sur les macros ?
 

vgendron

XLDnaute Barbatruc
pour le pb de transfert bancaire. il s'agit d'un problème de syntaxe
Transfert Bancaire est différent de Transfert bancaire => une majuscule d'écart

==> pour éviter ca, correction du code ici qui met tout en majuscule
VB:
Sub Depivoter()
Set Dico = CreateObject("Scripting.Dictionary")
Dim TabData() As Variant
Dim TabFinal() As Variant
Dim IndF As Long

With Sheets("Listes").ListObjects(1) 'avec la table structurée de la feuille "Liste"
    For i = 1 To .ListRows.Count 'pour chaque ligne
        ele = UCase(.ListColumns(1).DataBodyRange.Rows(i)) 'on récupère le moyen de paiement==> En majuscule
        NumCompte = .ListColumns(2).DataBodyRange.Rows(i) 'son numéro de compte
        If Not Dico.exists(ele) Then 'on l'ajoute au dictionnaire en y associant le numéro
            Dico.Add ele, NumCompte
        End If
    Next i
End With

With ActiveSheet 'dans la feuille active
    fin = .Range("A" & .Rows.Count).End(xlUp).Row 'dernière ligne NON vide de la colonne A
    TabData = .Range("A2:O" & fin).Value 'on met tout dans un tableau vba
    'on place le numéro de compte à la place du mode de règlement
    For i = LBound(TabData, 1) + 4 To UBound(TabData, 1)
        TabData(i, 12) = Dico(UCase(TabData(i, 12)))
    Next i
    
    ReDim TabFinal(1 To (UBound(TabData, 1) - 4) * 9, 1 To 8) 'on définit le tableau final
    IndF = 1 'initialisation du numéro de ligne
    For i = LBound(TabData, 1) + 4 To UBound(TabData, 1) 'pour chaque ligne du tablo intial (à partir de la ligne 5)
        For j = 1 To 9 'pour les 9 colonnes de comptes, on remplit les 8 colonnes du tableau final
            TabFinal(IndF, 1) = "VE"
            TabFinal(IndF, 2) = TabData(i, 2)
            TabFinal(IndF, 3) = IIf(j = 1, TabData(i, 12), TabData(4, j + 2))
            TabFinal(IndF, 4) = ""
            TabFinal(IndF, 5) = TabData(i, 1)
            TabFinal(IndF, 6) = TabData(i, 15)
            TabFinal(IndF, 7) = IIf(j = 1, TabData(i, j + 2), "")
            TabFinal(IndF, 8) = IIf(j <> 1, TabData(i, j + 2), "")
            
            IndF = IndF + 1 'on passe à la ligne suivante
        Next j
    Next i
    
End With
With Sheets("Feuil3") 'dans la feuille 3
    .UsedRange.Offset(1, 0).Delete 'on efface tout sauf la ligne d'entete
    .Range("A2").Resize(UBound(TabFinal, 1), UBound(TabFinal, 2)) = TabFinal 'on colle le tableau final
    .Range("A1").Resize(UBound(TabFinal, 1) + 1, UBound(TabFinal, 2)).AutoFilter Field:=7, Criteria1:="=" 'on filtre la colonne 7
    .Range("A1").Resize(UBound(TabFinal, 1) + 1, UBound(TabFinal, 2)).AutoFilter Field:=8, Criteria1:="=" 'on filtre la colonne 8
    .Range("A2").Resize(UBound(TabFinal, 1), UBound(TabFinal, 2)).SpecialCells(xlCellTypeVisible).EntireRow.Delete 'on supprime les lignes qui n'ont ni débit, ni crédit
    .Cells.AutoFilter 'on enlève le filtre
End With
Sheets("Feuil3").Activate

Set Dico = Nothing
End Sub

et pour se former a vba. bah.. perso. c'est à force d'utiliser, de chercher sur google etc etc..
 

Dudu2

XLDnaute Barbatruc
Bonjour,
J'admire les utilisateurs de PowerQuery qui n'ont pas assisté à une formation dédiée.
Chaque fois que je récupère un fichier avec du PowerQuery je ne sais par quel bout le prendre, où se trouvent les requêtes PowerQuery, comment les activer, ce que ça fait et où se trouve le résultat.
Franchement Bravo les gars, vous m'épatates !
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…