incrémentation automatique d'un nom de fichier variable

AUDREY8013

XLDnaute Nouveau
salut à tous

je suis novice en vba au point que ma principale activité consiste à copier coller et adapter des codes "piqués" sur les forums

et là je bloque, je ne sais même pas si c'est réalisable, à vous les experts (comme je vous envie!) de me le dire

voici:

j'ai un document qui sera une fiche déclarative de non conformités en gestion de la qualité, mise en partage ou en ligne sur un serveur,
je voudrais qu'il soit remplissable par tous et que chaque fois qu'une fiche est sauvée (avec un bouton et pas avec "fichier/enregistrer sous"), pas uniquement chaque fois que quelqu'un l'ouvre, le nom du document sauvé s'incrémente automatiquement. Mais il ne faut pas que le fichier d'origine vierge soit modifié, pour cela, je pensais faire en sorte que chaque sauvegarde se fasse automatiquement dans un dossier différent que celui qui contient le fichier d'origine mais utiliser un fichier modèle ou une copie automatique m'irait très bien aussi

Mais il y a une contrainte :
en B13 il s'agit du processus concerné par l'anomalie, le domaine si vous préfèrez et en C13 le sous-processus, il y a 14 domaines différents à choisir dans la cellule B13 et pour chacun plusieurs sous domaines à choisir en C13
mon souci supplémentaire est que je voudrais que le nom de fichier comporte les 5 premiers caractères de la cellule C13. cette cellule est une liste de choix donc ces 5 caractères pourront varier et je voudrais que les fichiers enregistrés s'incrémente de façon suivie selon le nom

je m'explique:
- une première fiche est crée et porte sur le sous-domaine (donnée en C13) PO1-3, elle portera donc le nom: PO1-3-Ecart-1 par ex
- une deuxième personne creé une fiche qui porte sur le sous-domaine PO2-1, elle doit porter le nom PO2-1-Ecart-1 car c'est la première fiche de ce sous-domaine
- une troisème personne crée une fiche portant sur le domaine PO1-3, il s'agit de la seconde fiche crée pour ce sous-domaine, elle doit porter le nom PO1-3-Ecart-2

une deuxième feuille me servira de base de données où toutes les informations seront retranscrites et accumulées à chaque nouvelle fiche remplie, peut être ce sera utile pour ma demande mais je ne sais pas encore comment faire pour la retranscrition automatique, à voir


j'avais bricolé un code pour la sauvegarde mais il ne répond pas à ma contrainte (voir code ci-dessous)
de plus j'ai trouvé un code qui me semble prometteur je l'ai récupéré sur un forum et modifié avec mes coordonnées de cellules il est censé créer une copie de ma feuille modèle "remplie" dans une autre feuille puis d'effacer les données de la première feuille qui sert alors de modèle et ensuite de renommer la feuille "copie" avec une incrémentation dépendante des info en G10 mais comme je m'y attendais il ne fonctionne pas,
et je suis trop inculte en vba pour comprendre pourquoi, il serait bien de le compiler avec le code que j'avais déja fait pour la création du fichier de sauvegarde mais ca je sais pas faire non plus

j'espère avoir été assez claire dans ce post interminable (désolée!!) pour vous orienter dans la voie de la solution salvatrice vous qui parlez couramment ce langage magique pour moi du vba pourriez vous m'aider?

et merci très très très et encore très sincèrement



code d'origine pour créer un fichier sauvegarder

Sub SAUVEGARDER()
Dim extension As String
Dim chemin As String, nomfichier As String
Dim style As Integer
Application.ScreenUpdating = False
ThisWorkbook.ActiveSheet.Copy
extension = ".xls"
chemin = "C:\Users\p083521\Desktop\Nouveau dossier\"
nomfichier = Format(Range("C10"), "yyyy-mmmm-dd") & "-" & ActiveSheet.Range("G10") & "ECART-" & "n°" & Range("H10") & extension
With ActiveWorkbook
.ActiveSheet.DrawingObjects(1).Delete
.SaveAs Filename:=chemin & nomfichier
MsgBox "le fichier a été enregistré sous le nom : " & nomfichier & " dans le dossier: " & chemin
.Close
End With

End Sub

CODE PROMETTEUR:

Sub SAUVEGARDER()
Sheets("FICHE D'ANOMALIE").Copy Before:=Sheets(3)
ActiveSheet.Name = Replace(Range("C10").Value, "/", "-") ' le nom de l'onglet n'accepte pas /
Sheets("FICHE D'ANOMALIE").Select
Range("10:10").ClearContents
Range("13:13").ClearContents
Range("16:16").ClearContents
If Val(Mid(Range("H8").Value, 7, 2)) = Mid(Object) Then
Range("H8").Value = Left(Range("H8").Value, 5) _
& Format(Val(Right(Range("G10").Value, 3)) + 1, "000") 'même nom facture +1
Else
Range("G10").Value = Left(Range("G10").Value, 6) _
& Format(Mid(Object), "00") & Format(Val(Right(Range("G10").Value, 3)) + 1, "000") ' nom différent facture + 1
End If
End Sub
 

Pièces jointes

  • FICHE NC.xlsm
    58.2 KB · Affichages: 62
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : incrémentation automatique d'un nom de fichier variable

Bonjour à tous

AUDREY8013 (Bienvenue sur le forum)
Pourquoi ne pas utiliser un modéle Excel (extension: .xltx ou .xltm) ?
Voir ici pour des explications plus détaillées
Enregistrer un classeur ou une feuille de calcul en tant que modèle - Excel - Office.com
Cela permets que le modèle ne soit jamais altéré.
Pour l'incrémentation, il suffira de d'ajouter le code VBA dans l'événement adéquat.
Je vais tester la chose après mon petit café et reviens poster le code VBA généré.
 

Staple1600

XLDnaute Barbatruc
Re : incrémentation automatique d'un nom de fichier variable

Re

A la réflexion, l'incrémentation se fait par le modèle lui-même (cf copie d'écran ci-dessous)
modele.png
Si je clique sur le modèle nommé testee (que j'ai crée pour l'occasion)
Excel créa un classeur nommé testee1 (basé sur le modée nommée testee)
Si je clique une nouvelle fois, le classeur créé se nommera testee2

NB: La copie d'écran est sous XL 2013, mais le principe reste le même pour les versions antérieures
(l'extension change aussi : *.xlt jusqu'à Excel 2003)
 

Discussions similaires

Réponses
5
Affichages
210

Statistiques des forums

Discussions
312 201
Messages
2 086 170
Membres
103 151
dernier inscrit
nassim