Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/11/2011, 16h26   #1
Invité de passage
 
Inscription : janvier 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 32
Points : 4
Points : 4
Par défaut Récupérer la dernière ligne selon

Bonjour a tous et à toutes,

Je viens rarement sur le forum Excel alors que je me sert d'Excel de plus en plus pour tous et n'importe quoi.

Je m'en sert notamment pour consolider mes données d'espace disque de mes tablespace de base.

J'ai une feuille "TABLESPACE_DATA" avec un colonne BASE, DATE, NOM, PCT

BASE DATE NOM PCT
RB1 14-11-2011 PSAPSR3 86
RB1 14-11-2011 PSAPSR3 88
RB1 14-11-2011 PSAPSR3USR 50
RB1 15-11-2011 PSAPSR3 88

Ces données sont généré par un outils de type Talend.

Je voudrait dans une autre feuille n'afficher qu'une ligne, la plus récente, par BASE et par NOM comme un distinct en sql. De préférence sans macro, j'ai essayé la fct INDEX et RECHERCHEV mais grand résultat.

Bref, faire une sorte de feuille de consolidation
Avez vous une idée de comment faire ?

cdt,
dosy07
dosy07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 17h12   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Tu ne donnes pas beaucoup de données pour se faire les dents. En gros, je trierais les données sur la base, le nom et la date du plus récent au plus ancien. Tu ajoutes une colonne date2 en E. En E2 :
En E3 :
Code :
=SI(ET(A3=A2;C3=C2);B2;B3)
Tu sélectionnes ensuite toutes les données (y compris la nouvelle colonne). Tu appuies sur "supprimer les doublons" (onglet Données) et tu sélctionnes les colonnes base, nom et date2. Ca devrait le faire.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 14h51   #3
Invité de passage
 
Inscription : janvier 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 32
Points : 4
Points : 4
merci pour ta réponse, mais j'aimerai vraiment garder l'historique dans cette feuille et y toucher un minimum, c'est vraiment pour créer un feuille avec la synthèse.

je joints mon excel actuelle. il y aura plus de donnée

Dans la feuille TABLESPACE, je souhaiterai juste la dernière ligne de chaque SID et TABLESPACE à la dernière date.

J'ai essayé plusieurs formule mais sans résultat, l'équivalent d'un LAST en SQL
Fichiers attachés
Type de fichier : xlsx database_2.xlsx (15,5 Ko, 3 affichages)
dosy07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 16h12   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Le plus simple, de loin est d'utiliser une macro. Celle-ci se déclenchera automatiquement si des données sont ajoutées, supprimées ou changées sur la feuille data. Est-ce que tu es d'accord ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 19h11   #5
Invité de passage
 
Inscription : janvier 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 32
Points : 4
Points : 4
Si il n'y a pas d'autre choix, pourquoi pas.
Il faudrait suggérer une sorte de SQL like à Microsoft pour faire des requêtes dans une page.
dosy07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 20h28   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Essaie :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub test()
    Dim Sh As Worksheet, DerLig As Long
    Set Sh = Sheets("TABLESPACES")
    Sh.Columns(2).NumberFormat = "d/m/yy h:mm"
    With Sheets("TABLESPACES_DATA")
        .[A:A].Copy .[M1]
        .[C:C].Copy .[N1]
        .[A:B].AdvancedFilter xlFilterInPlace, unique:=True
        .[M:M].Copy Sh.[A1]
        .[N:N].Copy Sh.[C1]
        .ShowAllData
        DerLig = .Cells(Rows.Count, 1).End(xlUp).Row
        For Each c In Sh.Range(Sh.[A2], Sh.Cells(Rows.Count, 1).End(xlUp))
            c.Offset(, 1).FormulaArray = _
            "=MAX(('TABLESPACES_DATA'!A2:A" & DerLig & "=TABLESPACES!A" & _
                c.Row & ")*('TABLESPACES_DATA'!C2:C" & DerLig & "=TABLESPACES!C" & _
                c.Row & ")*TABLESPACES_DATA!B2:B" & DerLig & ")"
        Next c
        .[M:N].Clear
    End With
    Sh.[B:B].Value = Sh.[B:B].Value
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 10h59   #7
Invité de passage
 
Inscription : janvier 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 32
Points : 4
Points : 4
Désolé de répondre si tardivement (malade)

D'abort un grand merci pour ton script, la feuille TABLESPACE se remplit mais avec des doublons, je n'ai pas que un seul tablespace par SID.

Je vais essayé de compléter ton script
dosy07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 11h48   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Au temps pour moi.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub test()
    'Réf. dosy07 database_2.xlsm
    Dim Sh As Worksheet, DerLig As Long
    Set Sh = Sheets("TABLESPACES")
    Sh.Columns(2).NumberFormat = "d/m/yy h:mm"
    With Sheets("TABLESPACES_DATA")
        .[A:A].Copy .[M1]
        .[C:C].Copy .[N1]
        .[M:N].AdvancedFilter xlFilterInPlace, unique:=True
        .[M:M].SpecialCells(xlCellTypeVisible).Copy Sh.[A1]
        .[N:N].SpecialCells(xlCellTypeVisible).Copy Sh.[C1]
        .ShowAllData
        DerLig = .Cells(Rows.Count, 1).End(xlUp).Row
        For Each c In Sh.Range(Sh.[A2], Sh.Cells(Rows.Count, 1).End(xlUp))
            c.Offset(, 1).FormulaArray = _
            "=MAX(('TABLESPACES_DATA'!A2:A" & DerLig & "=TABLESPACES!A" & _
                c.Row & ")*('TABLESPACES_DATA'!C2:C" & DerLig & "=TABLESPACES!C" & _
                c.Row & ")*TABLESPACES_DATA!B2:B" & DerLig & ")"
        Next c
        .[M:N].Clear
    End With
    Sh.[B:B].Value = Sh.[B:B].Value
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 09h03   #9
Invité de passage
 
Inscription : janvier 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 32
Points : 4
Points : 4
Par défaut Un grand merci

Bonjour,
Je n'ai pas eu le temps de te remercier donc un grand merci !


cdt,
dosy07
dosy07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h25.


 
 
 
 
Partenaires

Hébergement Web