MACRO et vba POUR IMPORT COMPTABLE

SPOKE

XLDnaute Nouveau
Bonjour à tous !
merci d avance pour vos aides precieuse

Tous les mois je retraite le journal de caisse excel pour avoir le fichier import comptable :

le jounal de caisse comprend les champs suivant:
Date ;Mois ;SR VAT ;Description ;IDENTITE/NOM ;Compte ;DEPT ; Debit ; Credit
le fichier import comprend les champs suivant
NOPIECE ; COMPTE ; CODEJOURNAL ; DATE ; DEBIT ; CREDIT ; LIBELLE ;COMPTE TIERS Plan analytique ; Section ; Type

pour passer du journal de caisse au fichier impot comptable il faut :

-mettre les champs du journal de caisse dans le meme ordre
- inserer deux ligne pour chaque ecriture dans le jounal de caisse: une ligne au dessus pour la contrepartie de la depense(compte caisse du site) et une autre en dessous pour l affection analytique(le montant pour les compte de charge(compte commençant par 6) est egale au montant de la depense ;pour les autre comptes le montant est 0)

-ajoute le code journal
- le compte tiers specifique au site si compte general utilisé est "4091"
- numero du plan analytique qui est egal a 0 pour les deux premieres lignes ;pour la troisieme ligne le numero du plan analytque attribué en fonction du site
- ajouter la section analytique par exemple site 1

- pour le dernier champs : G pour general pour les 2 premieres lignes et A pour analytique pour la troisieme ligne

Quelqu un pourrait t il m aider avec un code VBA me permettant d effectuer toutes ces tache ou quelques une en un clic .
une proposition avec un userform comprenant les champs suivants : premier numero de de piece, code jounal, numero compte caisse, compte tiers specifique, section analytique , numero plan analytique; sera la bienvenue.

je joint mon fichier qui comprent le journal de caisse et le format d import pour une meilleur comprehension merci d avance a tous pour vos aides
 

Pièces jointes

  • FICHIER IMPORT.xlsx
    46.1 KB · Affichages: 127

SPOKE

XLDnaute Nouveau
Bonsoir cathodique

Merci pour ta réponse , vous avez bien compris vu le fichier cependant je fais quelques constat pour l amelioration si possible:
- l'insertion efface certaine lignes .Un exemple :nous sommes passés n°piece 168832 a 168835 , il manque les lignes n°piece 168833 et 168834
- la ligne insérée en dessous ne contient rien dans les colonne debit/credit :il doit prendre le montant et la meme position de la ligne au dessus
- la ligne insérée au dessus ne doit pas avoir le numéro compte que celle en dessous : est il possible d’insérer ce numéro avec un userform?

Le reste est très bon ; merci encore

cordialement
 

cathodique

XLDnaute Barbatruc
Remplace le code par celui-ci
VB:
Option Explicit

