Supp ligne pas gentil

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FS
Le #20176691
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.




isabelle
Le #20176801
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.





FS
Le #20176791
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


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

"FS" 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.





isabelle
Le #20176931
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.







milloche
Le #20177701
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" %
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




isabelle
Le #20177451
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





milloche
Le #20177661
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






milloche
Le #20180241
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.









isabelle
Le #20181611
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.















Publicité
Poster une réponse
Anonyme