Suivi avec incrémentation

melba

XLDnaute Occasionnel
Bonjour,

Je sollicite votre aide pour le problème suivant :

je souhaitais concevoir un suivi mensuel qui me permette :
de saisir tous les jours en col C le nombre de cadeaux donnés à chaque participant.
Ma saisie du jour doit écraser celle de la veille ou des jours précédents.
Néanmoins cette saisie doit être prise en compte dans un total figurant en col D, il s'agit du total cumulé.

Dans un précédent post un code m'avait été donné qui fonctionne très bien.

Cependant là où j'ai un problème c'est lorsque je me trompe dans ma dernière saisie du jour et souhaite revenir en arrière,
cela n'est pas possible.

Serait-il possible de mettre par exemple des boutons avec une macro permettant de revenir sur la dernière saisie de la colonne C et cela pour le participant que je choisirais?

Merci pour votre aide

@+


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C5:C9")) Is Nothing Or Target.Count > 1 Then Exit Sub
Range("e" & Target.Row) = Range("e" & Target.Row) + Target
End Sub
 

Pièces jointes

  • SUVI AVEC INCREMENTATION test2.xlsm
    17 KB · Affichages: 56

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Suivi avec incrémentation

Bonjour Melba,

Serait-il possible de mettre par exemple des boutons avec une macro permettant de revenir sur la dernière saisie de la colonne C et cela pour le participant que je choisirais?
Mettre des boutons, cela risque d'alourdir le fichier dans le cas où il y aurait une centaine de personnes

ton fichier en retour avec une procédure clic-droit qui permet d'annuler n'importe quelle saisie faite en colonne C

à+
Philippe
 

Pièces jointes

  • 111.xlsm
    18.6 KB · Affichages: 60
  • 111.xlsm
    18.6 KB · Affichages: 65
  • 111.xlsm
    18.6 KB · Affichages: 60

job75

XLDnaute Barbatruc
Re : Suivi avec incrémentation

Bonjour maval, salut Philippe,

Voir le fichier joint, dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C5:C9")) Is Nothing Or Target.Count > 1 Then Exit Sub
Dim ac As Range
Application.EnableEvents = False
Set ac = ActiveCell
Application.Undo
precedent = [B5:D9].Value
Set memac = ActiveCell
Application.Undo
ac.Select
Application.EnableEvents = True
Target(1, 2) = Target(1, 2) + Val(Target)
End Sub
et dans Module1 :

Code:
Public precedent, memac As Range 'mémorise les variables

Sub Annuler()
If IsEmpty(precedent) Then Exit Sub
Feuil1.[B5:D9] = precedent 'Feuil1 CodeName
Application.Goto memac
End Sub
A+
 

Pièces jointes

  • SUVI AVEC INCREMENTATION(1).xls
    40.5 KB · Affichages: 56

melba

XLDnaute Occasionnel
Re : Suivi avec incrémentation

Bonsoir à tous,

Cela signifie-t-il que dans la proposition de Job75, le code :

Public precedent, memac As Range 'mémorise les variables

Sub Annuler()
If IsEmpty(precedent) Then Exit Sub
Feuil1.[B5:D9] = precedent 'Feuil1 CodeName
Application.Goto memac
End Sub

pourrait être affecté à des boutons macros pour que cela fonctionne?

Serait-il possible de m'expliquer pourquoi le 1er code doit être modifié, qu'apporte-t-il de plus par rapport au code que l'on m'avait fourni la 1ère fois?

Merci par avance
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Suivi avec incrémentation

Bonjour à tous,

Un autre essai qui permet l'annulation de plusieurs saisies le jour même. Quand on change de jour, l'historiques des saisies (mais pas le total de chaque ligne) est remis à zéro. On utilise pour le stockage les commentaires en colonnes B.

Pour annuler une saisie, double-cliquer sur la cellule dont on veut annuler la dernière saisie.
 

Pièces jointes

  • Suivi avec incrementation v1.xlsm
    25.7 KB · Affichages: 56

melba

XLDnaute Occasionnel
Re : Suivi avec incrémentation

Bonjour,

Où puis-je trouver l'aide VBA sur Undo?

Je vais par ailleurs regarder le suivi de Mapomme et vous tiens au courant.

Le but de toutes mes questions c'est la réalisation d'un suivi qui me permette de gérer quotidiennement les cadeaux que je remets.

J'en suis au stade de l'analyse de mes besoins.

Je crois que ce qu'il me faudrait ce serait :

- une 1ère feuille pour la distribution journalière. Cette 1ère page serait conçue à l'identique d'une 2ème page qui servirait par la suite pour l'archivage et qui comporterait le cumul de ma distribution du jour et de celle déjà enregistrée précédemment.

Ma 1ère page serait conçue comme la 2ème car elle afficherait ainsi les cumuls et me permettrait de savoir comment faire ma distribution du jour pour que cela soit équilibré.

