Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Encore un souci avec ma macro !

2 réponses
Avatar
Calou
Bonjour,
Depuis quelques jours, je vous ennuie avec ma macro. Il y a encore un souci.
Je vous explique :C'est un fichier où je gère mes comptes personnels. J'ai
une feuille Echéancier avec des écritures qui sont saisies et quand la date
de la prochaine échéance arrive, la macro bascule automatiquement vers la
feuille compte courant.
Si j'ai une seule écriture à balancer pas de problème, par contre si j'ai
deux écritures, seule la dernière est inscrite sur ma feuille compte
courant.

Je vous joins la macro en question :


Sub Maj_Echeancier()
Application.EnableEvents = False
'compteur = 0
Dim Phrase As String
Phrase = ""
m = 4 'Ligne à partir de laquelle il faut balayer les dates
derlg = Feuil1.[a65536].End(3).Row + 1
Do While Cells(m, 4) <> "" 'Boucle sur les prochaines échéances
Cells(m, 12) = Cells(m, 4)
If Cells(m, 4) <= Date + 3 Then
If Cells(m, 5) <> 0 Then
If Cells(m, 5) <> 99 Then Cells(m, 5) = Cells(m, 5) - 1 'Si le Nb d
'échéance est <> de 99 on décrémente de 1
With Worksheets("Echéancier")
Cells(m, 1) = Cells(m, 4) 'Mise à jour de la date de l'opération
dans l'échéancier
'.Cells(m, 1).Copy Worksheets("Compte Courant").Cells(derlg, 1)
'Date
.Cells(m, 12).Copy Worksheets("Compte Courant").Cells(derlg, 1)
'Date
'.Cells(m, 4) = Worksheets("Compte Courant").Cells(derlg, 1) 'Date
.Cells(m, 6).Copy Worksheets("Compte Courant").Cells(derlg, 2) 'Type
.Cells(m, 7).Copy Worksheets("Compte Courant").Cells(derlg, 4)
'Tiers
.Cells(m, 8).Copy Worksheets("Compte Courant").Cells(derlg, 5)
'Catégorie
.Cells(m, 9).Copy Worksheets("Compte Courant").Cells(derlg, 6)
'Libellé
.Cells(m, 10).Copy Worksheets("Compte Courant").Cells(derlg, 7)
'Débit
.Cells(m, 11).Copy Worksheets("Compte Courant").Cells(derlg, 8)
'Crédit
compteur = compteur + 1
End With
End If
End If
m = m + 1
Loop
'If compteur = 1 Then
' Phrase = "1 nouvelle écriture !"
'Else
' Phrase = compteur & " nouvelles écritures !"
'End If
'If compteur <> 0 Then MsgBox Phrase, vbOKOnly, "Echéancier"
End Sub

Je suis un eternel débutant et je compte sur vous pour votre compréhension.

Un grand merci à vous par avance pour votre aide.

Bonne soirée.

Philippe

2 réponses

Avatar
Daniel.C
Bonsoir.
Un peu au hasard, ajoute pour chaque recopie :
derlg = derlg + 1
Cordialement.
Daniel

Bonjour,
Depuis quelques jours, je vous ennuie avec ma macro. Il y a encore un souci.
Je vous explique :C'est un fichier où je gère mes comptes personnels. J'ai
une feuille Echéancier avec des écritures qui sont saisies et quand la date
de la prochaine échéance arrive, la macro bascule automatiquement vers la
feuille compte courant.
Si j'ai une seule écriture à balancer pas de problème, par contre si j'ai
deux écritures, seule la dernière est inscrite sur ma feuille compte courant.

Je vous joins la macro en question :


