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

Supp ligne pas gentil

18 réponses
Avatar
milloche
Bonjour

Dans un fichier Banque, j'ai dans la colonne SOLDE des formules qui font
appel à la valeur de la ligne précédente.

Solde actuel=Solde ligne précédente-débit ligne courante +crédit ligne
courante. Soit

Activecell= Activecell.offset(-1,0) + activecell.offset(0, -1) -
activecell.offset(0,-2)

Le problème se pose quand je dois, pour une raison ou une autre supprimer
une ligne entière. Tous mes soldes situés au dessous me balancent des REF!
dans le nez. Comment contourner automatiquement ce problème ?

J'ai tenté d'inclure des $ dans les formules mais sans succès.

Merci de m'éclairer.

10 réponses

1 2
Avatar
FS
Bonsoir,

Essaye cette petite macro pour supprimer une ligne et rétablit tes
formules (j'ai supposé que la colonne Solde était la colonne C et que le
premier solde calculé était en C5, avec en C4 un solde initial) :

'================= Sub SupprPerso()
Selection.EntireRow.Delete
Range("C5:C" & Range("C5").End(xlDown).Row).FormulaR1C1 = _
"=R[-1]C+RC[-1]-RC[-2]"
End Sub
'=================
Si ça te convient, tu la relies à un bouton de barre d'outil ou au menu
contextuel des feuilles.(Sauf si tu travailles avec Excel 2007...).

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

milloche a écrit :
Bonjour

Dans un fichier Banque, j'ai dans la colonne SOLDE des formules qui font
appel à la valeur de la ligne précédente.

Solde actuel=Solde ligne précédente-débit ligne courante +crédit ligne
courante. Soit

Activecell= Activecell.offset(-1,0) + activecell.offset(0, -1) -
activecell.offset(0,-2)

Le problème se pose quand je dois, pour une raison ou une autre supprimer
une ligne entière. Tous mes soldes situés au dessous me balancent des REF!
dans le nez. Comment contourner automatiquement ce problème ?

J'ai tenté d'inclure des $ dans les formules mais sans succès.

Merci de m'éclairer.




Avatar
isabelle
bonjour Milloche,

utilise les fonction INDIRECT et ADRESSE

par exemple
débit en colonne A,
crédit en colonne B
solde (formule) en colonne C

=INDIRECT(ADRESSE(LIGNE()-1;COLONNE()))+INDIRECT(ADRESSE(LIGNE();COLONNE()-2))-INDIRECT(ADRESSE(LIGNE();COLONNE()-1))

isabelle

milloche a écrit :
Bonjour

Dans un fichier Banque, j'ai dans la colonne SOLDE des formules qui font
appel à la valeur de la ligne précédente.

Solde actuel=Solde ligne précédente-débit ligne courante +crédit ligne
courante. Soit

Activecell= Activecell.offset(-1,0) + activecell.offset(0, -1) -
activecell.offset(0,-2)

Le problème se pose quand je dois, pour une raison ou une autre supprimer
une ligne entière. Tous mes soldes situés au dessous me balancent des REF!
dans le nez. Comment contourner automatiquement ce problème ?

J'ai tenté d'inclure des $ dans les formules mais sans succès.

Merci de m'éclairer.





Avatar
FS
Quoique, finalement on peut bricoler le menu contextuel des cellules
dans Excel 2007. Ceci fonctionne (dans un module ordinaire) :

'====================== Sub Essai()
With Application.CommandBars("cell")
With .Controls.Add(msoControlButton)
.Caption = "Suppression solde"
.OnAction = "SupprPerso"
End With
End With
End Sub

Sub SupprPerso()
Selection.EntireRow.Delete
Range("C5:C" & Range("C5").End(xlDown).Row).FormulaR1C1 = _
"=R[-1]C+RC[-1]-RC[-2]"
End Sub
'======================
Exécuter une fois la Sub Essai puis cliquer droit dans Excel sur la
ligne à supprimer et choisir la commande Suppression solde (en dernière
position).

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

FS a écrit :
Bonsoir,

Essaye cette petite macro pour supprimer une ligne et rétablit tes
formules (j'ai supposé que la colonne Solde était la colonne C et que le
premier solde calculé était en C5, avec en C4 un solde initial) :

'================= > Sub SupprPerso()
Selection.EntireRow.Delete
Range("C5:C" & Range("C5").End(xlDown).Row).FormulaR1C1 = _
"=R[-1]C+RC[-1]-RC[-2]"
End Sub
'================= >
Si ça te convient, tu la relies à un bouton de barre d'outil ou au menu
contextuel des feuilles.(Sauf si tu travailles avec Excel 2007...).

