Incrémentation automatique d'un nom de fichier variable

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 il y a une première 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
  • 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 commenrt faire, à voir

et il y a une deuxième contrainte:

je voudrais que le fichier s'enregistre pour chacun dans un dossier différent automatiquement en fonction du choix fait dans B13, je pourrais créée par exemple autant de dossier que de domaine à choisir en B13 et préciser le chemin pour chacun dans vba

je vous envoie un fichier où j'ai essayé de bricoler qq chose mais ça ne répond pas du tout à mes attentes

j'espère avoir été assez claire pour vous orienter dans la voie de la solution salvatrice

et merci très très sincèrement pour votre aide

105fiche-nc.xlsm (58.23 Ko)

rebonsoir à tous,

j'ai fouillé et je pense que ce code pourrait m'apporter peut être une solution concernant la sauvegarde incrémentée:

je l'ai récupérer sur un forum et modifier avec mes coordonnées de cellules

il est censé crée 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 troisième feuille 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

vous qui parlez couramment ce langage magique pour moi pourriez vous m'aider?

merci bcp bcp

code pour incrémentation du nom:

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

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

Salut,

Si ton problème est toujours d'actualité et que tu n'es pas pressée, je veux bien me pencher à nouveau sur ton fichier, puisque j'ai à nouveau un peu plus de temps actuellement.

Alors ?

salut

et bien oui il est toujours d'actualité, comme tu peux le voir il n'a pas mobilisé les foules.. je commence à désespérer alors ta proposition est tout simplement miraculeuse et je m'empresse de l'accepter très volontier.

si tu te rends compte que ce n'est pas réalisable, je reverrais ma méthode

merci vraiment du fond du coeur pour ton aide et le travail que tu fourniras (pas évident à ce que je prévois) et quelque soit la finalité

bye et bon courage

Salut,

J’ai déjà avancé la moindre avec ton fichier.

Afin qu’il fonctionne, tu devais le placer dans un dossier quelconque ; dossier dans lequel tu placerais également un sous-dossier par processus, comme je l’ai fait chez moi pour les deux premiers processus seulement, selon l’image ci-dessous.

30 08

Ensuite tu choisis un processus en B13 et un sous-processus en C13 et les références nécessaires viennent s’inscrire dans tes cellules G10 et H10.

Si tu appuies maintenant sur le bouton Sauvegarder, une copie de cette feuille est enregistrée dans le bon sous-dossier dans un nouveau fichier portant le nom désiré avec le numéro indexé de la fiche.

Le fichier de base est quant à lui refermé après que le numéro de la fiche (pour ce processus) ait été actualisé. Ceci se passe au niveau des cellules BZ2920 et suivantes (tu as un peu compliqué les choses sur ce coup-là Au départ, toutes les valeurs de ces cellules sont sur 1, mais tu pourrais "tricher" et indiquer le numéro de départ que tu désires). Tu ne te rendras compte de l’incrémentation automatique que lorsque tu ouvriras à nouveau ce fichier de base.

Les cellules B13 et C13 du fichier de base sont également remises à zéro avant qu'il soit refermé. A toi de dire quoi d’autre devrait encore être remis à zéro à ce moment-là. J’ai finalement préféré cette solution de remise à zéro plutôt que la solution d’une feuille «Modèle» qui remplacerait la feuille modifié par l’utilisateur.

Il y a un problème au niveau des nouveaux fichier créés : comme ils contiennent des macros que je n’ai pas (encore) réussi à supprimer, si tu ajoutes une nouvelle feuille dans l’un de ces nouveaux fichiers créées et que tu retournes sur la feuille « FICHE D’ANOMALIE », la macro événementielle Private Sub Worksheet_SelectionChange(ByVal Target As Range) créé un bug. Est-ce gênant ? Eventuellement que la solution serait d'enregistrer les nouveaux fichiers au format .xlsx (Excel 2007 et suivant mais sans macro). Comme je ne sais pas pourquoi tu as enregistré toi les fichiers au format .xls (Excel 97-2003), je n'ai pas osé modifier cela.

Je n’ai pas lu la moitié de tes textes, il y en a trop et à trop d’endroits. Si tu m’as déjà expliqué quelque chose que j’ai loupé, essaie de me l’expliquer plus succinctement et uniquement par l’intermédiaire d’un message sur ton fil.

A te relire.

