Archivage automatique

Bonjour,

Je ne suis pas douée en excel et je bute sur un archivage automatique de mes données de la feuille principale "PLACES" vers une feuille "ARCHIVAGES".

capture3 capture2

Voici l'ensemble des colonnes concernées par l'archivage :

capture 1

Je voudrais que lorsque le statut passe en "archivée" (modification manuelle), l'ensemble de la ligne concernée soit archivée sur la feuille "archivage".

capture4

Auriez-vous des pistes ? Je pensais à une macro mais je n'ai pas les compétences pour.

En vous remerciant

Bonne journée

Je pense que le plus simple serait d'utiliser une UF du type formulaire. Savez-vous faire ou voulez-vous un exemple ?

Juste un exemple :

170exemple4.xlsm (27.89 Ko)

Bonjour Optimix,

Merci pour cette réponse. Comment cela fonctionne ? Il faut rentrer les informations dans la feuille "accueil" puis saisie ?

En te remerciant !

Un formulaire est une fenêtre qui s'ouvre et qui permet un certain nombre de choses. En particulier, on peut :
- donner un choix unique sur plusieurs réponses possibles à l'aide de boutons radio (qu'on appelle aussi "à options") ;
- donner la possibilité de sélectionner plusieurs réponses (cases à cocher) ;
- sélectionner un ou plusieurs items dans une liste dont les éléments se trouvent (éventuellement) dans un onglet ;
- sélectionner un item dans une liste déroulante dont les éléments se trouvent (éventuellement) dans un onglet ;
- taper un texte libre ou une réponse dans une zone de saisie ;
- on peut enfin placer des boutons de commande pour valider les données entrées dans le formulaire, pour refermer le formulaire sans sauvegarde, ou pour faire tout autre chose.
- etc.

Cette interface graphique se réalise avec l'éditeur VBE accessible lorsque le fichier est au format XLSM (prévu pour pouvoir contenir des macros). Par défaut le formulaire s'appelle UserForm1, c'est la raison pour laquelle on parle souvent d'UF. Pour accéder au formulaire, l'utilisateur a accès à un bouton qui commande son ouverture. Une fois remplies, les données saisies vont être insérées dans l'onglet de son choix.
Bref, il est plus simple de procéder avec un formulaire de ce type que de dédier un onglet aux saisies des données.

Que voulez-vous faire exactement ?

Merci pour votre réponse mais ce n'est pas tout à fait ce que je recherche. Je voudrais simplement un archivage de ma base de données "PLACES" car celle-ci est amenée à évoluer quotidiennement.

Je m'explique :

Sur ma première feuille "PLACES", je souhaite que les données soient entrées manuellement jour par jour car j'ai créée des listes notamment pour les villes, le statut, etc. Par contre, je souhaite que lorsque j'indique "archivée" dans ma colonne "STATUT" que l'ensemble de la ligne (donc y compris toutes les colonnes) se suppriment de la feuille PLACES pour se mettre dans ma feuille "ARCHIVAGES".

