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

ROGER2327

XLDnaute Barbatruc
Re : chronologie discordante

Bonjour infam29
Voyez si la proposition jointe répond à votre problème.​
ROGER2327
#4736


Samedi 14 Sable 138 (Don Quichotte, champion du monde, SQ)
24 Frimaire An CCXIX
2010-W50-2T11:53:29Z
 

Pièces jointes

  • Copie de compta.xls
    30.5 KB · Affichages: 70
  • Copie de compta.xls
    30.5 KB · Affichages: 70
  • Copie de compta.xls
    30.5 KB · Affichages: 67

infam29

XLDnaute Nouveau
Re : chronologie discordante

Merci Roger2327 mais il ne me semble pas que votre solution réponde totalement à la question.
Sauf incompréhension de ma part, votre solution oblige d'abord à entrer manuellement un N° dans la colonne C.
Ce N° est effectivement préservé en cas de tri chronologique mais est-il possible d'attribuer un N° automatiquement sans intervention manuelle dès la saisie de la date par exemple.
J'ai regardé le ThisWorkBook et n'ai pas compris grand-chose au code mais cela est accessoire.
Désolé d'insister et merci encore
 

CISCO

XLDnaute Barbatruc
Re : chronologie discordante

Bonjour

Pour obtenir des numéros automatiquement, lors de l'écriture d'une date dans la colonne B, une possibilité, en C8 :
Code:
=SI(B8<>"";C7+1;"")
, au besoin en changeant le 1 en fonction du besoin.
Formule à tirer vers le bas

@ plus
 

infam29

XLDnaute Nouveau
Re : chronologie discordante

Merci JBOBO mais hélas les essais que je viens de faire ne sont pas concluants: tous les N° fluctuent dès la saisie de la date. Donc les N° ne sont pas immuables.
Je me demande s'il ne serait pas possible d'extraire d'une liste pré-existante (plage ?) un N° qui serait reporté en colonne C puis bloqué dans la plage afin de ne pas être utilisé une seconde fois ?
 

ROGER2327

XLDnaute Barbatruc
Re : chronologie discordante

Re...
Merci Roger2327 mais il ne me semble pas que votre solution réponde totalement à la question.
Sauf incompréhension de ma part, votre solution oblige d'abord à entrer manuellement un N° dans la colonne C.
Ce N° est effectivement préservé en cas de tri chronologique mais est-il possible d'attribuer un N° automatiquement sans intervention manuelle dès la saisie de la date par exemple.
J'ai regardé le ThisWorkBook et n'ai pas compris grand-chose au code mais cela est accessoire.
Désolé d'insister et merci encore
Dans le module de la feuille journal 2010 se trouve la procédure Private Sub Worksheet_Change. Vous y trouverez la ligne
With [A8] 'Première cellule de saisie
Modifiez-la comme suit :
With [B8] 'Première cellule de saisie
Vous devriez obtenir le résultat escompté (si j'ai bien compris la demande).

Dans mon précédent message, j'ai oublié de dire comment réinitialiser le compteur : cela se fait soit en supprimant la formule nommée MaxIndex, soit en exécutant la procédure rst.​
ROGER2327
#4737


Samedi 14 Sable 138 (Don Quichotte, champion du monde, SQ)
24 Frimaire An CCXIX
2010-W50-2T14:02:08Z
 
Dernière édition:

infam29

XLDnaute Nouveau
Re : chronologie discordante

Ah, mon bon ROGER2327, on approche de LA solution !
En effet après modification comme vous m'indiquez, les N° sont automatiques et immuables (sauf si l'on supprime une ligne, le N° est perdu).
En revanche je ne parviens pas à appliquer votre conseil "réinitialiser le compteur : en supprimant la formule nommée MaxIndex, ou en exécutant la procédure rst".
En recherchant dans le VB, je ne trouve que
Name:="MaxIndex"
ou .Names("MaxIndex")
Cela ne ressemble pas à une formule que je pourrais supprimer.

Quant à exécuter "RST", soit mais comment ? J'ai essayé "exécuter macro feuil17.rst" mais sans effet visible.
Merci de vos excellents conseils
 

ROGER2327

XLDnaute Barbatruc
Re : chronologie discordante

Re…
Prenons dans l'ordre.
Ah, mon bon ROGER2327, on approche de LA solution !
En effet après modification comme vous m'indiquez, les N° sont automatiques et immuables (…)
Ca, c'est bien.