Sub Maj_Echeancier()
Application.EnableEvents = False
'compteur = 0
Dim Phrase As String
Phrase = ""
m = 4 'Ligne à partir de laquelle il faut balayer les dates
derlg = Feuil1.[a65536].End(3).Row + 1
Do While Cells(m, 4) <> "" 'Boucle sur les prochaines échéances
Cells(m, 12) = Cells(m, 4)
If Cells(m, 4) <= Date + 3 Then
If Cells(m, 5) <> 0 Then
If Cells(m, 5) <> 99 Then Cells(m, 5) = Cells(m, 5) - 1 'Si le Nb d
'échéance est <> de 99 on décrémente de 1
With Worksheets("Echéancier")
Cells(m, 1) = Cells(m, 4) 'Mise à jour de la date de l'opération dans
l'échéancier
'.Cells(m, 1).Copy Worksheets("Compte Courant").Cells(derlg, 1) 'Date
.Cells(m, 12).Copy Worksheets("Compte Courant").Cells(derlg, 1) 'Date
'.Cells(m, 4) = Worksheets("Compte Courant").Cells(derlg, 1) 'Date
.Cells(m, 6).Copy Worksheets("Compte Courant").Cells(derlg, 2) 'Type
.Cells(m, 7).Copy Worksheets("Compte Courant").Cells(derlg, 4) 'Tiers
.Cells(m, 8).Copy Worksheets("Compte Courant").Cells(derlg, 5)
'Catégorie
.Cells(m, 9).Copy Worksheets("Compte Courant").Cells(derlg, 6)
'Libellé
.Cells(m, 10).Copy Worksheets("Compte Courant").Cells(derlg, 7)
'Débit
.Cells(m, 11).Copy Worksheets("Compte Courant").Cells(derlg, 8)
'Crédit
compteur = compteur + 1
End With
End If
End If
m = m + 1
Loop
'If compteur = 1 Then
' Phrase = "1 nouvelle écriture !"
'Else
' Phrase = compteur & " nouvelles écritures !"
'End If
'If compteur <> 0 Then MsgBox Phrase, vbOKOnly, "Echéancier"
End Sub

Je suis un eternel débutant et je compte sur vous pour votre compréhension.

Un grand merci à vous par avance pour votre aide.

Bonne soirée.

Philippe


Avatar
Calou
Bonjour Daniel,
On dit que le hasard fait bien les choses...
Mille fois merci.
Il y a parfois des évidences qui nous echappe !
Bonne journée.
Philippe
"Daniel.C" a écrit dans le message de news:

Bonsoir.
Un peu au hasard, ajoute pour chaque recopie :
derlg = derlg + 1
Cordialement.
Daniel

Bonjour,
Depuis quelques jours, je vous ennuie avec ma macro. Il y a encore un
souci. Je vous explique :C'est un fichier où je gère mes comptes
personnels. J'ai une feuille Echéancier avec des écritures qui sont
saisies et quand la date de la prochaine échéance arrive, la macro
bascule automatiquement vers la feuille compte courant.
Si j'ai une seule écriture à balancer pas de problème, par contre si j'ai
deux écritures, seule la dernière est inscrite sur ma feuille compte
courant.

Je vous joins la macro en question :


Sub Maj_Echeancier()
Application.EnableEvents = False
'compteur = 0
Dim Phrase As String
Phrase = ""
m = 4 'Ligne à partir de laquelle il faut balayer les dates
derlg = Feuil1.[a65536].End(3).Row + 1
Do While Cells(m, 4) <> "" 'Boucle sur les prochaines échéances
Cells(m, 12) = Cells(m, 4)
If Cells(m, 4) <= Date + 3 Then
If Cells(m, 5) <> 0 Then
If Cells(m, 5) <> 99 Then Cells(m, 5) = Cells(m, 5) - 1 'Si le Nb
d 'échéance est <> de 99 on décrémente de 1
With Worksheets("Echéancier")
Cells(m, 1) = Cells(m, 4) 'Mise à jour de la date de l'opération
dans l'échéancier
'.Cells(m, 1).Copy Worksheets("Compte Courant").Cells(derlg, 1)
'Date
.Cells(m, 12).Copy Worksheets("Compte Courant").Cells(derlg, 1)
'Date
'.Cells(m, 4) = Worksheets("Compte Courant").Cells(derlg, 1)
'Date
.Cells(m, 6).Copy Worksheets("Compte Courant").Cells(derlg, 2)
'Type
.Cells(m, 7).Copy Worksheets("Compte Courant").Cells(derlg, 4)
'Tiers
.Cells(m, 8).Copy Worksheets("Compte Courant").Cells(derlg, 5)
'Catégorie
.Cells(m, 9).Copy Worksheets("Compte Courant").Cells(derlg, 6)
'Libellé
.Cells(m, 10).Copy Worksheets("Compte Courant").Cells(derlg, 7)
'Débit
.Cells(m, 11).Copy Worksheets("Compte Courant").Cells(derlg, 8)
'Crédit
compteur = compteur + 1
End With
End If
End If
m = m + 1
Loop
'If compteur = 1 Then
' Phrase = "1 nouvelle écriture !"
'Else
' Phrase = compteur & " nouvelles écritures !"
'End If
'If compteur <> 0 Then MsgBox Phrase, vbOKOnly, "Echéancier"
End Sub

Je suis un eternel débutant et je compte sur vous pour votre
compréhension.

Un grand merci à vous par avance pour votre aide.

Bonne soirée.

Philippe