200fiche-nc-v2.xlsm (56.76 Ko)

bonjour,

je te remercie vraiment pour ton aide, c'est ce que je recherchais à faire sans succès depuis plussieurs jours alors bravo!!

pour répondre à quelques unes de tes remarques, le nouveau fichier s'enregistre en excel 97-2003 car certains utilisateurs qui auront à consulter ces fiches crées ont cette vielle version. il faudrait donc conserver ce format d'enregistrement mais en supprimer les macros automatiquement. ça je sais pas faire.

concernant les autres cellules à effacer après la sauvegarde, ca je sais faire et je m'en charge, merci

par contre, une question:

est il obligatoire de placer le fichier "à remplir" et les sous-dossiers cibles pour la sauvegarde au même endroit?

en effet, j'aurais voulu que la fiche à remplir soit dans un dossier mais que les fiches sauvegardées soient dans un autre dossier plus "secret" pour que je puisse les gérer moi même

je te remercie vraiment de ton aide, grâce à toi je dispose maintenant d'un outil qui va révolutionner mon labo!! rien que ça

merci

Salut,

J’avais placé les sous-dossiers correspondants à chacun des Processus dans le même dossier que le fichier de base par envie de simplification ; le chemin auquel il faut enregistrer les nouveaux fichiers créés était ainsi entièrement «automatisé». Mais il est bien entendu que tu peux placer ces sous-dossiers où bon te semble, après avoir modifié la variable «Chemin» en conséquence.

Ma variable «Chemin» est construite à l’aide de la ligne Chemin = ThisWorkbook.Path & "\" & Range("B13") & "\" sur la base du chemin dans lequel est placé le fichier de base (Thisworkbook.Path = par exemple sur l’un de mes PC privés "C:\Privé\Excel\Audrey") et j’ai complété cela avec un premier signe \ (très important), le nom du sous-dossier qui se trouve dans la cellule B13 et un deuxième \ (également très important).

Donc si tes sous-dossiers se trouvent par exemple à l’adresse "D:\Aaaa\Bbbb\Cccc\Xsss", tu remplaces Chemin = ThisWorkbook.Path & "\" & Range("B13") & "\" par Chemin = "D:\Aaaa\Bbbb\Cccc\Xsss\" & Range("B13") & "\" (le premier \ est maintenant inclus à la première partie du String, à la suite de Xsss) et le tour est joué. Par contre si tu modifies quoi que ce soit dans ton arborescence par la suite, tu dois modifier le code également.

En ce qui concerne l’enregistrement sans macros au format .xls, je vais devoir chercher un peu plus, éventuellement demander de l’aide moi-même sur un nouveau fil que j'ouvrirai. Comme je t’ai avertie que je ne pouvais m’occuper du Forum que sporadiquement, je te prierais de bien vouloir patienter quelques jours.

Cordialement.

salut

je te remercie beaucoup, ce code me change la vie et tes explications sont dignes d'un prof!! très pédégogue merci!!

je patienterais ne t'inquètes pas, je continue à peaufiner le tout et merci pour ton implication

à très bientôt donc

Salut,

Comme promis, j'ai recherché une solution à ce problème d'enregistrement de fichier sans macros sur le fil https://forum.excel-pratique.com/excel/vba-supprimer-les-macros-dans-la-copie-d-un-fichier-t42906.html

Mais maintenant que je pense pouvoir appliquer l'une des solutions reçues à ton problème, j'attendais de tes nouvelles pour continuer On parle parfois de la situation du serpent qui se mord la queue, est-ce le cas ici

Du point de vue privé, j'ai beaucoup à faire ces temps-ci et j'espère que tu puisses patienter quelques jours afin que je m'y remette ; mais ça semble être le cas, selon ta dernière réponse.

Comme tu n'as pas indiqué ta "localisation" dans ton profil, puis-je te demander dans quelle région du globe tu habites ?

Amicalement.

bonjour

très contente d'apprendre qu'une solution existe concernant l'enregistrement sans macro

pour le serpent qui se mord la queue ... pas bien saisi là j'avoue mais si ta question est de savoir si j'ai toujours besoin d'avancer sur ce point oui, et je patienterais le temps qu'il faudra, ce problème n'est pas bloquant pour moi

merci encore beaucoup beaucoup

ps je vis à marseille dans les bouches du rhone (france) et toi?

bye

