Numérotation automatique pr archivage

JPsaga

XLDnaute Nouveau
Bonjour tt le monde,

Je consolide dans un fichier excel des dossiers que je gère quotidienement.
Dans une des colonnes de mon fichier excel j'y introduit la date d'archivage et je souhaiterais que le système me donne automatiquement un numéro d'archive (Ex : A200901...A200902 jusqu'à l'infini) dès que cette date d'archivage est remplie dans la colonne.

La structure du numéro d'archive commencerait tjs par A suivi de l'année 2009 et du numéro d'archive 01...

Pourriez-vous m'aider à trouver une formule?

Merci d'avance pour votre aide.

Bien à vous,
JP
 
Dernière édition:

hoerwind

XLDnaute Barbatruc
Re : Numérotation automatique pr archivage

Bonjour,

A1 : A200901
A2 : =GAUCHE(A1;5)&TEXTE(DROITE(A1;2)+1;"00")
formule à copier vers le bas, qui n'incrémente pas jusqu'à l'infini, mais jusque A200999.
Au-delà il faudra démarrer avec 3 caractères ou plus à la droite de la chaine de caractères.
 

JPsaga

XLDnaute Nouveau
Re : Numérotation automatique pr archivage

Bonjour,

Mais je voudrais que mon numéro d'archive se créée sur base de la date d'archivage. Vous trouverez un exemple dans le fichier excel ci-joint.

Merci pour votre aide.

Bien à vous,
JP
 

Pièces jointes

  • exemple.xls
    14 KB · Affichages: 59
  • exemple.xls
    14 KB · Affichages: 60
  • exemple.xls
    14 KB · Affichages: 83

hoerwind

XLDnaute Barbatruc
Re : Numérotation automatique pr archivage

Re,

Essaie ceci en F2 :
Code:
=SI(E2="";"";"A"&ANNEE(E2)&TEXTE(RANG(E2;E:E;1);"00"))
formule à étirer vers le bas.

Cette formule n'est valable que si la date d'un nouvel archivage n'est pas antérieure à une autre date d'archivage déjà saisie.
Si cela pourrait se produire, il faudra revoir la formule.
 

ROGER2327

XLDnaute Barbatruc
Re : Numérotation automatique pr archivage

Bonjour à tous
Un essai par procédures évènementielles.
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim ocel As Range, i As Long, nDat As Long, y As String
Dim numArcCol As Long, datArcCol As Long
   numArcCol = 6 [B][COLOR="SeaGreen"]'Numéro de la colonne "Numéro d'archive"[/COLOR][/B]
   datArcCol = 5[B][COLOR="SeaGreen"] 'Numéro de la colonne "Date d'archivage"[/COLOR][/B]
   If Not Intersect(Target, Columns(datArcCol)) Is Nothing Then
      For Each ocel In Intersect(Target, Columns(datArcCol))
         If IsEmpty(ocel) Or IsDate(ocel) Then
         On Error GoTo E
         Application.EnableEvents = False
         Cells(ocel.Row, numArcCol) = Empty
         If Not IsEmpty(ocel) Then
            nDat = 0
            y = "A" & Year(ocel.Value)
            For i = 2 To Cells(Rows.Count, numArcCol).End(xlUp).Row
               If Cells(i, numArcCol) Like y & "*" Then nDat = WorksheetFunction.Max(nDat, CLng(Right$(Cells(i, numArcCol), 2)))
            Next i
            Cells(ocel.Row, numArcCol).Value = y & Format(nDat + 1, "00")
         End If
R:       On Error GoTo 0
         Application.EnableEvents = True
         End If
      Next ocel
   End If
Exit Sub
E: Resume R
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ocel As Range
Dim numArcCol As Long, datArcCol As Long
   numArcCol = 6 'Numéro de la colonne "Numéro d'archive"
   datArcCol = 5 'Numéro de la colonne "Date d'archivage"
   If Not Intersect(Target, Columns(datArcCol)) Is Nothing Then
      For Each ocel In Intersect(Target, Columns(datArcCol))
         If Not IsEmpty(Cells(ocel.Row, numArcCol)) And Not IsEmpty(ocel) Then
            If MsgBox("Modifier la valeur ?", vbYesNo) = vbYes Then ocel.Value = ocel.Value
         End If
      Next ocel
   End If
End Sub[/B][/COLOR]
La deuxième procédure est là pour prévenir des modifications intempestives. Elle est facultative.​
ROGER2327
#2767
 

Pièces jointes

  • Saisie_2767.xls
    18 KB · Affichages: 67

Membres actuellement en ligne

Statistiques des forums

Discussions
312 836
Messages
2 092 652
Membres
105 479
dernier inscrit
chaussadas.renaud