FS


Avatar
milloche
Salut Frederic
Ca marche mais je ne sais plus ou mettre des boutons.
Impossible de faire quelque chose avec un évènement ?
JMM

"FS" a écrit dans le message de news:
e6r%23V%
Bonsoir,

Essaye cette petite macro pour supprimer une ligne et rétablit tes
formules (j'ai supposé que la colonne Solde était la colonne C et que le
premier solde calculé était en C5, avec en C4 un solde initial) :

'================= > Sub SupprPerso()
Selection.EntireRow.Delete
Range("C5:C" & Range("C5").End(xlDown).Row).FormulaR1C1 = _
"=R[-1]C+RC[-1]-RC[-2]"
End Sub
'================= >
Si ça te convient, tu la relies à un bouton de barre d'outil ou au menu
contextuel des feuilles.(Sauf si tu travailles avec Excel 2007...).

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

milloche a écrit :
Bonjour

Dans un fichier Banque, j'ai dans la colonne SOLDE des formules qui font
appel à la valeur de la ligne précédente.

Solde actuel=Solde ligne précédente-débit ligne courante +crédit ligne
courante. Soit

Activecell= Activecell.offset(-1,0) + activecell.offset(0, -1) -
activecell.offset(0,-2)

Le problème se pose quand je dois, pour une raison ou une autre
supprimer une ligne entière. Tous mes soldes situés au dessous me
balancent des REF! dans le nez. Comment contourner automatiquement ce
problème ?

J'ai tenté d'inclure des $ dans les formules mais sans succès.

Merci de m'éclairer.





Avatar
isabelle
correction: j'ai inversé :

crédit en colonne A
débit en colonne B

isabelle

isabelle a écrit :
bonjour Milloche,

utilise les fonction INDIRECT et ADRESSE

par exemple
débit en colonne A,
crédit en colonne B
solde (formule) en colonne C

=INDIRECT(ADRESSE(LIGNE()-1;COLONNE()))+INDIRECT(ADRESSE(LIGNE();COLONNE()-2))-INDIRECT(ADRESSE(LIGNE();COLONNE()-1))


isabelle

milloche a écrit :
Bonjour

Dans un fichier Banque, j'ai dans la colonne SOLDE des formules qui
font appel à la valeur de la ligne précédente.

Solde actuel=Solde ligne précédente-débit ligne courante +crédit
ligne courante. Soit

Activecell= Activecell.offset(-1,0) + activecell.offset(0, -1) -
activecell.offset(0,-2)

Le problème se pose quand je dois, pour une raison ou une autre
supprimer une ligne entière. Tous mes soldes situés au dessous me
balancent des REF! dans le nez. Comment contourner automatiquement ce
problème ?

J'ai tenté d'inclure des $ dans les formules mais sans succès.

Merci de m'éclairer.







Avatar
milloche
Frédéric,
Après test, voilà ce que j'appelle du vrai bidouillage de pro.
Et ça fonctionne aussi sous mon Excel 2000.
Chapeau ! Je m'en servirais dans d'autres fichiers si tu ne demande pas de
droits d'auteurs.
<]:o))
Isabelle
Mon fichier me retourne toujours VALEUR!
Peut-être mon Excel 2000 ?
Je n'ai jamais rien compris à la fonction indirect !
Mais comme la bidouille de Frederic marche impec, j'en reste là.
Merci tous deux.
JMM

"FS" a écrit dans le message de news:
%
Quoique, finalement on peut bricoler le menu contextuel des cellules dans
Excel 2007. Ceci fonctionne (dans un module ordinaire) :

'====================== > Sub Essai()
With Application.CommandBars("cell")
With .Controls.Add(msoControlButton)
.Caption = "Suppression solde"
.OnAction = "SupprPerso"
End With
End With
End Sub

Sub SupprPerso()
Selection.EntireRow.Delete
Range("C5:C" & Range("C5").End(xlDown).Row).FormulaR1C1 = _
"=R[-1]C+RC[-1]-RC[-2]"
End Sub
'====================== >
Exécuter une fois la Sub Essai puis cliquer droit dans Excel sur la ligne
à supprimer et choisir la commande Suppression solde (en dernière
position).

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

FS a écrit :
Bonsoir,

Essaye cette petite macro pour supprimer une ligne et rétablit tes
formules (j'ai supposé que la colonne Solde était la colonne C et que le
premier solde calculé était en C5, avec en C4 un solde initial) :