Sub InsererLignes()
    Dim dl As Integer, i As Integer, j As Integer

    With Sheets("résultat")
        'insérer lignes vides''''
        dl = Cells(Rows.Count, 1).End(xlUp).Row
        For i = dl To 2 Step -1
            Rows(i).Insert
            Rows(i + 1).Insert
        Next i

        'recopie les valeurs
        dl = .Range("A" & Rows.Count).End(xlUp).Row

        For j = 4 To dl Step 3
            Rows(j).Font.Bold = True    'met ligne en gras
            'ligne du dessus
            .Cells(j - 1, 1) = .Cells(j, 1).Value           'nopiece
            .Cells(j - 1, 2) = "" '.Cells(j, 2).Value       'compte
            .Cells(j - 1, 3) = .Cells(j, 3).Value           'codejournee
            .Cells(j - 1, 4) = .Cells(j, 4).Value           'date
            .Cells(j - 1, 5) = ""    'cells(j, 5).Value     'debit
            .Cells(j - 1, 6) = .Cells(j, 5).Value           'credit
            .Cells(j - 1, 7) = .Cells(j, 7).Value           'libellé
            .Cells(j - 1, 8) = .Cells(j, 8).Value           'compte tiers
            .Cells(j - 1, 9) = .Cells(j, 9).Value           'plan analytique
            .Cells(j - 1, 10) = ""    'cells(j,10).Value    'section analutique
            .Cells(j - 1, 11) = .Cells(j, 11).Value         'type
            'ligne du dessous
            .Cells(j + 1, 1) = .Cells(j, 1).Value
            .Cells(j + 1, 2) = .Cells(j, 2).Value
            .Cells(j + 1, 3) = .Cells(j, 3).Value
            .Cells(j + 1, 4) = .Cells(j, 4).Value
            .Cells(j + 1, 5) = ""    '.Cells(j, 5).Value
            .Cells(j + 1, 6) = ""  'Cells(j, 6).Value
            .Cells(j + 1, 7) = .Cells(j, 7).Value
            .Cells(j + 1, 8) = .Cells(j, 8).Value
            .Cells(j + 1, 9) = .Cells(j, 9).Value
            .Cells(j + 1, 10) = .Cells(j, 10).Value
            .Cells(j + 1, 11) = "A"    'Cells(j, 10).Value
            '
            ''effacer colonne J site
            .Cells(j, 10) = ""
        Next j
        'supprimer 2ème ligne
        .Rows(2).Delete
    End With
End Sub
Le reste n'était pas bon, il y avait des lignes manquantes. Vérifie toutes les lignes. Pour tester laisse quelques lignes (4 ou 5) pour faciliter la vérification.

Bonne journée.
 

SPOKE

XLDnaute Nouveau
BONJOUR CATH

merci pour ta réactivité ; ce code ne marche pas comme prevu . le fichier ci joint montre un peu le resultat

L ancien code est meilleur que celui la , il deviendra plus meilleur en prenant en compte mes remarques ci dessus

cordialement
 

Pièces jointes

  • SPOKE import (2).xlsm
    90.8 KB · Affichages: 79

cathodique

XLDnaute Barbatruc
Re,;)

Je ne suis et ne serai jamais expert. J'ai commencé tout comme toi de zéro. J'ai et je demande encore de l'aide quand je n'y arrive pas. Mais je m'efforce de comprendre les codes.

Si mon dernier code ne répond pas à tes attentes. Cela implique une seule chose, je n'ai compris ou tu ne t'ai pas bien fait comprendre.

Dans mon précédent code la ligne du dessus ne reprends pas le code
cette ligne: .Cells(j - 1, 2) = "" '.Cells(j, 2).Value 'compte

Un exemple, avec 2 ou trois lignes, ça aurait été mieux.
Le départ et le résultat escompté.
 

SPOKE

XLDnaute Nouveau
Bien

tu vas m'excuser d avoir vite jugé le deuxième code . il est parfait , je lai utilisé dans la feuil 1 du fichier ci joint .
reste a ameliorer les points en rouge
colonne "compte ": les cellules peuvent rester vide : on peut les completer manuellement
colonne "compte tiers": effacer le compte dans les lignes inserées
colonne " plan analytique": effacer le numero dans les deux premiers lignes comme dans la colonne" section analytique"

je me suis mis au travail , je deviendrai un expert . crois moi


CORDIALEMENT
 

Pièces jointes

  • test SPOKE 1.xlsm
    22.8 KB · Affichages: 67

cathodique

XLDnaute Barbatruc
Pour les numéros de compte avec ce code
VB:
Sub CompléterChaine()
Dim x As Integer, C As Range
    For Each C In Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row)
    x = Len(C)
   
        If C.Value <> "" And Len(C.Value) < 8 Then
        Select Case x
        Case 1
        C.value = C.Value & "0000000"
        Case 2
        C.value = C.Value & "000000"
        Case 3
        C.value = C.Value & "00000"
        Case 4
        C.value= C.Value & "0000"
        Case 5
        C.value = C.Value & "000"
        Case 6
        C.value = C.Value & "00"
        Case Else
        C.value = C.Value & "0"
        End Select
       
        End If
    Next C
End Sub
 

Discussions similaires

Réponses
1
Affichages
1 K