Où j'habite ? Mais comme indiqué dans mon profil, en Valais en Suisse. Alors tu vois, le Rhône, je connais, je lui passe dessus deux fois par jour pour aller au travail Mais c'est vrai que chez nous il est un peut plus petit que chez vous.

Pour le serpent qui se mord la queue, je voulais simplement dire que toi tu attendais que je t'écrive à nouveau alors que moi j'attendais que tu le fasses. Mais effectivement que ce n'est peut-être pas la bonne expression dans ce cas.

Je te reviens d'ici 3 à 4 jours ...... j'espère avec un début de solution.

c'est encore moi!!

je sais que tu es très occupé mais j'ai un souci avec le code que tu m'a donné dernièrement, celui qui permet la création de fichier sauvegardé incrémenté.

il fonctionnait parfaitement mais depuis que j'ai un peu améliorer mon document excell je ne comprends pas pourquoi il ne fonctionne plus en fait, j'ai noté ta remarques sur le fait que les données qui servent aux list box étaient très peu pratique à retrouver donc je les ai organisées dans une feuille à part nommée PARAM

je pense que le problème vient du fait que je n'arrive pas à spécifier dans ton code ce nouvel emplacement

de plus j'ai créer un userform qui sert de formulaire à remplir automatiquement le document excell

si tu aurais qq instants pour regarder ça je suis sure qu'il s'agit d'une bricole mais j'arrive de mieux en mieux à comprendre le vba pas encore à trouver les "termes" pour l'écrire

merci à toi

43pour-forum.xlsm (75.36 Ko)

salut

j'ai trouvé une solution finalement meri pour tout!!

Salut,

Tu dois me laisser liquider un problème avant d’en présenter un autre, autrement on va se mélanger les pinceaux.

Lorsque tu joues à l’apprentie-sorcière, ce n’est pas toujours facile de trouver ce que tu as fait de faux et à corriger tes codes.

Dans le dernier fichier présenté, tu n’as pas bien suivi mes instructions quant à ton chemin. Tu as un «\» de trop, mais apparemment ça n’a pas d’influence.

Et puis le fait d’avoir déplacé certaines données sur la feuille « PARAM » demande que tu modifies complètement ton code. Regarde les commentaires que j’ai placés dans la macro du fichier ci-joint.

Ton bouton « Sauvegarder » n’est pas effacé sur la feuille du fichier nouvellement créé.

Confirme-moi déjà si tout ça joue et moi je regarde dès que possible afin de supprimer les macros indésirables dans les fichiers nouvellement créés.

Cordialement.

56pour-forum-v2.xlsm (74.70 Ko)

salut je ne sais pas si tu as lu mon dernier post, mais je t'informais que j'ai réussi à me dépatouiller

pour ton dernier message merci beaucoup, ca marche très bien mainetenat et concernant l'enregistrement sans macro, je me suis également débrouiller autrement en créant un formualire qui remplie la feuille sauvegardée.

merci beaucoup pour ton aide encore et encore

Salut,

J'avais bien vu ton message et j'avais trouvé vraiment étonnement qu’après trois jours d’attente, nous postions exactement à la même minute

Mais j’attendais de voir si tu décidais de quand même donner plus d’info sur la solution que tu avais trouvée ; comme c’est un Forum d’échange, ça aurait été dommage que tu n’indiques pas comment tu avais résolu tout ça. Voilà qui est fait.

A la prochaine.

bonjour à toi

je me permets de te solliciter à nouveau pour un problème certainement plus simple à résoudre que ce que je t'ai soumis jusqu'ici. je fais appel à toi car personne ne m'a répondu sur le forum.

voici: j'ai une listbox multiselection dans un userform et j'aurais voulu contraindre l'utilisateur à un choix au moins

voici le code

Private Sub Saisir_But_Click()

For i = 0 To Me.Lb_Responsable.ListCount - 1

If Me.Lb_Responsable.Selected(0) Then

MsgBox "Selectionner le ou les repsonsables qui ont été informés ou qui le seront."

Label3.ForeColor = RGB(204, 51, 204)

Exit Sub

End If

Next

end sub

le problème que je rencontre est quece code fonctionne même quand une sélection est faite

je ne comprends pas tu aurais la gentillesse d'y jeter un oeil si tu as le temps?

merci encore à toi

Rechercher des sujets similaires à "incrementation automatique nom fichier variable"