Créer un tableau à partir de données filtrées sous excel [Résolu]

Messages postés
30
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
3 décembre 2018
- - Dernière réponse : arthrax
Messages postés
30
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
3 décembre 2018
- 11 déc. 2006 à 13:21
Bonjour,

J'ai un historique de donnée d'applicationselon le mois et l'année dans un fichier excel.

Mon but est de faire un tableau avec les applications présente au dernier mois.

J'ai un fichier excel avec sur la feuille 1 : les données et la feuille 2 : la présentation finale dont une partie du tableau qui doit être générer à partir des données de la feuille 1.

La difficultée est qu'il  faut prendre tous les applications du dernier mois et penser aussi au fait que d'un mois sur l'autre des applications peuvent être ajouter ou retirer.


Comment générer un tableau automatiquement à partir de l'historique comprenant que les applications du derniers mois ?
Et comment je peux joindre le fichier à mon message pour mieux illustrer ma problématique ?

Merci

Arthrax
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
3
Merci
Avec le code que tu donnes, tu colles les formules. C'est ce que tu veux ?

Pour la mise en forme
Selection.PasteSpecial Paste:= xlPasteFormats

Pour coller seulement les valeurs
Selection.PasteSpecial Paste:=xlPasteValues

Et tu peux mettre les deux à la suite pour coller les valeurs et le format
ou les formules et le format...

Pour trouver le dernier mois, il faudra que tu vérifies l'année, au besoin, puis le mois avec une boucle pour déterminer lequel est vraiment le dernier.
Ou si le dernier mois est celui en cours, tu peux utiliser
DernierMois = Month(Date)
Selection.AutoFilter Field:=10, Criteria1:=DernierMois

ou encore
DernierMois = InputBox "Quel est le mois que vous voulez ?  (1 à 12)"
If IsNumeric(Derniermois) and Derniermois > 0 and DernierMois <13 then
Selection.AutoFilter Field:=10, Criteria1:=DernierMois
Comme ça tu pourrais filtrer selon le mois demandé...

Finalement, Range("D1").Activate ne sert probablement à rien. Il arrive à Excel de mettre des choses inutiles quand on utilise l'enregistreur de macro. Et quelquefois, c'est nous qui faisons des actions inutiles...

MPi

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_MPi
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
5
0
Merci
Salut oui c'est sur que là on aurait besoin d'une illustration! Comme ça avec la description on a du mal à voir ce que tu veux! Essaye un copier coler d'une partie de tes feuilles un et deux pour qu'on puisse au moins voir la disposition colonnes, lignes...
Et sinon est ce que tu as déjà essayé de faire un bout de code? Et tu passes par VB6 ou VBA?

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Commenter la réponse de drikce06
Messages postés
30
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
3 décembre 2018
0
Merci
Merci d'avoir répondu  Drikce 06.

Pour plus de clarté, j'ai uploadé un fichier exemple que tu peux récupérer ici :

http://www.yousendit.com<wbr>/download/mpbfmXASUTl5TA%3D%3D</wbr>

Je débute en vba (je suis plus C) donc je ne sait pas par où commencer, c'est pour ça qu'un début de code va grandement m'aider.

Merci
Arthrax
Commenter la réponse de arthrax
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
Tu pourrais utiliser un filtre automatique dans la feuille1 sur la colonne Mois et, éventuellement sur d'autres colonnes. Il te suffirait alors de copier/coller les données affichées dans la Feuille2, à partir de la ligne 3.

Au préalable, tu effaces les anciennes données

MPi
Commenter la réponse de cs_MPi
Messages postés
30
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
3 décembre 2018
0
Merci
J'ai suivi ton idée Mpi et j'ai commencé à coder un debut de code avec l'aide de l'enregistrement mais j'ai des petits soucis :

