XL 2016 Copier coller pour faire un historique

cartoon

XLDnaute Nouveau
Bonjour,

Je travaille actuelle sur la fiabilisation d'un suivi d'outillage.
Ce fichier suivi d'outillage est sur excel.
J'ai déjà fait quelque manipulation de VBA mais je reste novice dessus...

Voilà ce que j'aimerais faire :
Dans l'onglet 4 UNI, il faudrait une macro qui copie la ligne d'information ( de A3 à I3) et qui viendrait la coller en A61) dans l'historique. une fois que les cellules A3:I3 seraient toutes remplies.
C'est surement très simple, mais je suis dépassé, je ne m'en sors pas du tout.

Auriez-vous la solution ?

Je mets le fichier en PJ.
 

Pièces jointes

  • Tableau suivi Outillages1.xlsm
    104 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cartoon,
1- Ça va obliger à surveiller en permanence toutes les colonnes E:I pour voir si elles sont pleines ?
Serait il possible d’insérer un bouton archivage qui ferait le travail sur demande ? Sinon on sera obligé d'avoir du code dans chaque feuille pour la surveillance de zones.
Ou est il possible d'ajouter une colonne pour signifier que la ligne est pleine, par ex OK si tout est bon, et déclencher l'action que sur la détection d'OK.
2- une fois la ligne copiée dans Historique, la ligne correspondante dans UNI doit elle être supprimée ?
 

cartoon

XLDnaute Nouveau
Bonjour Sylvanu,
Merci pour ta réponse.
1- Je ne sais pas si c'est possible de copier/coller au moment au les cellules sont remplies (E:I) car de A à D cela restera toujours remplie.
C'est possible pour la colonne si on peut la masquer, mais si un utilisateur vient changer une donnée, le OK restera du coup ?
Si cela n'est pas possible alors un bouton fera l'affaire
2- Non elle ne doit pas être supprimée, en effet le premier tableau sera l'état des lieux.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Je crois que l'option du bouton est quand même la moins lourde.
Sinon il faudrait scruter en permanence toutes les cellules des colonne E à I pour sauvegarder mais aussi mémoriser toutes les lignes sauvegardée en cas de modifications de cellules si erreur.

Question : La cellule Observations sera t-elle obligatoirement remplie ou peut elle être vide ?
Dans le premier cas, on sauve que si EFGHI est rempli, dans le second cas on ne se préoccupe que de EFGI.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
En PJ un essai à tester.
1- Un bouton Archivage est présent sur toutes les pages. Un appui sur celui ci archive les données.
2- Tous les boutons Archivage pointent sur la même macro ArchiveData (aucun autre code modifié)
3- La colonne Observations n'est pas testée.
4- Je reconstruit à chaque fois la table d'archivage, ce qui permet de réactualiser les données en cas d'erreur.
J'ai fait quelques tests mais avec tous les déclenchement d'alerte ID et relevé de compteur c'est assez limité.:)
 

Pièces jointes

  • Tableau suivi Outillages1 (V2).xlsm
    117.4 KB · Affichages: 10

cartoon

XLDnaute Nouveau
C'est super merci beaucoup.
Oui c'est vrai qu'à l'usage le déclenchement d'alerte est trop contraignant...

En revanche, lorsque je modifie une ligne déjà remplie, elle est remplacée dans l'historique.
L'idéal serait qu'elle s'ajoute.
Est-ce possible ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Effacer une archive pour la reconstruire, c'est ne pas avoir d'archive ! :( No comment.

En V3 une version plus pertinente. A vérifier.
Dans cette version Observations est aussi pris en compte. La moindre modification entraîne un archivage.

Par contre à l'usage si la base Archives grossit la mise à jour va s'allonger.
Pour chaque ligne pleine, je parcourt toute l'archive pour vérifier si cette ligne existe ou pas ( avec tous les champs )
A voir à l'usage.
 

Pièces jointes

  • Tableau suivi Outillages1 (V3).xlsm
    119.6 KB · Affichages: 4

cartoon

XLDnaute Nouveau
Aucun problème pour le coup de l'archive ;)
Merci beaucoup pour cela c'est exactement ce qu’il me fallait. C'est vraiment au top :D

Je vais enlever le message d'alerte car trop lourd.
Euh pour l'histoire des cases rouges oui... En effet il faudrait enlever le rouge si case remplie.
Saurais-tu comment procéder ? (j'en demande beaucoup désolé)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je n'ai pas dit que le message d'alerte était trop lourd. mais ne connaissant pas ce que l'outil attend je mets n'importe quoi ... et il alerte. C'est tout.
Pour le rouge, c'est un joli bug :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
    For i = 3 To 53
        If Cells(i, 6) <> "" Then                    ' Si cellule colonne 6 n'est pas vide
            Cells(i, 5).Interior.ColorIndex = 3        ' Alors rouge en 5'
            Cells(i, 7).Interior.ColorIndex = 3        ' Et rouge en 7'
            MsgAlert
        End If
    Next
End Sub
Donc si on efface la valeur en 6 la condition Cells(i, 6) <>"" devient fausse et on saute.
Les cellules 5 et 7 restent dans l'état ... donc rouge. :D

J'ai changé dans toutes les feuilles par :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
    For i = 3 To 49
        If Cells(i, 6) <> "" Then                           ' Si non vide'
            Cells(i, 5).Interior.ColorIndex = 3        ' alors Col5 rouge'
            Cells(i, 7).Interior.ColorIndex = 3        ' et Col7 rouge'
            MsgAlert
        Else                                        ' Sinon on rétablit les couleurs d'origine.
            Cells(i, 5).Interior.ColorIndex = Cells(i, 6).Interior.ColorIndex
            Cells(i, 7).Interior.ColorIndex = Cells(i, 6).Interior.ColorIndex
        End If
    Next
End Sub
 

Pièces jointes

  • Tableau suivi Outillages1 (V4).xlsm
    118.1 KB · Affichages: 10

Discussions similaires

Statistiques des forums

Discussions
311 716
Messages
2 081 848
Membres
101 826
dernier inscrit
dododu89