Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Excel 2016 : Numéro FD à incrémenter

kdet

XLDnaute Occasionnel
Bonjour le Forum, à tous et à toutes,

De retour parmi vous pour trouver de l'aide.
 

kdet

XLDnaute Occasionnel
J'ai oublié de joindre le fichier. j'ai tout expliquer dans le fichier.

Merci de votre aide.

kdet
 

Pièces jointes

  • Numéro FD à incrémenter.xlsm
    18.6 KB · Affichages: 13

Dranreb

XLDnaute Barbatruc
Est-ce bien ce que vous voulez faire ?
j'aurais mieux compris que votre expression Worksheet soit partout Sh plutôt que Sheets("FNR")
Cela dit je ne sais pas pourquoi ça plante, d'autant plus que vous ne m'indiquez pas le message d'erreur.
Peut être n'y a-t-il du texte dans cette cellule D2 ?
 

Dranreb

XLDnaute Barbatruc
Oui ça se confirme. On ne peut pas ajouter 1 à une cellule qui contient du texte, du logique ou une erreur.
Il faut qu'elle contienne un nombre, ou à la rigueur qu'elle soit vide.
 

Dranreb

XLDnaute Barbatruc
Essayez comme ça :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
   Dim Wsh As Worksheet, Série As String, AnMois As String, TSpl() As String
   If Not TypeOf Sh Is Worksheet Then Exit Sub
   Set Wsh = Sh
   Série = Wsh.[D2].Value
   If MsgBox("Voulez-vous incrémentrer ce numéro """ & Série & """ ?", _
      vbQuestion + vbYesNo, "Feuille " & Wsh.Name) = vbNo Then Exit Sub
   AnMois = Format(Date, "yyyymm")
   TSpl = Split(Série, "/")
   If TSpl(0) < AnMois Then
      TSpl(0) = AnMois
      TSpl(1) = Wsh.Name & "001"
   Else
      TSpl(1) = Wsh.Name & Format(Right(TSpl(1), 3) + 1, "000")
      End If
   Wsh.[D2].Value = Join(TSpl, "/")
   End Sub
 

kdet

XLDnaute Occasionnel
Danreb,

Tu m'as sauvé pour une partie de mon problème. Vu qu'on est encore en 2019, est-ce l'année s'incrément +1 pour avoir 2020 pour l'année suivante?
Denière question, une fois le FD terminé et imprimé suivant la sélection est-ce qu'on peut ajouter un code pour l'enregistrement sous format .pdf pour archives?

Merci d'avance,

kdet
 

job75

XLDnaute Barbatruc
Bonjour kdet, Bernard,

Avec ce code dans ThisWorkbook l'incrémentation a lieu chaque fois qu'on imprime une feuille :
VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim c As Range, chemin$
Cancel = True 'pour tester sans imprimer, à supprimer pour imprimer
Set c = [D2]
If c Like "######/" & ActiveSheet.Name & "###" And Val(Left(c, 4)) = Year(Date) And Mid(c, 5, 2) = Format(Month(Date), "00") Then
    c = Left(c, Len(c) - 3) & Format(Val(Right(c, 3)) + 1, "000")
Else
    c = Year(Date) & Format(Month(Date), "00/") & ActiveSheet.Name & "001"
End If
chemin = ThisWorkbook.Path & "\" 'à adapter
Application.EnableEvents = False 'désactive les évènements
ActiveSheet.ExportAsFixedFormat xlTypePDF, chemin & Replace(c, "/", " ") 'le slash / est un caratère interdit
Application.EnableEvents = True 'réactive les évènements
End Sub
A+
 

Pièces jointes

  • Numéro FD à incrémenter(1).xlsm
    25.4 KB · Affichages: 7

kdet

XLDnaute Occasionnel
Bonjour le Forum, Job75, Bernard,

Merci pour ton aide précieux. Deux questions : 1- est-ce que l'enregistrement au format .pdf est automatique si une fois la selection est imprimé? 2- le code "chemin = ThisWorkbook.Path & "\" " (à adapter) est-ce que je dois renseigner dans "\" le chemin où je dois archiver le .pdf?

Cordialement,

kdet
 

kdet

XLDnaute Occasionnel
Bonjour le forum, Job75,

J'ai utilisé et suivi les instructions de ton code. sauf ou incompréhension de ma part, j'ai juste modifié le code (chemin) comme suit :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim c As Range, chemin$
Set c = [D2]
If c Like "######/" & ActiveSheet.Name & "###" And Val(Left(c, 4)) = Year(Date) And Mid(c, 5, 2) = Format(Month(Date), "00") Then
c = Left(c, Len(c) - 3) & Format(Val(Right(c, 3)) + 1, "000")
Else
c = Year(Date) & Format(Month(Date), "00/") & ActiveSheet.Name & "001"
End If
chemin = ThisWorkbook.Path & "I:\Google Drive\KANDRA\2019\FD PDF\" 'à adapter
Application.EnableEvents = False 'désactive les évènements
ActiveSheet.ExportAsFixedFormat xlTypePDF, chemin & Replace(c, "/", " ") 'le slash / est un caratère interdit
Application.EnableEvents = True 'réactive les évènements
End Sub

Le fichier est imprimé mais pour la sauvegarde au format pdf dans le dossier "I:\Google Drive\KANDRA\2019\FD PDF\" là rien ne se passe. je ne sais pas où est ce que ça bloque.

Cordialement,

kdet
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…