Sub app()
    Range("J1").Select 'selection de la colonne mois
    Selection.AutoFilter 'activer le filtre auto
    Selection.AutoFilter Field:=10, Criteria1:="11" 'ici j'ai mis le critère sur le 11emois
    'mais le probleme c'est qu'il doit automatiquement prendre le dernier mois
    Range("B:B,D:H").Select 'selectionner les colonnes B et de D a H
    Range("D1").Activate 'a quoi sert cette ligne ?
    Selection.Copy 'copie des valeurs
    Sheets("Feuil2").Select
    Range("H5").Select 'colle les valeurs
    Sheets("Feuil1").Select
    Application.CutCopyMode = False
    Selection.AutoFilter 'desactiver le filtre auto
End Sub

Et je ne sais pas non plus comment garder la mise en forme source lorsque je colle les valeurs dans la feuille 2 ??
Car les valeurs doivent apparaitre sous forme de tableau que j'ai créé au préalable.

Merci
Arthrax
Commenter la réponse de arthrax
Messages postés
30
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
3 décembre 2018
0
Merci
Je viens de trouver pour garder la mise en forme donc mise a jour du code :

Sub app()
    Range("J1").Select 'selection de la colonne mois
    Selection.AutoFilter 'activer le filtre auto
    Selection.AutoFilter Field:=10, Criteria1:="11" 'ici j'ai mis le critère sur le 11emois
    'mais le probleme c'est qu'il doit automatiquement prendre le dernier mois
    Range("B:B,D:H").Select 'selectionner les colonnes B et de D a H
    Range("D1").Activate 'a quoi sert cette ligne ?
    Selection.Copy 'copie des valeurs
    Sheets("Feuil2").Select
    Range("H5").Select 'colle les valeurs
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _

    SkipBlanks:=False, Transpose:=False  'Garder la mise en forme
    Sheets("Feuil1").Select
    Application.CutCopyMode = False
    Selection.AutoFilter 'desactiver le filtre auto
End Sub
Commenter la réponse de arthrax
Messages postés
30
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
3 décembre 2018
0
Merci
Oui pour l'instant je colle les formules.
J'ai enfin réussis , pour trouver le dernier mois j'ai fait une boucle car ce n'est pas forcement le mois en cours et car tout doit etre automatisé.

Un grand merci à Drikce et surtout à MPi pour vos aides

Je colle mon code au cas où ça pourrait servir à quelqu'un d'autre :

Sub Appli()

Dim CelluleCourante As Range
    Dim CelluleSuivante As Range
    Dim DernierMois As Range
    Dim DerniereAnnee As Range
   
'Tri pour trouver le dernier mois
    Set CelluleCourante = ActiveSheet.Range("BB4") 'BB4=dernier mois (déjà trier)
    Set DernierMois = CelluleCourante
    Do While Not IsEmpty(CelluleCourante) = True 'arret de la boucle si cellule vide
        Set CelluleSuivante = CelluleCourante.Offset(1, 0) 'descendre d'une ligne
        If CelluleSuivante.Value > CelluleCourante.Value Then
            Set DernierMois = CelluleSuivante
        End If
    Set CelluleCourante = CelluleSuivante 'passage à la ligne suivante
    Loop
   
'Tri por trouver la dernière année
    Set CelluleCourante = ActiveSheet.Range("BA4") 'BA4=dernière année (déjà trier)
    Set DerniereAnnee = CelluleCourante
    Do While Not IsEmpty(CelluleCourante) = True
        Set CelluleSuivante = CelluleCourante.Offset(1, 0)
        If CelluleSuivante.Value > CelluleCourante.Value Then
            Set DerniereAnnee = CelluleSuivante
        End If
    Set CelluleCourante = CelluleSuivante
    Loop
   
    Range("AW3").Select
    Selection.AutoFilter 'activer le filtre auto
    Selection.AutoFilter Field:=12, Criteria1:=DerniereAnnee 'critere du filtre
    Selection.AutoFilter Field:=13, Criteria1:=DernierMois
    Range("AQ:AQ,AS:AV,AX:AX").Select 'sélection des données à mettre dans le tableau
    Range("AX1").Activate
    Selection.Copy
    Range("BD3").PasteSpecial xlPasteValues
    Selection.AutoFilter 'désactiver le filtre auto
End Sub
Commenter la réponse de arthrax