XL 2013 Historique excel

RomainPOIRET

XLDnaute Occasionnel
Bonjour à tous,

Je souhaiterai crée un historique,
j'ai une feuille "SOURCE" où je souhaite avoir les infos suivantes "Jour", "Semaine", "Mois", "Ligne", "Equipe","TRS" dans la feuille "HISTO",

Cependant, 3 choses sont importantes pour moi :
- Le code s'activera lorsque je cliquerai sur l'onglet "HISTO",
- je prend uniquement les valeurs que si la colonne "H" de la feuille "SOURCE" est "non-vide",
- De plus je ne prend en aucun cas la colonne en rouge,

J'espère être assez clair ...

Je reste à disposition au besoin,

Je transmets en copie un exemple, d'avance merci,

Cordialement,

Romain
 

Pièces jointes

  • TEST1.xlsx
    18.9 KB · Affichages: 8
Solution
Bonjour RomainPOIRET,

Voyez le fichier joint et cette macro dans le code de la feuille "HISTO" :
VB:
Private Sub Worksheet_Activate()
Dim tablo, resu(), i&, n&
With Feuil1.[A1].CurrentRegion.Resize(, 19) 'Feuil1 : CodeName
    tablo = .Value 'matrice, plus rapide
    ReDim resu(1 To UBound(tablo), 1 To 6)
    For i = 2 To UBound(tablo)
        If .Cells(i, 1).Interior.ColorIndex <> 3 And tablo(i, 8) <> "" Then
            n = n + 1
            resu(n, 1) = tablo(i, 5)
            resu(n, 2) = tablo(i, 1)
            resu(n, 3) = tablo(i, 2)
            resu(n, 4) = tablo(i, 3)
            resu(n, 5) = tablo(i, 4)
            resu(n, 6) = tablo(i, 19)
        End If
    Next
End With
'---restitution---
With [A2] '1ère cellule de...

job75

XLDnaute Barbatruc
Bonjour RomainPOIRET,

Voyez le fichier joint et cette macro dans le code de la feuille "HISTO" :
VB:
Private Sub Worksheet_Activate()
Dim tablo, resu(), i&, n&
With Feuil1.[A1].CurrentRegion.Resize(, 19) 'Feuil1 : CodeName
    tablo = .Value 'matrice, plus rapide
    ReDim resu(1 To UBound(tablo), 1 To 6)
    For i = 2 To UBound(tablo)
        If .Cells(i, 1).Interior.ColorIndex <> 3 And tablo(i, 8) <> "" Then
            n = n + 1
            resu(n, 1) = tablo(i, 5)
            resu(n, 2) = tablo(i, 1)
            resu(n, 3) = tablo(i, 2)
            resu(n, 4) = tablo(i, 3)
            resu(n, 5) = tablo(i, 4)
            resu(n, 6) = tablo(i, 19)
        End If
    Next
End With
'---restitution---
With [A2] '1ère cellule de restitution, à adapter
    If n Then .Resize(n, 6) = resu
    .Offset(n).Resize(Rows.Count - n - .Row + 1).EntireRow.Delete 'RAZ en desous
    .EntireColumn.Resize(, 6).AutoFit 'ajustement largeurs
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Elle se déclenche quand on active la feuille.

PS : attention il y a un espace superflu dans le nom de l'onglet "SOURCE "...

A+
 

Pièces jointes

  • TEST(1).xlsm
    29.3 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 107
Membres
103 120
dernier inscrit
83400ren