chronologie discordante

infam29

XLDnaute Nouveau
Bonjour à tous
Mon problème: je gère la comptabilité d'une petite association caritative.
Des pièces comptables papier sont archivées sous classeur physique.
Jusqu'à présent je portais manuellement le N° d'ordre créé automatiquement dans le fichier Excel (ci-joint) afin de retrouver aisément ces documents.
Mais ce N° Excel n'est pas immuable en cas de tri chronologique des opérations (elles ne peuvent pas toujours être saisies chronologiquement).
Comment créer dans le fichier un N° immuable qui correspondra toujours à l'écriture manuelle sur la pièce comptable.
Merci à tous ceux qui prendront le temps de m'aider
 

Pièces jointes

  • compta.zip
    22.4 KB · Affichages: 47
  • compta.zip
    22.4 KB · Affichages: 40
  • compta.zip
    22.4 KB · Affichages: 41

infam29

XLDnaute Nouveau
Re : chronologie discordante

Solution de ROGER2327 mise en pratique et légèrement modifiée pour
- effacer le N° automatique après annulation d'une date
- décrémenter la variable MInd

If x = "" And liPos = nliServi Then 'variables préalablement initialisées
Range("B" & liPos + 1).ClearContents
MInd = MInd - 1
ThisWorkbook.Names.Add Name:="MaxIndex", RefersTo:=MInd
Application.Calculation = -4105
Exit Sub
End If


ROGER2327 aurait sans doute fait mieux mais cela fonctionne comme je le souhaitais.
Encore merci à ce dernier pour sa patience et sa compétence
Problème résolu
 
Dernière édition:

infam29

XLDnaute Nouveau
Re : chronologie discordante

(mon message s'étant égaré sur le site, je le répète)

Solution de ROGER2327 mise en pratique et légèrement modifiée pour
- effacer le N° automatique après annulation d'une date
- décrémenter la variable MInd
Rajout après "on error goto 0" des lignes suivantes

If x = "" And liPos = nliServi Then 'variables préalablement initianilées
Range("B" & liPos + 1).ClearContents
MInd = MInd - 1
ThisWorkbook.Names.Add Name:="MaxIndex", RefersTo:=MInd
Application.Calculation = -4105
Exit Sub
End If


ROGER aurait sans doute fait mieux mais ça fonctionne très bien
Donc PROBLÈME RÉSOLU avec mes remerciements illimités à ROGER2327 et aux autres
 

ROGER2327

XLDnaute Barbatruc
Re : chronologie discordante

Re…
Pourquoi pas ceci ?
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ltr$, ind%, col, MInd, oCel As Range, x As Object
  col = "C" 'Colonne des identifiants (1 ou "A", 2 ou "B", …, 28 ou "AB", …)
  With [B8] 'Première cellule de saisie
    col = colNum(col) - .Column
    Set x = Intersect(.Resize(Rows.Count - .Row, 1), Target)
    If Not x Is Nothing Then
      Application.Calculation = -4135
      On Error GoTo DefRef
      MInd = Evaluate(ThisWorkbook.Names("MaxIndex").Value)
      On Error GoTo 0
      For Each oCel In x.Cells
        If IsEmpty(oCel) And oCel.Offset(0, col).Value = MInd Then
          MInd = MInd - 1
          Application.EnableEvents = 0
          oCel.Offset(0, col).Value = ""
          Application.EnableEvents = 1
        ElseIf oCel.Offset(0, col).Value = "" Then
          MInd = MInd + 1
          Application.EnableEvents = 0
          oCel.Offset(0, col).Value = MInd
          Application.EnableEvents = 1
        End If
      Next oCel
      ThisWorkbook.Names.Add Name:="MaxIndex", RefersTo:=MInd
      Application.Calculation = -4105
    End If
  End With
Exit Sub
' Initialisation
DefRef:
  rst
  Resume
End Sub
(Le reste du code restant inchangé)​
ROGER2327
#4749


Dimanche 15 Sable 138 (Khurmookum du Dr Faustroll, SS)
25 Frimaire An CCXIX
2010-W50-3T13:10:12Z
 

Pièces jointes

  • Copie de compta-2.xls
    33.5 KB · Affichages: 52
Dernière édition:

infam29

XLDnaute Nouveau
Re : chronologie discordante

Bonjour Roger2327
En relisant mes anciens posts pour y retrouver une solution, j'ai aperçu que vous n'étiez pas content d'une absence de réponse de ma part.
Je m'en explique: ayant mis le problème comme résolu suite à votre excellent travail, je ne suis plus retourné sur le site et n'ai donc pas vu que vous aviez rajouté un élément. Comme je ne suis pas alerté par "automatisme" des réponses qui me sont faites et comme je n'accède pas au site régulièrement, votre dernière réponse est tombée dans l'oubli.
Je vous prie de m'en excuser. Il n'y avait de ma part aucun dédain ni mépris et j'ai fortement apprécié votre contribution à la résolution de la question que j'avais posée.
Encore merci (même si 3 ans se sont malheureusement écoulés) et soyez aimable de m'accorder votre absolution. Je m'engage à dire 3 "pater" et 3 "ave" :)
 

Statistiques des forums

Discussions
312 215
Messages
2 086 328
Membres
103 180
dernier inscrit
Vcr