OVH Cloud OVH Cloud

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.

8 réponses

1 2
Avatar
milloche
Ben oui !
Fallait savoir
J'en aurais appris des trucs avec vous.
Et c'est sans doute pas fini !
Cordialement
JMM

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

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.

















Avatar
milloche
Bonjour Frédéric
Je demande l'antidote de ton traitement (comment supprimer cette commande
supplémentaire, si besoin est car je l'ai bêtement testé dans un fichier
qui n'a pas besoin de ça)
Est est-il possible de faire ce bidouillage avec d'autres listes de choix
(celle qui apparaît quand clic droit sur les barres lettres de lignes et N°
de colonnes par exemple). Rappel : Excel 2000.
JMM
"milloche" a écrit dans le message de news:
%
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
milloche
Bonjour Isabelle
Après quelques temps de cogitation, je ne me sers plus de mes débit et
crédits calculés pour obtenir le solde, mais bêtement de la somme en + ou -
que me donne la banque sur chaque ligne.
Conclusion : j'ai raccourci ta formule des 2/3 et le débit ou crédit
calculé = rien n'a plus d'influence.
Content de moi grâce à toi.
JMM
"milloche" a écrit dans le message de news:

Ben oui !
Fallait savoir
J'en aurais appris des trucs avec vous.
Et c'est sans doute pas fini !
Cordialement
JMM

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

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.





















Avatar
isabelle
c'est super Milloche,
isabelle

milloche a écrit :
Bonjour Isabelle
Après quelques temps de cogitation, je ne me sers plus de mes débit et
crédits calculés pour obtenir le solde, mais bêtement de la somme en + ou -
que me donne la banque sur chaque ligne.
Conclusion : j'ai raccourci ta formule des 2/3 et le débit ou crédit
calculé = rien n'a plus d'influence.
Content de moi grâce à toi.
JMM
"milloche" a écrit dans le message de news:


Ben oui !
Fallait savoir
J'en aurais appris des trucs avec vous.
Et c'est sans doute pas fini !
Cordialement
JMM

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


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.

























Avatar
FS
Bonsoir,

L'"antidote" :

Sub DelCommande()
On Error Resume Next
Application.CommandBars("cell"). _
Controls("Suppression solde").Delete
End Sub

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

milloche a écrit :
Bonjour Frédéric
Je demande l'antidote de ton traitement (comment supprimer cette commande
supplémentaire, si besoin est car je l'ai bêtement testé dans un fichier
qui n'a pas besoin de ça)
Est est-il possible de faire ce bidouillage avec d'autres listes de choix
(celle qui apparaît quand clic droit sur les barres lettres de lignes et N°
de colonnes par exemple). Rappel : Excel 2000.
JMM
"milloche" a écrit dans le message de news:
%
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
Caetera
>............comment supprimer cette commande supplémentaire



*******************

Pour réinitialiser le menu contextuel "cellule" :

Application.CommandBars("Cell").Reset

Etc
Avatar
FS
Bis,

Pour la deuxième partie de ta question, exemple de commande perso dans
le menu des lignes (clic droit sur le numéro d'une ligne) :

'====================== Sub CréeCommande()
With Application.CommandBars("row")
With .Controls.Add(msoControlButton)
.Caption = "Commande perso"
.OnAction = "Essai"
End With
End With
End Sub

Sub DelCommande()
On Error Resume Next
Application.CommandBars("row"). _
Controls("Commande perso").Delete
End Sub

Sub Essai()
MsgBox "coucou"
End Sub
'======================
Pour obtenir la même chose dans le menu des colonnes, remplace "row" par
"column").
Ça fonctionne d'Excel 97 à 2007.

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

milloche a écrit :
Bonjour Frédéric
Je demande l'antidote de ton traitement (comment supprimer cette commande
supplémentaire, si besoin est car je l'ai bêtement testé dans un fichier
qui n'a pas besoin de ça)
Est est-il possible de faire ce bidouillage avec d'autres listes de choix
(celle qui apparaît quand clic droit sur les barres lettres de lignes et N°
de colonnes par exemple). Rappel : Excel 2000.
JMM
"milloche" a écrit dans le message de news:
%
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
milloche
Merci pour la solution. Frederic, puis Caetera, je suis sûr que j'aurais
besoin de ton truc un jour ou l'autre.
Pour ma question initiale, la solution d' Isabelle est la meilleure pour
mon fichier.
Reconnaissance à tous les trois maintenant.
Cordialement.
JMM

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

Bis,

Pour la deuxième partie de ta question, exemple de commande perso dans le
menu des lignes (clic droit sur le numéro d'une ligne) :

'====================== > Sub CréeCommande()
With Application.CommandBars("row")
With .Controls.Add(msoControlButton)
.Caption = "Commande perso"
.OnAction = "Essai"
End With
End With
End Sub

Sub DelCommande()
On Error Resume Next
Application.CommandBars("row"). _
Controls("Commande perso").Delete
End Sub

Sub Essai()
MsgBox "coucou"
End Sub
'====================== >
Pour obtenir la même chose dans le menu des colonnes, remplace "row" par
"column").
Ça fonctionne d'Excel 97 à 2007.

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

milloche a écrit :
Bonjour Frédéric
Je demande l'antidote de ton traitement (comment supprimer cette
commande supplémentaire, si besoin est car je l'ai bêtement testé dans
un fichier qui n'a pas besoin de ça)
Est est-il possible de faire ce bidouillage avec d'autres listes de
choix (celle qui apparaît quand clic droit sur les barres lettres de
lignes et N° de colonnes par exemple). Rappel : Excel 2000.
JMM
"milloche" a écrit dans le message de
news: %
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












1 2