Je joins un fichier ce sera peut-être plus clair.


Je crois que ce que vous m'avez proposé pour annuler ma saisie du jour par clic droit ou double clic pourrait s'appliquer.

L'ennui quand je n'ai qu'une feuille comme c'est le cas aujourd'hui c'est que je reporte tous les jours dans les colonnes "remis" : ce que je remets le jour même plus ce qu'il y avait avant.

Je fais le total manuellement et risque de me tromper ( j'ai une vingtaine de participants et une distraction est vite arrivée).
Je peux perdre le total réel qu'il y avait avant si je ne m'en rends pas compte tout de suite et ne fais pas "annuler" avec la flêche "retour arrière".

c'est pour cela que je crois que d'avoir une feuille pour ma saisie du jour et une autre pour l'archivage , avec possibilité de revenir en arrière sur ma saisie du jour sans annuler les totaux qui avaient été enregistrés auparavant me serait très utile.

Merci pour votre aide
 

Pièces jointes

  • Répartition cadeaux.xlsm
    26 KB · Affichages: 38
Dernière édition:

job75

XLDnaute Barbatruc
Re : Suivi avec incrémentation

Bonjour melba, le fil,

Plus grand'chose à voir avec le fichier du post #1.

Et vous vous cassez la tête avec l'archivage pour pas grand'chose.

Si vous êtes sûr de vos données, enregistrez le fichier.

Si vous craignez avoir fait une erreur, fermez le fichier sans l'enregistrer et rouvrez-le.

Par sécurité vous pouvez mettre cette macro dans ThisWorkbook :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
If MsgBox("Etes-vous sûr de vos données ?", 4, "Enregistrer") = 7 Then Cancel = True
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Suivi avec incrémentation

Re,

Voyez le fichier joint et cette macro affectée aux boutons Enregistrer ou annuler :

Code:
Sub EnregistrerAnnuler()
Application.DisplayAlerts = False
With ThisWorkbook
  .Save
  If Not .Saved Then Workbooks.Open .Path & "\" & .Name
End With
End Sub
Comme déjà vu, dans ThisWorkbook :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
If Not Me.Saved Then _
If MsgBox("Etes-vous sûr de vos données ?", 4, "Enregistrer") = 7 Then Cancel = True
End Sub
A+
 

Pièces jointes

  • Répartition cadeaux(1).xls
    49 KB · Affichages: 51

melba

XLDnaute Occasionnel
Re : Suivi avec incrémentation

Bonsoir,

Merci à tous pour vos interventions.

Je sais, je me complique un peu la vie, jusqu'à présent je travaillais avec le dernier fichier que j'ai joint mais j'avais aussi remarqué les risques que j'ai évoqués dans mon précédent post et cette année je souhaitais l'améliorer un peu.

Cette histoire de double feuille me permettrait de voir ma saisie réelle du jour sur la 1ère page et l'impact immédiatement et la 2ème page fige les données.

J'ai l'impression que la solution de mapomme, me permettrait de voir ma saisie réelle du jour puisque lorsque je retourne sur la 1ère page le lendemain mes colonnes D, G , J dans mon fichier seraient vierges.

Par ailleurs la solution de Job75 me plaît beaucoup à travers la boîte de dialogue et l'annulation possible pour revenir à l'état initial en cas de saisie erronée.

Si je pouvais garder ma feuille "archive", j'aurais tous les avantages que je souhaite :

-avoir une vue du nombre de cadeaux remis réellement chaque jour, la possibilité de revenir en arrière tant que je n'ai pas validé et archivé à travers la boîte de dialogue.

- l'archivage

Merci pour un autre coup de pouce, si cela n'est vraiment pas possible, j'essaierai avec des formules peut-être.

@+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Suivi avec incrémentation

Re,

Si vous tenez absolument à la feuille archivage, utilisez cette macro :

Code:
Sub Archiver_Annuler()
If MsgBox("Etes-vous sûr de vos données ?", 4, "Archiver ou annuler") = 6 Then
  Feuil1.Cells.Copy Feuil2.[A1]
Else
  Feuil2.Cells.Copy Feuil1.[A1]
End If
Feuil1.[A1].Copy Feuil1.[A1] 'vide le presse-papier (pour Excel 2007/2010)
End Sub
Important :

- ne pas utiliser de noms définis (je les ai supprimés)

- affecter aux boutons la propriété Ne pas déplacer ou dimensionner avec les cellules.

Fichier (2).

Edit : que voulez-vous faire avec les boutons "clôturer" :confused:

A+
 

Pièces jointes

  • Répartition cadeaux(2).xls
    78.5 KB · Affichages: 34
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Suivi avec incrémentation

salut

voir Si... cela peut suffire (MsgBox pour retenir la saisie dans une colonne annexe et double-click pour correction éventuelle).
 

Pièces jointes

  • CorrectionEventuelleSaisie.xls
    53.5 KB · Affichages: 49

melba

XLDnaute Occasionnel
Re : Suivi avec incrémentation

Bonjour,

Je dois aller travailler mais ne manquerai pas de regarder vos posts ce soir.

Le bouton clôturer c'était pour clôturer le mois.
Puisque en principe sur la même page j'aurai tous les mois de l'année, c'était pour ne pas risquer de reporter une saisie sur le mauvais mois;

Au sujet du dernier post ( que je regarderai ce soir) j'avais pensé si je n'avais pas d'autres solutions, ajouter une colonne dans laquelle je mettrais ma saisie du jour.

Les autres colonnes seraient identiques à celles déjà existantes et j'aurais mis une formule, dans ce cas je n'aurais pas fait la feuille archivage.
Cela avait pour inconvénient d'avoir un tableau un peu large et pas une vue entière d'emblée.

Mais je regarderais vos propositions ce soir.

En tout cas encore un très grand merci à vous

@+
 

melba

XLDnaute Occasionnel
Re : Suivi avec incrémentation

Bonsoir,

J'ai enfin eu un moment pour regarder ce que vous m'avez proposé ( encore une fois merci).

Comme vous me l'avez conseillé j'ai renoncé à ma feuille "archivage" et ai donc crée une colonne supplémentaire "remis ce jour" en D, H et L,

En E,I et M j'aurai le total cumulé de la saisie du jour et des saisies précédentes.

1) Pour ce qui est de l'annulation de la saisie journalière en cas d'erreur, je trouve
la formule de Mapomme du 05/01/13 15h18 très intéressante,


