Blocage macro transposition autre feuille
Bonjour à tous,
je me permets de revenir à la charge avec mon sujet.
Il s'agit d'un classeur de comptabilité qui doit aller chercher dans la feuille "Journal_Ecritures_Logiciel_2022" des informations en ne prenant en règle général qu'une ligne sur deux et pour les transposer dans la seconde feuille "Suivi_Compta_CaisseEpargne_2022", l'objectif étant de faire l'état de rapprochement entre le solde bancaire et cette deuxième feuille Excel.
La macro ne doit prendre en charge que les informations contenues dans les colonnes F & G de la feuille "Journal_Ecritures_Logiciel_2022" pour les transposer ensuite dans la feuille "Suivi_Compta_CaisseEpargne_2022".
La problématique réside dans le fait qu'il doit transposer la bonne écriture, c'est à dire capter la différence entre une dépense et une recette, cela fait référence directement à la colonne C dans la laquelle on retrouve à la fois des comptes de classe 6, soit des charges et à la fois des comptes de classe 7, soit des recettes.
Mais on trouve aussi d'autres comptes, ce qui ne facilite pas la tâche d'identification. A cela s'ajoute aussi la difficulté des informations contenues dans les colonnes H & I de la feuille "Journal_Ecritures_Logiciel_2022" qui ne doivent pas êtres prises en compte, ni transposer pour éviter les doublons.
J'espère avoir été compréhensible, merci d'avance, cordialement, Chti59xcel
Bonjour Mgxcel59
Vous n'êtes pas assez explicite, quelles écritures voulez-vous transposer exactement
a+
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Votre requête me parait assez bizarre. Le rapprochement bancaire s'effectue uniquement sur les comptes de classe 5. Vous en avez a priori 2 : 5112 et 5121. Ces 2 comptes ne représentent-ils que les opérations sur la Caisse d'Epargne ?
Bonjour,
Je reviens après quelques jours, car j'ai essayé de réfléchir à la meilleure façon d'expliquer ma demande.
Ce que je cherche, c'est une transposition d'une ligne sur deux depuis la feuille "Journal_Ecritures_Logiciel_2022" prenant en compte les colonnes A,B,D, F & G vers la feuille "Suivi_Compta_CaisseEpargne_2022". Pour aider, j'ai rajouté dans la feuille "Journal_Ecritures_Logiciel_2022" des informations en colonnes K avec un c pour crédit et un d pour débit. Dans la colonne L, une formule pour indiquer s'il s'agit d'une opération au débit ou au crédit et dans la colonne M, une formule qui ne prend que le résultat.
Ses informations peuvent peut être aidées à trouver une formule ou une macro qui permette de faire la transposition d'une ligne sur deux dans la feuille "Suivi_Compta_CaisseEpargne_2022" sans se préoccuper des colonnes C, H & I ?
En espérant que vous pourrez m'aider à relancer mon classeur, car avant la macro fonctionnait parfaitement, mais depuis le dépassement de la ligne 226, ça bug.
Bien cordialement, Chti59xcel
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Préalablement à votre question technique, je ne comprends pas votre logique d'extraction des écritures (une sur deux) pour le suivi d'un compte bancaire de Caisse d'Epargne. Pour moi, le principe est d'extraire les écritures relatives au compte de classe 5 représentant la Caisse d'Epargne, c'est à dire soit le compte 5112, soit le compte 5121.
Re bonjour,
Sur le fond vous avez raison, tout repars vers le compte 5121. Mais il me semble que dans ma démarche , je suis obligé de fonctionner de cette façon avec le principe des écritures doubles... En effet, si par exemple, j'ai une dépense au débit de 50,00 € au compte 6232, il va inscrire aussi cette somme au crédit au compte 5121, soit deux colonnes différentes. Mais quand je transpose dans l'autre feuille, l'objectif, c'est que la formule ou la macro aille chercher la bonne information, selon que c'est une dépense ou une recette pour l'inscrire dans une seule colonne. De cette manière, quand il fait le total des + et -, il doit trouver le même solde que la Banque...
Je ne sais pas si je suis assez clair dans mes explications ou peut être qu'il existe une autre solution dans la façon de transposer les informations ?
D'avance, merci pour le soutien, bien cordialement, Chti59xcel
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Pour trouver le même solde que la banque, vous ne devez vous intéresser qu'aux écritures concernant le compte 5121. Celles concernant les comptes de classe 6 (charges) et de classe 7 (produits) permettent de déterminer le résultat de l'entreprise et n'ont rien à voir avec les flux bancaires (encaissement/décaissement).
Bon , ok, merci pour le cours de compta, mais concrètement, est-ce qu'il y a quelque chose à faire pour que la macro se remette à fonctionner, parce que c'était vraiment pratique.
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bien sûr, mais en repartant avec une macro sur un principe correct, à savoir une sélection des écritures sur le compte 5121 relatif à la Caisse d"Epargne.
Je vous communique d'ici ce soir une proposition dans ce sens.
Ah, super, ok merci !
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Tout d'abord, merci pour cette proposition et surtout pour le temps passé, je suis reconnaissant.
Je viens de tester la macro, elle transpose correctement.
Ce que je recherche au niveau effet, c'est envoyer les informations vers la feuille Suivi_Compta_CaisseEpargne_2022, mais dans une seule colonne qui puisse regrouper les sommes au débit et au crédit. Normalement, si les sommes au débit sont précédées du signe négatif, au moment de sélectionner le Mois de Juin par exemple pour faire le rapprochement avec la banque, je vais arriver au bon résultat.
Je vois dans mon essai de la macro qu'il n'a pas transposé les lignes en rouge, sauf une ? Est-ce qu'il est possible transposer aussi ses lignes qui vont participer au résultat global du bilan ? Enfin, je ne sais pas pourquoi, mais la macro n'a pas transposé la ligne 238 ?
Je pense que cet échange va générer de nouvelles questions, je reste à l'écoute de vos remarques, bonne journée, cordialement, Chti59xcel
@Thev,
quel est l'advantage de ce double application.transpose vs application.index, plus performant ?
[écritures_caisse_épargne].Resize(nb_lignes).Value = Application.Transpose(Application.Transpose(dic_écritures_banque.items))
[écritures_caisse_épargne].Resize(nb_lignes).Value = Application.Index(dic_écritures_banque.items, 0, 0)- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Normalement, si les sommes au débit sont précédées du signe négatif, au moment de sélectionner le Mois de Juin par exemple pour faire le rapprochement avec la banque, je vais arriver au bon résultat.
Non. Car le débit d'un compte est toujours positif pour la comptabilité d'une entreprise. Pour une banque, quand un compte est débiteur c'est positif pour elle mais négatif pour le détenteur du compte. Donc un débit de 100 sur le compte de banque d'une entreprise correspond pour elle à un crédit de 100 sur la banque correspondante.
Est-ce qu'il est possible transposer aussi ses lignes qui vont participer au résultat global du bilan ?
Encore une fois, les lignes non relatives au compte 5121 n'ont rien à voir avec le rapprochement bancaire
Enfin, je ne sais pas pourquoi, mais la macro n'a pas transposé la ligne 238 ?
La ligne 238 se retrouve à la ligne 77 (numéro écriture 99)
@BsAlv
Votre instruction plus performante ? Pas sûr. En tout cas plus courte, donc je l'adopte.
ci-jointe nouvelle version
Merci pour ce nouveau retour.
J'ai testé la macro. Dans le classeur en retour, elle fait la transposition dans une seule colonne, donc c'est ok au niveau de l'effet rechercher, merci.
Par contre, la macro m'a généré des dates aux Mois d'Octobre, Novembre et Décembre 2022 ?
Ensuite, j'ai installé la macro dans mon classeur officiel, mais là, j'ai eu un bug, je vous joins la photo.
Concernant le fonctionnement, je ne recherche pas à coller à de la procédure comptable de façon Orthodoxe, je veux juste la transposition d'une ligne sur deux des colonnes F & G de la feuille Journal_Ecritures_Logiciel_2022 vers la feuille Suivi_Compta_CaisseEpargne_2022 dans la seule colonne E et qu'il me prenne aussi mes lignes rouge. En fait c'est presque de la recopie...
Avant l'ancienne macro fonctionnait de cette manière, mais on ne sait pas pourquoi, elle bloque à ligne 226, après la macro ne recopie plus rien ?
Je vous joins aussi l'ancienne macro si ça peut aider, je ne sais... J'avoue là, je suis un peu perdu
Sub transpositionEcritures()
Dim FeuilleSource As Worksheet, FeuilleDestination As Worksheet
Dim tableauSource As Variant, tableauFinal() As Variant
Dim i As Integer, nbCol As Integer, numOperation As Integer
Dim lig As Long
Dim debit As Double, credit As Double
Dim stopRegroupement As Boolean
'initialisations
Set FeuilleSource = Worksheets("Journal_Ecritures_Logiciel_2022")
Set FeuilleDestination = Worksheets("Suivi_Compta_CaisseEpargne_2022")
tableauSource = FeuilleSource.Range("A3").CurrentRegion.Value
lig = 4
'parcours du tableau source
While Not lig > UBound(tableauSource, 1)
'modification des variables de boucle
debit = 0
credit = 0
nbCol = nbCol + 1
ReDim Preserve tableauFinal(1 To 5, 1 To nbCol)
signe = 0
numOperation = tableauSource(lig, 1)
stopRegroupement = False
'remplissage des infos non calculées
tableauFinal(1, nbCol) = tableauSource(lig, 1)
tableauFinal(2, nbCol) = tableauSource(lig, 2)
tableauFinal(3, nbCol) = tableauSource(lig, 4)
tableauFinal(4, nbCol) = tableauSource(lig, 5)
'parcours des lignes du tableau avec le même numéro d'opération (pour calculer la valeur maxi)
While Not lig > UBound(tableauSource, 1) And Not stopRegroupement
If tableauSource(lig, 1) = numOperation Then
'signe de la transaction
If signe = 0 Then
If Not tableauSource(lig, 6) = "" Then
signe = -1
ElseIf Not tableauSource(lig, 7) = "" Then
signe = 1
End If
End If
debit = debit + tableauSource(lig, 6)
credit = credit + tableauSource(lig, 7)
lig = lig + 1
Else
stopRegroupement = True
End If
Wend
'remplissage de la valeur de transaction
tableauFinal(5, nbCol) = signe * WorksheetFunction.Max(debit, credit)
Wend
If Not nbCol = 0 Then
With FeuilleDestination
.Range("A3").CurrentRegion.Offset(3, 0).ClearContents
.Columns(2).NumberFormat = "@"
.Range("A4").Resize(nbCol, 5).Value = Application.Transpose(tableauFinal)
.Columns(2).NumberFormat = "m/d/yyyy"
End With
End If
End SubEdit modo : code entre balises SVP
Cordialement, Chti59xcel
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Ensuite, j'ai installé la macro dans mon classeur officiel, mais là, j'ai eu un bug, je vous joins la photo.
Vous devez définir dans votre classeur officiel les références de nom utilisées dans le code. Ces références permettent au code d'être invariant en cas d'ajout ou de déplacement de colonnes.
Menu --> Formules --> Gestionnaire de noms
bonjour,
votre macro des 2 reactions précédent, il se bloquait parce que un variable (je pense nbCol) est integer et vous dépassez +32.000.
Il est écrit un peu difficile et au bout il faut transposer la matrice, maintenant, c'est plus lisible et il ne faut plus transposer.
Sub transpositionEcritures_Ancien()
Dim FeuilleSource As Worksheet: Set FeuilleSource = Worksheets("Journal_Ecritures_Logiciel_2022")
Dim FeuilleDestination As Worksheet: Set FeuilleDestination = Worksheets("Suivi_Compta_CaisseEpargne_2022")
Dim tableauSource, tableauFinal
Dim nbCol As Long, lig As Long
With FeuilleSource.Range("A3").CurrentRegion
tableauSource = .Offset(4 - .Row).Resize(.Rows.Count + .Row - 4, 7).Value2 'plage à partir de la ligne 4
ReDim tableauFinal(1 To UBound(tableauSource), 1 To 5) 'préparer cette matrice (non transponable)
End With
For lig = 1 To UBound(tableauSource)
If --(tableauSource(lig, 3)) = 5121 Then
nbCol = nbCol + 1
tableauFinal(nbCol, 1) = tableauSource(lig, 1)
tableauFinal(nbCol, 2) = tableauSource(lig, 2)
tableauFinal(nbCol, 3) = tableauSource(lig, 4)
tableauFinal(nbCol, 4) = tableauSource(lig, 5)
tableauFinal(nbCol, 5) = tableauSource(lig, 6) - tableauSource(lig, 7)
End If
Next
With FeuilleDestination.Range("A3")
.Resize(1000, 5).ClearContents
If nbCol > 0 Then .Resize(nbCol, 5).Value = tableauFinal
End With
End SubBonjour,
Merci pour votre retour et les corrections apportées. J'enregistre l'information de Thev qui m'a aidé à comprendre les liaisons qui sont à faire avec le gestionnaire de Noms.
J'ai intégré la macro corrigé de BsAlv et testé dans mon classeur, merci pour ce travail. Elle fonctionne au niveau transposition, mais j'ai un bug de résultat comptable. Je remarque qu'il me transforme mes dates. Par exemple, les lignes en rouge sont toutes au 01/01/2022 dans mon classeur et la macro me transpose de façon chronologique en changeant les dates et en allant du 01/01 au 14/01. Du coup, il transpose les opérations ligne noire qu'à partir du 15/06, donc il me manque des opérations comptables qui ne sont pas pris en compte dans le calcul de la feuille Suivi_Compta_CaisseEpargne_2022.
Un vrai casse tête, cordialement, Chti59xcel
bonjour,
concernant la modification des dates dans la macro de Thev :
dic_écritures_banque(clé) = Array(r1.Value, r2.Value2, r3.Value, r4.Value, r5.Value2 - r6.Value2)
Ma macro n'était pas connectée au bouton blanche "transition ..." mais maintenant elle est connectée avec le bouton orange.
pour le reste, ma macro donne le même resultat que celle de Thev, donc je ne comprends pas ce qu'il manque.
Ici une version qui transpose tous les données et les sorte sur la 6ième colonne (compte). (si vous ne voulez pas ce dernier changement, réactivez le If ... endif juste à l'intérieur du For ... Next)
Bonjour,
Merci pour les retours.
Je galère, je galère, je galère.... Bon, je suis reparti sur la proposition de Thev en mettant à à jour toutes les informations dans le gestionnaire de noms.
Ensuite, j'ai testé la macro, ça fonctionne, mais le résultat n'est pas bon. La correction des dates, c'est ok, j'ai modifié la macro à partir des dernières infos de BsAlv (dic_écritures_banque(clé) = Array(r1.Value, r2.Value2, r3.Value, r4.Value, r5.Value2 - r6.Value2).
En fait, il me transpose les lignes en noires de la feuille Journal_Ecritures_Logiciel_2022 qu'à partir du 14/01, alors qu'il devrait me prendre dès le 01/01/2022.
Je suis un peu pommé, je fais une pause pour prendre le temps de tout remanipuler et mieux comprendre le fonctionnement avant de revenir vers vous