Insérer 1 ligne sur 2 + formules dans chaque ligne insérée

Résolu/Fermé
GuipLyon Messages postés 4 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 19 février 2015 - 2 août 2014 à 13:49
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 19 févr. 2015 à 17:11
Bonjour à tous,

J'utilise dans le cadre de mon boulot un livre de caisse (N° comptes, libellé, débit, crédit, n°pièce comptable, contrepartie, code analytique).
Chaque ligne correspond à une facture.

j'ai trouvé comment importer ces lignes dans mon logiciel de comptabilité seulement le logiciel impose deux lignes par facture.
il me faut donc insérer 1 ligne sur deux (j'ai trouvé une macro qui faisait le travail) et appliquer des formules à chaque ligne insérée.
les formules font simplement références à la ligne du dessus.

Mon livre de caisse
ligne 1: Comptes, libellé, débit, crédit, n°pièce, contrepartie, codeanalytique,
ligne 2: Comptes, libellé, débit, crédit, n°pièce, contrepartie, codeanalytique,
ligne 2: Comptes, libellé, débit, crédit, n°pièce, contrepartie, codeanalytique,
.........

Mon livre de caisse avant importation dans le logiciel comptable
ligne 1: Comptes, libellé, débit, crédit, n°pièce, contrepartie, codeanalytique, (inchangé)
ligne insérée 1bis: Comptes =Contrepartie ligne 1, libellé = libellé ligne 1, débit = crédit ligne 1, crédit = débit ligne 1, n°pièce = N°pièce ligne 1, Contrepartie = Comptes ligne 1, codeanalytique =code analytique ligne 1

ligne 2:....
Ligne 2 bis:....
.....
......

Résumé:
créer 1 ligne sur 2
appliquer des formules qui reprennent les éléments de la 1ère mais dans un ordre qui puisse être compris par le logiciel comptable. (ex: ce qui est en débit passe en crédit dans la ligne 2.....)

Franchement si vous pouvez résoudre ce problème ça m'aiderait énormément. ça m'éviterait de saisir des milliers de lignes dans mon logiciel compta.

Par avance merci à vous.
A voir également:

4 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
2 août 2014 à 17:08
Bonjour,

Une proposition
https://www.cjoint.com/?DHcrhPETcnV

A+
1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 2/08/2014 à 19:15
Bonjour

Si il y a des "milliers de lignes"; sinon le code de Gyrus ( Bonjour) est valable et plus simple

Testé sur 4400 lignes en caisse à partir du classeur de Gyrus (merci): mise en conformité en 0,9 secondes (RAM 512 Mo)

Sub milliers_de_lignes()
Dim Derlig As Long, T_caisse, T_logiciel
Dim Idx As Long, Col_l As Byte, Col_c As Byte
Dim Start As Single 'pour essai

'initialisation
Start = Timer
Application.ScreenUpdating = False
Derlig = Range("A" & Rows.Count).End(xlUp).Row
T_caisse = Range("A2:G" & Derlig)
ReDim T_logiciel(1 To UBound(T_caisse) * 2, 1 To 7)

'creation lignes "2" pour conformité logiciel
For Idx = 1 To UBound(T_caisse)
Col_c = 1
For Col_l = 1 To 7
T_logiciel((Idx * 2) - 1, Col_l) = T_caisse(Idx, Col_l)
Col_c = Choose(Col_l, 6, 2, 4, 3, 5, 1, 7)
T_logiciel(Idx * 2, Col_l) = T_caisse(Idx, Col_c)
Next Col_l
Next Idx
' restitution tableau conforme
Range("A2").Resize(UBound(T_logiciel), 7) = T_logiciel
'pour essai
Application.ScreenUpdating = True
MsgBox "durée pour 4400 lignes: " & Timer - Start & " sec."
End Sub

La maquette 4400
https://www.cjoint.com/?3HctoStpshy

Michel
1
GuipLyon Messages postés 4 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 19 février 2015
2 août 2014 à 20:47
C'est énorme, ça marche!! Vous avez fait vite! Merci à tous les deux, Gyrus et Michel, pour vos propositions. C'est exactement ce que je voulais.
Je gagne un temps considérable, c'est trop cool. :)

Encore Merci
0
GuipLyon Messages postés 4 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 19 février 2015
19 févr. 2015 à 14:34
Bonjour,

J'ai une nouvelle question par rapport au code que vous m'avez proposé et qui fonctionne à merveille.
https://www.cjoint.com/?0BtoNJ6l6Ti
J'ai mis le fichier que j'utilise ci-dessus.
Mes colonnes B et H sont au format "Texte".

Lorsque j'applique la macro, le format "Texte" disparaît.
Je perds alors tous les zero devant le 1. (double cliquer sur une cellule pour vérifier)

Je dois impérativement concerver le format "texte" pour pouvoir importer ces données en comptabilité.
Avec la macro actuelle, mes données sont enregistrées en classe 1 ce qui est faux.
Mes données doivent être enregistrées en 01 et non en 1..... ce ne sont pas du tout les mêmes codes comptables.

Si vous avez une solution à me proposer, tout en conversant cette macro (elle est extrèmement rapide), je suis preneur.

Merci à vous par avance.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 févr. 2015 à 17:11
Bonjour

c'est curieux, je viens d'essayer et les 2 colonnes B & F restent bien en format Texte avec le zéro en 1°....
??
0