'================= >> Sub SupprPerso()
Selection.EntireRow.Delete
Range("C5:C" & Range("C5").End(xlDown).Row).FormulaR1C1 = _
"=R[-1]C+RC[-1]-RC[-2]"
End Sub
'================= >>
Si ça te convient, tu la relies à un bouton de barre d'outil ou au menu
contextuel des feuilles.(Sauf si tu travailles avec Excel 2007...).

FS




Avatar
isabelle
bonjour Milloche,

je t'ai fait un p'tit exemple : http://cjoint.com/?jsxkUj4wux

isabelle

milloche a écrit :Isabelle
Mon fichier me retourne toujours VALEUR!
Peut-être mon Excel 2000 ?
Je n'ai jamais rien compris à la fonction indirect !
Mais comme la bidouille de Frederic marche impec, j'en reste là.
Merci tous deux.
JMM





Avatar
milloche
Isabelle
Ben oui
Ton tit exemple ci-joint marche aussi.
C'est sans doute moi qui avait couillé - OUPS PARDON - fait une erreur.
Mais avoue que le truc de FS n'est pas mal non plus.
Je ne savais pas qu'on pouvait bidouiller un menu contextuel si simplement.
Merci de ta gentillesse.
@ + <]:o))
JMM

"isabelle" a écrit dans le message de news:
%
bonjour Milloche,

je t'ai fait un p'tit exemple : http://cjoint.com/?jsxkUj4wux

isabelle

milloche a écrit :Isabelle
Mon fichier me retourne toujours VALEUR!
Peut-être mon Excel 2000 ?
Je n'ai jamais rien compris à la fonction indirect !
Mais comme la bidouille de Frederic marche impec, j'en reste là.
Merci tous deux.
JMM






Avatar
milloche
Coucou
Ca mallsse pas.
http://cjoint.com/?jtnEVc7Rcz
JMM

"isabelle" a écrit dans le message de news:

correction: j'ai inversé :

crédit en colonne A
débit en colonne B

isabelle

isabelle a écrit :
bonjour Milloche,

utilise les fonction INDIRECT et ADRESSE

par exemple
débit en colonne A,
crédit en colonne B
solde (formule) en colonne C

=INDIRECT(ADRESSE(LIGNE()-1;COLONNE()))+INDIRECT(ADRESSE(LIGNE();COLONNE()-2))-INDIRECT(ADRESSE(LIGNE();COLONNE()-1))

isabelle

milloche a écrit :
Bonjour

Dans un fichier Banque, j'ai dans la colonne SOLDE des formules qui
font appel à la valeur de la ligne précédente.

Solde actuel=Solde ligne précédente-débit ligne courante +crédit ligne
courante. Soit

Activecell= Activecell.offset(-1,0) + activecell.offset(0, -1) -
activecell.offset(0,-2)

Le problème se pose quand je dois, pour une raison ou une autre
supprimer une ligne entière. Tous mes soldes situés au dessous me
balancent des REF! dans le nez. Comment contourner automatiquement ce
problème ?

J'ai tenté d'inclure des $ dans les formules mais sans succès.

Merci de m'éclairer.









Avatar
isabelle
bonjour Milloche,

il faudrait modifier la formule
=SI(C3<0;C3*-1;"")
par
=SI(C3<0;C3*-1;0)

car si le résultat est du texte ("") cela donne: texte + numérique

isabelle

milloche a écrit :
Coucou
Ca mallsse pas.
http://cjoint.com/?jtnEVc7Rcz
JMM

"isabelle" a écrit dans le message de news:


correction: j'ai inversé :

crédit en colonne A
débit en colonne B

isabelle

isabelle a écrit :

bonjour Milloche,

utilise les fonction INDIRECT et ADRESSE

par exemple
débit en colonne A,
crédit en colonne B
solde (formule) en colonne C

=INDIRECT(ADRESSE(LIGNE()-1;COLONNE()))+INDIRECT(ADRESSE(LIGNE();COLONNE()-2))-INDIRECT(ADRESSE(LIGNE();COLONNE()-1))

isabelle

milloche a écrit :

Bonjour

Dans un fichier Banque, j'ai dans la colonne SOLDE des formules qui
font appel à la valeur de la ligne précédente.

Solde actuel=Solde ligne précédente-débit ligne courante +crédit ligne
courante. Soit

Activecell= Activecell.offset(-1,0) + activecell.offset(0, -1) -
activecell.offset(0,-2)

Le problème se pose quand je dois, pour une raison ou une autre
supprimer une ligne entière. Tous mes soldes situés au dessous me
balancent des REF! dans le nez. Comment contourner automatiquement ce
problème ?

J'ai tenté d'inclure des $ dans les formules mais sans succès.

Merci de m'éclairer.















1 2