• Publicité

Macro Excel pour archivage

Dans ce forum, vous pouvez poser toutes vos questions concernant l'utilisation de logiciels de bureautique (Microsoft Office, Open Office, etc.)

Modérateurs: Sebastien, Stéphane, Christophe

Macro Excel pour archivage

Messagepar noemie29 » 01 Nov 2014 14:01

Bonjour à tous,

Ma demande va sûrement vous paraître simple mais elle ne l'est pas forcément pour quelqu'un qui ne maitrise pas Excel. :shock:
Je prépare un tableau d'activités dans Excel, et j'aurais besoin de savoir comment il est possible d'archiver (=couper/coller) une tâche (=une ligne Excel) dans un un Autre onglet 'Archives'

Dans mon cas, le premier onglet s'appelle 'Activités'
Chaque ligne correspond à une tâche et la colonne 'T' dénommée 'Status' peut être remplie par 'Not started' ou 'In-process' ou 'Complete'.
Je souhaiterais que si la colonne 'T' affiche 'Complete', la ligne passe de l'onglet 'Activités' à l'onglet 'Archives'.
Il faudrait que les tâches dans l'onglet 'Archives' se mettent les unes à la suite des autres et ce en commencant par la ligne 3
Une ligne archivée dans l'onglet 'Archives' doit évidemment disparaitre de l'onglet 'Activités'.
Petite précision: les colonnes sont les mêmes dans les deux onglets.

Jespère que je suis claire dans mes propos. :roll:

Merci par avance de votre aide. :vainqueur1:

Noémie
noemie29
No0b
No0b
 
Messages: 2
Enregistré le: 01 Nov 2014 13:26

Re: Macro Excel pour archivage

Messagepar Sebastien » 01 Nov 2014 18:42

Bonjour,
noemie29 a écrit:Jespère que je suis claire dans mes propos. :roll:

Oui, tout à fait. Une précision nécessaire tout de même :

noemie29 a écrit:Je souhaiterais que si la colonne 'T' affiche 'Complete', la ligne passe de l'onglet 'Activités' à l'onglet 'Archives'.

Vous souhaitez que la ligne passe automatiquement d'un onglet à l'autre dès que la cellule est modifiée et passe au statut "complete" (du genre, dès qu'on sélectionne la valeur, la ligne est déplacée instantanément), ou bien le basculement d'un onglet à l'autre peut être envisagé via un bouton qui déclencherait l'archivage des lignes à archiver ?

Les deux sont possibles, mais je pense que le passage automatique à la saisie peut être un peu pénible à l'usage (en cas d'erreur de saisie, la ligne part automatiquement et doit être replacée manuellement).


Tenez-nous au courant.

@+
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 5564
Enregistré le: 14 Fév 2005 19:17
Localisation: LILLE

Re: Macro Excel pour archivage

Messagepar noemie29 » 01 Nov 2014 23:26

Bonjour Sébastien,

Merci de votre réponse. Vous avez raison, à mon taf précédent il y avait en effet un 'bouton' sur lequel je cliquais pour archiver mes 'tasks'.
J'avais peur de trop en demander avec l'histoire du bouton mais ça serait effectivement la solution idéale.

Je vous remercie de votre aide.

@+

Noémie
noemie29
No0b
No0b
 
Messages: 2
Enregistré le: 01 Nov 2014 13:26

Re: Macro Excel pour archivage

Messagepar Sebastien » 02 Nov 2014 15:31

Bonjour,

Ci-dessous la macro, à insérer dans un module VBA.

Code: Tout sélectionner
Sub archivage()

Dim ligne, col_fin As Integer

'largeur du tableau en nombre de colonnes
col_fin = 20

'Sélection de la feuille Activités
Sheets("Activités").Select
Range("A2").Select

'Traitement de l'archivage, jusqu'à ce qu'une ligne vide soit trouvée
' dans la feuille Activités

