Inscrivez-vous sur Scribay...

...et retrouvez une communauté soudée par l'amour de l'écriture, le partage et l’entraide entre auteurs.

Inscrivez-vous pour profiter pleinement de Scribay !
Image de profil de Gruik

Versioning de texte

par Gruik  il y a 1 semaine

Bonjour à tous.

Le message de @Victoria-Westhill@ m’a interpellé. (et sourire aussi un peu, oui je sais c’est pas gentil).

Comme d’autre, j’ai déjà fait la bêtise de supprimer le mauvais fichier… Ou le bon ça dépend comment on voit les choses. Bref !

En informatique on utilise des logiciels de versioning, ça permet de garder les versions antérieures et de revenir en arrière au cas où.

Je me suis demandé comment je pourrais faire un truc simple avec un traitement de texte pour conserver les anciennes versions et éviter d’effacer les nouvelles.

Du coup voila un petit développement en VBA pour Word. Je vais l’adapter pour libre office. (Je ne travaille pas avec Word)

Comment ça marche ?

Deux possibilités :

- coller le code VBA dans un document (mais pas n’importe où quand même)

- Coller le code VBA dans un modèle et réutiliser le modèle quand vous en avez besoin.

La deuxième solution évite de recoller le code à chaque fois

À la première sauvegarde du document, créé via le modèle ou si vous avez collé le code au bon endroit, il ne se passe rien. NE PAS OUBLIER D’ENREGISTRER LE FICHIER AU FORMAT docm, sinon le code n’est pas enregistré.

La prochaine fois que vous ouvriez le fichier, le code ajoute à la fin du nom de votre fichier ‘-V1’ et l’enregistre immédiatement sans effacer le précédent.

Un petit exemple pour être clair :

- Je crée un fichier trucbidule qui contient la macro.

- Je l’enregistre en trucbidule.docm

- Je ferme le fichier

- Je rouvre mon fichier trucbidule.docm

- Le fichier trucbidule-V1.docm est créé automatiquement et c’est celui sur lequel je travaille.

- Je n’oublie pas de le sauvegarder quand j’ai fini.

- Tant que je n’est pas fermé le fichier, je suis toujours sur la même version.

- Quand je l’ouvre à nouveau une nouvelle version est créée trucbidule-V2.docm.

- Et ainsi de suite.

Je garde toutes mes versions ou pas. Si je bosse sur un autre PC, j’aurai toujours un versioning. Du coup je limite le risque d’écrasement.

Comment je l’installe ?

- Créé un nouveau document ou un nouveau modèle

- Copiez le code ci-dessous.

- Allez dans l’onglet développeur

- cliquez sur l’icone en haut à gauche ‘Visual Basic’

- Double clic sur thisdocument

- Coller le code

- faire une première sauvegarde (format docm)

- Créé un nouveau document à partir du modèle ou utiliser le nouveau document si vous n’avez pas créé de modèle.

- tester

-Enjoy

copier ce qui est entre les deux lignes

-------------------------------------------------------------------------------------------------------------------------------

Private Sub No_Version(name)

Dim newName$

newName = "-V1"

'Ajouter -V1 au fichier original

newName = name & newName

'Enregistrer la nouvelle version

ActiveDocument.SaveAs2 newName

'Pour ne pas afficher la boite ajouter un ' devant la ligne ci-dessous

MsgBox "Version 1." & vbNewLine & "Le fichier original est conservé", vbInformation, "Info"

End Sub

Private Sub Version_OK(name)

Dim versionNumber$, newName$, newVersion As Integer

'Recuperer le numero de l'ancienne version

versionNumber = Mid(name, InStr(1, name, "-V") + 2)

'Recuperer le nom du fichier sans la version

newName = Left(name, InStr(1, name, "-V") - 1)

'Le convertir en nombre et l'incrementer

newVersion = CInt(versionNumber) + 1

'Enregistrer la nouvelle version

newName = newName & "-V" & newVersion

ActiveDocument.SaveAs2 newName

'Pour ne pas afficher la boite ajouter un ' devant la ligne ci-dessous

MsgBox "Version " & newVersion & vbNewLine & "L'ancienne version est conservée.", vbInformation, "Info"

End Sub

Private Sub Document_Open()

Dim oldName$

'Recuperer le nom du fichier dans la variable oldName

oldName = ActiveDocument.name

'et enlever l'extension

oldName = Left(oldName, (InStrRev(oldName, ".", -1, vbTextCompare) - 1))

If IsNumeric(Right(oldName, 1)) Then

Version_OK oldName

Else

No_Version oldName

End If

End Sub

--------------------------------------------------------------------------------------------------------------------------------

Le code est simple et ne pirate pas votre PC ;-)

Image de profil de korinne
korinne
Waouh O-Ô balaise !
Merci pour le partage en tout cas :))
Image de profil de Shusha
Shusha
Sinon, Google Doc (Drive) gère très bien le versioning :) Ca peut aussi être une solution.
Image de profil de Gruik
Gruik
Oui, mais dans la mesure du possible je ne donne rien à manger aux GAFAM et je peux bosser offline.
Image de profil de Shusha
Shusha
A vérifier, mais il me semble qu'il est possible de le récupérer pour du offline, et ça resynchronise quand il faut.
Image de profil de Gruik
Gruik
Oui je suis sur que tu peux.
0