2) Pour ce qui est de la l'enregistrement de ma saisie journalière,
le bouton macro de Job75 me demandant "si je suis sûre de ma saisie"
me convient tout à fait,

3) J'ai ajouté un bouton "débuter nouvelle saisie" qui doit mettre E,I et M 0 zéro ,
Bien sûr le cumul ne doit pas changer à l'activation,

J'ai essayé de copier les codes proposés dans mon fichier mais j'ai un bug, j'ai même dû effacer un bout du code car sinon je ne pouvais pas fermer le fichier.
Pourriez-vous me dire ce qui ne va pas?
Serait-il possible par ailleurs de me "traduire" ces codes?
Je n'ai aucune connaissance en programmation,

Je dois effectivement me débrouiller ensuite pour que ces codes fonctionnent pour
mes tableaux des autres mois

A bientôt
 

Pièces jointes

  • Répartition cadeaux2.xlsm
    28.7 KB · Affichages: 39
  • Répartition cadeaux2.xlsm
    28.7 KB · Affichages: 39
  • Répartition cadeaux2.xlsm
    28.7 KB · Affichages: 44

melba

XLDnaute Occasionnel
Re : Suivi avec incrémentation

Bonjour,

J'aurais vraiment besoin de votre aide.

Sans réponse de votre part, j'ai revu mon fichier toujours en copiant les codes de Mapomme et Job75.

Le résultat me satisfait mais j'aurais besoin d'un coup de pouce encore car je ne connais pas la syntaxe des codes.


1) Je souhaiterais ajouter dans le code suivant de Mapomme qui permet l'annulation de la saisie par clic droit , que

les cellules h7:h17 sont concernées également et que l'annulation a une incidence sur colonne I

les cellules L7:L17 sont concernées également et que l'annulation a une incidence sur colonne M.

Dans mon fichier réel j'aurai d'autres plages mais la configuration sera la même.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("d7:d17")) Is Nothing Or Target.Count > 1 Then Exit Sub
Cancel = True
Range("E" & Target.Row) = Range("E" & Target.Row) - Target
Target = ""
End Sub

2) je souhaiterais ajouter dans le code de Job75 qui permet l'incrémentation entre ma saisie du jour et ce qui avait été enregistré précédemment que :

les cellules h7:h17 sont concernées également et que l'annulation a une incidence sur colonne I

les cellules L7:L17 sont concernées également et que l'annulation a une incidence sur colonne M.

En fait il s'agit des mêmes cellules et colonnes que pour le code précédent.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("d7:d17")) Is Nothing Or Target.Count > 1 Then Exit Sub
Range("E" & Target.Row) = Range("E" & Target.Row) + Target
End Sub

Y-a-t-il quelqu'un pour m'aider?

@+
 

Pièces jointes

  • Répartition cadeaux2.xlsm
    27.2 KB · Affichages: 34
  • Répartition cadeaux2.xlsm
    27.2 KB · Affichages: 34
  • Répartition cadeaux2.xlsm
    27.2 KB · Affichages: 36
Dernière édition:

Discussions similaires

Réponses
7
Affichages
314

Statistiques des forums

Discussions
312 348
Messages
2 087 510
Membres
103 570
dernier inscrit
patrickb83p