arthrax
Messages postés35Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention31 décembre 2023
-
7 déc. 2006 à 16:26
arthrax
Messages postés35Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention31 décembre 2023
-
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
A voir également:
Créer un tableau à partir de données filtrées sous excel
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 9 déc. 2006 à 00:24
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...
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 7 déc. 2006 à 16:33
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:
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 8 déc. 2006 à 11:52
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
arthrax
Messages postés35Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention31 décembre 2023 8 déc. 2006 à 16:09
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.
arthrax
Messages postés35Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention31 décembre 2023 8 déc. 2006 à 16:17
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
arthrax
Messages postés35Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention31 décembre 2023 11 déc. 2006 à 13:21
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