(…) (sauf si l'on supprime une ligne, le N° est perdu). (…)
Oui, mais ce n'est pas bien dangereux : il ne sera pas réutilisé par la suite.

(…) En revanche je ne parviens pas à appliquer votre conseil "réinitialiser le compteur : en supprimant la formule nommée MaxIndex, ou en exécutant la procédure rst". (…)
Ce n'est pas un conseil, mais une information. En usage normal, on ne devrait pas réinitialiser le compteur, car on aurait des doublons par la suite. Ce n'est utile que si on a utilisé une feuille pour faire des essais. Après les essais, il peut être judicieux de remettre le compteur à zéro.

(…) En recherchant dans le VB, je ne trouve que
Name:="MaxIndex"
ou .Names("MaxIndex")
Cela ne ressemble pas à une formule que je pourrais supprimer. (…)
Effectivement… C'est pourquoi j'ai parlé de formule nommée et pas simplement de formule.
Il s'agit d'une formule cachée à laquelle on accède par le menu Insertion/Nom/Définir… d'Excel. Ouvrez ce menu et sélectionnez MaxIndex : vous verrez alors l'état actuel du compteur.

(…) Quant à exécuter "RST", soit mais comment ? J'ai essayé "exécuter macro feuil17.rst" mais sans effet visible. (…)
Et vous fîtes bien ! Le résultat de l'opération n'est pas visible, mais réel. Si vous avez saisi des données et que vous allez voir l'état de la formule nommée MaxIndex, vous verrez l'état du compteur : il indique le nombre de saisies effectuées.
Si ensuite vous exécutez la procédure rst et que vous retournez voir dans le menu Insertion/Nom/Définir… avant d'effectuer toute nouvelle saisie, vous constaterez que la formule nommée a disparu. Elle sera recréée et initialisée à zéro dès la validation de la saisie suivante.

J'espère avoir répondu à vos inquiétudes. N'hésitez pas à demander des précisions en cas de besoin.​
Bon courage,

ROGER2327
#4742


Samedi 14 Sable 138 (Don Quichotte, champion du monde, SQ)
24 Frimaire An CCXIX
2010-W50-2T16:12:38Z
 

infam29

XLDnaute Nouveau
Re : chronologie discordante

Merci ROGER2327, cela répond entièrement à mes attentes: explications limpides qui vont me permettre non seulement "d'ergonomiser" mon fichier mais également de progresser en VB
Un tout petit souci cependant:
si l'on saisit une date puis qu'on la supprime immédiatement parce qu'elle est erronée, le compteur s'est incrémenté et passe au N° suivant lors d'une nouvelle saisie. Une petite solution peut-être ? Si j'ose abuser ...
 

ROGER2327

XLDnaute Barbatruc
Re : chronologie discordante

Re…
Remplacez la procédure
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
' (…)
End Sub
par celle-ci :
Code:
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 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
(Quelques lignes ont été supprimées, c'est toujours ça de pris…)​
ROGER2327
#4743


Samedi 14 Sable 138 (Don Quichotte, champion du monde, SQ)
24 Frimaire An CCXIX
2010-W50-2T16:46:55Z
 
Dernière édition:

infam29

XLDnaute Nouveau
Re : chronologie discordante

Merci beaucoup à ROGER2327 (et aux autres): mon problème est résolu grâce à son ingéniosité (il va me rétorquer "compétence" !!) à un léger détail près mais que je saurai gérer (effacement du N° dans la cellule après suppression d'une date).
Infiniment merci
 

ROGER2327

XLDnaute Barbatruc
Re : chronologie discordante

Re...
Merci beaucoup à ROGER2327 (et aux autres): mon problème est résolu grâce à son ingéniosité (il va me rétorquer "compétence" !!) à un léger détail près mais que je saurai gérer (effacement du N° dans la cellule après suppression d'une date).
Infiniment merci
Pas d'accord, ou je n'ai rien compris…​
ROGER2327
#4744


Samedi 14 Sable 138 (Don Quichotte, champion du monde, SQ)
24 Frimaire An CCXIX
2010-W50-2T17:51:56Z
 

Pièces jointes

  • Copie de compta.xls
    30.5 KB · Affichages: 55
  • Copie de compta.xls
    30.5 KB · Affichages: 53
  • Copie de compta.xls
    30.5 KB · Affichages: 47

infam29

XLDnaute Nouveau
Re : chronologie discordante

Bonjour en cette matinée de fraîcheur relative (6° bord de mer),
Si, si ROGER2327, vous avez tout compris et votre fichier fonctionne bien sauf que le N° automatique en colonne C ne s'efface pas si l'on vient à supprimer une date (avant tout autre saisie). Ce N° est cependant réutilisé à la nouvelle saisie-date:
procédure d'illustration
1) frappe en B14 de "14/05/10"
2) le N° automatique s'affiche en C14
3) suppression de "14/05/10"
4) le N° en C14 n'est pas effacé
 

Statistiques des forums

Discussions
312 194
Messages
2 086 069
Membres
103 110
dernier inscrit
Privé