Do While ActiveCell.Value <> ""

    'Vérification du contenu de la colonne statut
   
   
    If ActiveCell.Offset(0, 19).Value = "Complete" Then
        'Si la colonne contient "Complete"
        'on note le numéro de la ligne et on coupe la ligne
        ligne = ActiveCell.Row
        Range(Cells(ligne, 1), Cells(ligne, col_fin)).Cut
       
        'Sélection de la feuille Archives
        Sheets("Archives").Select
        Range("A3").Select
            'On recherche la première ligne vide poutr coller les données coupées
            'Tant qu'une ligne n'est pas vide, on sélectionne la ligne suivante
            'on colle sur la première ligne vide trouvée
            If ActiveCell.Value <> "" Then
                Do While ActiveCell.Value <> ""
                ActiveCell.Offset(1, 0).Select
                Loop
                ActiveSheet.Paste
            Else
                ActiveSheet.Paste
            End If
       
        'on retourne sur la feuille Activités et on se repositionne sur la ligne traitée
        Sheets("Activités").Select
        Range("A" & ligne).Select
    End If
   
    'On traite la ligne suivante
    ActiveCell.Offset(1, 0).Select

'On relance le traitement
Loop

'le traitement est terminé, nous allons supprimer les lignes vides
Call ligne_vide

End Sub


Sub ligne_vide()
'suppression de toutes les lignes qui n'ont pas de données en première colonne
On Error Resume Next
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub


Fonctionnent de la macro :

La macro se place en cellule A2 de la feuille Activités et va s'exécuter jusqu'à ce qu'une cellule vide soit trouvée en colonne A.
La macro lance également un traitement qui va supprimer les lignes vides de la feuille Activités. Pour cela, elle vérifie le contenu de la colonne A et supprime la ligne entière lorsqu'une cellule de A est vide (cela permet de ne pas laisser des lignes vides dans la feuille Activités une fois l'archivage réalisé).

:arrow: Pour fonctionner correctement, il faut donc que vos tâches aient toujours quelque chose de renseigné dans la colonne A.

Ci-dessous un fichier de test avec la macro, et le bouton permettant de la lancer. Je vous invite à la tester avec une copie de vos données pour voir si elle fonctionne correctement avec vos tâches.
http://astucesinternet.com/data/images_forum/Macro_archives.zip
@+
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 5564
Enregistré le: 14 Fév 2005 19:17
Localisation: LILLE

Re: Macro Excel pour archivage

Messagepar lademeule » 29 Avr 2015 14:18

Bonjour,

Cette macro d'archivage m'a été très utile. Par contre, j'ai des formules dans les lignes à couper-coller dans "Archives" et je souhaiterais faire une collage spécial de valeur mais je suis très novice en vba et je n'arrive pas à associer le PasteSpécial à ActiveCell....

Quelqu'un aurait-il une idée???

Merci d'avance et bonne journée à tous.
lademeule
No0b
No0b
 
Messages: 1
Enregistré le: 29 Avr 2015 14:13
Localisation: France

Re: Macro Excel pour archivage

Messagepar celineb41 » 04 Fév 2022 12:31

Bonjour,

Le code marche super bien pour copier coller dans l'onglet archives, par contre la suppression des lignes devenues vides ne marche pas chez moi, je ne comprends pas pourquoi...?

Dans ma colonne A j'ai une "validation des données" est-ce que ca peut causer le problème?

En fait, la suppression marche quand j'ai archiver une seule ligne... MAis dès que j'en archive 2 ou plus, ça ne marche plus, alors que dans le fichier exemple que vous avez envoyé ça marche très bien et j'ai repris exactement le même code..


Merci d'avance pour votre réponse.
celineb41
No0b
No0b
 
Messages: 1
Enregistré le: 04 Fév 2022 12:25


Retourner vers Forum d'entraide : Bureautique

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités

  • Publicité
cron