En gros, mes données basculent de la feuille 1 à une autre feuille lorsque soit je lui demande (par exemple j'ai vu des macros en ce sens où on peut créer un bouton archivage sur la feuille 1) soit automatiquement lorsque je choisis le statut "archivée".

J'espère que cela est plus clair et une nouvelle fois je vous remercie de chercher avec moi !

C'est assez facile à faire. Je suppose que les champs sont strictement identiques entre les deux onglets. Je vous proposerai une solution demain matin : je pense que vous aurez de nombreuses variantes.

Bonjour EM73 & Optimix,

EM73 j'ai eu la même demande et j'ai eu ma réponse ici,

Sauvegarde d'un tableau vers un autre tableau

Bien à vous

Bonjour à vous deux. Une proposition.

17exmple6.xlsm (21.72 Ko)

Le code avec les lignes numérotées au cas où vous auriez besoin d'explications :

Option Explicit

1 Private Sub Worksheet_Change(ByVal Target As Range)
2    If Not Application.Intersect(Target, Range("N:N")) Is Nothing Then
3        If Target.Value = "TEMP" Then Exit Sub
4        Dim nL1 As Long, nL2 As Long, wS1 As Worksheet, wS2 As Worksheet

5        Set wS1 = Sheets("PLACES")
6        Set wS2 = Sheets("ARCHIVAGES")
7        nL1 = Target.Row
8        nL2 = wS2.UsedRange.Rows.Count + 1
9        wS1.Range("A" & nL1 & ":M" & nL1).Copy Destination:=wS2.Range("A" & nL2)
        ' Pour ne pas repasser par la macro lors de la destruction de la ligne
10        Application.EnableEvents = False
11        On Error Resume Next
12        Rows(nL1).EntireRow.Delete
13        On Error GoTo 0
14        Application.EnableEvents = True
15    End If
End Sub

Dans l'exemple ci dessous :
- sélectionnez ARCHIVAGE dans la cellule N3 : la ligne est recopiée puis détruite ;
- puis sélectionnez ARCHIVAGE dans la cellule N2 (ligne temporaire) : idem.

Optimix merci infiniment !! C'est exactement ce que je cherchais à faire. Je vais essayer de comprendre maintenant le fonctionnement et l'appliquer dans mon tableau.

Merci également à Domtous pour votre réponse, la seule différence et que j'avais un élément conditionnel pour mon archivage.

Bonne journée

Alors quelques explications :

1 - Ce code se place dans la procédure Change( ) de la feuille "PLACES"
2 - il ne concerne que la colonne "N" (Statut). Il y a dans cette ligne une liste contenant les options "TEMP" et "ARCHIVAGE". Si on choisit TEMP, les données sont conservées telles quelles ; elles ne sont pas recopiées dans l'onglet ARCHIVAGE. Si on choisit l'option ARCHIVAGE, les données sont recopiées et la ligne est détruite. Ne doivent donc rester dans l'onglet "PLACES" que des enregistrements TEMP (pour temporaires).
3 - Si l'utilisateur sélectionne TEMP on ne fait rien et on quitte la procédure. Il pourra ultérieurement changer et procéder à l'archivage.
4 - déclaration des variables et des objets "Feuilles"
5-6 affectation de noms aux objets Worksheet
7 - N° de la ligne active dans l'onglet "PLACES"
8 - N° de la 1ère ligne vide dans l'onglet ARCHIVAGES
9 - copie des données dans l'onglet ARCHIVAGE
10 à 14 - Sans ces lignes, on ne pourrait pas détruire la ligne archivée sans activer la macro à cause de la colonne des Statuts.

Optimix, je suis heureuse de vous annoncer que j'ai réussi à intégrer et modifier votre codage !! Merci beaucoup c'est parfait!

Bonne continuation

Content pour vous, bon vent.

Bonjour Optimix,

Je relance le sujet car j'ai une erreur dans ma macro lorsque j'insère une nouvelle ligne dans le tableau excel : erreur d'exécution 13 : incompatibilité de type

La macro :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("G:G")) Is Nothing Then
If Target.Value = "" Then Exit Sub -> j'ai rajouté ces deux lignes pour signifier à excel que lorsqu'il n'y a rien dans la colonne G pas d'erreur mais ça ne fonctionne pas
If Target.Value = " " Then Exit Sub

If Target.Value = "EN COURS" Then Exit Sub
If Target.Value = "A VENIR" Then Exit Sub
Dim nL1 As Long, nL2 As Long, wS1 As Worksheet, wS5 As Worksheet

Set wS1 = Sheets("PLACES")
Set wS5 = Sheets("ARCHIVAGES 2023")
nL1 = Target.Row
nL2 = wS5.UsedRange.Rows.Count + 1
wS1.Range("A" & nL1 & ":N" & nL1).Copy Destination:=wS5.Range("A" & nL2)
' Pour ne pas repasser par la macro lors qde la destruction de la ligne
Application.EnableEvents = False
On Error Resume Next
Rows(nL1).EntireRow.Delete
On Error GoTo 0
Application.EnableEvents = True
End If
End Sub

Une idée pour solutionner cette erreur ?

Merci !

Et qu'est-ce que a donne si votre macro commence comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)   
    If Target.Column < 7 Or Target.Column > 7 Then Exit Sub
    If Target.Value <> "ARCHIVAGE" Then Exit Sub

    Dim nL1 As Long, nL2 As Long, wS1 As Worksheet, wS5 As Worksheet

C'est parfait Optimix, encore merci !

Bonne continuation

Bonjour Optimix,

Deux questions dont je ne parviens pas à trouver la réponse:

1) Je souhaiterai lorsque dans ma colonne B une cellule comprenant une liste déroulante de villes avec codes postaux est sélectionnée, un AIT ou CHY apparaissent dans le cellule A en fonction du choix, avez-vous une idée de macro ? J'ai essayé avec des IF mais je n'y arrive pas !

2) Je sais qu'il est possible de créer un fichier word à partir d'une saisie sur excel, savez-vous par quel biais je dois passer ?

Je bosse toujours sur le même fichier !

Merci

Question 1 : on aurait gagné du temps si vous aviez tout dit au début. Je vous laisse le soin de remplir la condition 1 dans la macro ci-dessous, car je n'ai rien compris à ces codes AIT et CHY.
Question 2 : vous devez ouvrir un fil à part (s'il n'existe pas déjà) sur le sujet pour ne pas tout mélanger. Vous allez devoir fouiller.

10exemple4.xlsm (23.11 Ko)

Merci pour votre réponse. Le tableau évolue au gré des idées !

Rechercher des sujets similaires à "archivage automatique"