Archivage pièces

Bonjour,

Je suis amené à mettre en place un archivage électronique dans ma boite.

J'ai conçu un fichier macro avec 2 onglets uniquement, l'objectif étant de faire l'archivage chaque jour.

Je souhaite créer une marco qui m'archive les données. Dans l'onglet "INFOS", je renseigne les informations du jour à archiver, et ces infos doivent aller sur l'onglet "ARCHIVES" une fois la macro activée.

La macro doit copier, coller et supprimer ensuite les données sur la feuille INFOS pour la rendre vide à nouveau. Chaque nouvelle entrée des données doit se coller à la suite du dernier enregistrement sur la Feuille ARCHIVES.

Je rappelle que la première colonne de la feuille ARCHIVES servira à créer les liens hypertexte vers les pièces.

Merci de votre aide.

Ps: j'ai essayé moi même mais ça marche pas car pas trop fort en VBA.

20archivage.xlsm (29.37 Ko)

Hello,

Une proposition

14archivage.xlsm (30.43 Ko)

Bonjour le fil

Une méthode plus simple que celle de Rag02700 je pense

@+

Hello Rag02700,

Merci. En testant, cela fonctionne bien. Mais pourrais tu stp ajouter un code qui permet d'afficher un message d'erreur lorsque les données sont déja archivés? cela m'éviterais les erreurs de doublons. Merci beaucoup.

Hello BrunoM45,

En voulant tester la macro, j'ai un message d'erreur.

image

Je te remercie aussi

Re,

Dans le code j'identifie les tableaux donnés dans l'exemple

Si les tableaux portent un autre nom il faut les changer

Testé et fonctionnel chez moi bien évidemment

BrunoM45,

Je suis un débutant en VBA..

pour l'instant je ne comprend pas encore grand chose au code.

image

Re,

Ah oups, la définition de la variable est passée à la trappe désolé

Il faut avoir la ligne au début

Dim dLig as Long, nLig as Long, Lig1 as Long

J'ai modifié mon fichier pour qu'il fonctionne

@+

Bonsoir …

Du bon usage du Tableau : passage oblige de la Grande Théorie à la Grande Pratique !

La plupart des intervenants n’utilisent pas les tableaux structurés de la classe LitObjects et pour cause ...

Ceux qui se servent l’éditeur de macro (toujours bien trop bavard) pour apprendre, se retrouvent avec un paquet de lignes utilisant une syntaxe nouvelle consacrée à ce type de classe souvent très lourde donc décourageantes pour beaucoup.

Dans l’exemple traité, avec la syntaxe de base (de la classe Range) simple et connue par tout programmeur un tant soit peu averti, on n’a que très peu de lignes.

Avec les données du tableau TB à recopier dans le tableau TA, 4 lignes, dans la fenêtre des codes dans la feuille cibée, suffisent :

Private Sub Worksheet_Activate()
  If Application.CountA([TA]) > 0 Then [TA].Delete
  [TB].Copy [TA].Item(1, 1)
End Sub

On peut même ajouter 2 lignes pour vider le tableau récepteur afin d’alléger le classeur. Ici

on passe par :

Private Sub Worksheet_Activate()
  [TB].Copy [TA].Item(1, 1)
End Sub

Private Sub Worksheet_Deactivate()
  If Application.CountA([TA]) > 0 Then [TA].Delete
End Sub

Hello BrunoM45,

Super, ça marche. Merci beaucoup. Pourrais tu stp me compléter un code qui afficherait un msg "Déja Archivé" si les données ont été déjà archiver; en prenant comme référence les données de la colonne F dans la feuille "ARCHIVES"?

Merci d'avance

Bonjour Mafiozo,

Est-ce que cela veut dire que les données saisies dans la feuille "INFOS" peuvent déjà exister dans la feuille "ARCHIVES"

Auquel cas ça change tout et ce n'est pas ce qui était indiqué au début

@+

BrunoM45,

C'est vrai, c'était un oubli de ma part, je l'avais pas dit au début, désolé.

Si tu m'aider sur ce coup ce sera super. merci bien.

Rechercher des sujets similaires à "archivage pieces"