je suis débutant dans le sujet et dans le forum d'ailleur, et suis ravis d'y participer
mon sujet:
sur une feuille excel je présente un tableau avec comme titre colonne: Semaine, Nature , Lieu, Observation.
dans semaine on retrouve (32,34,35,.....52) Nature (Forêt, Aquatique......) Lieu(Bordeaux, Paris...) observation (cyclisme, Natation....)
je recherche a faire une macro me permettant de trier mes données, elle me demanderais sous forme input box de rentrer un N° de semaine puis me retourner les résultats obtenus sur une nouvelle feuille en reprenant les titres de colonnes (en sachant qu'il peut exister plusieurs lignes avec le même N° de semaine)
le même principe qu'il filtre automatique ou éloboré sous Excel mais sous forme macro
mon Problème:
étant nouveau dans le domaine je suis en difficulté: en voici le code que j'ai essayé de faire:
code: Sub tri_semaine()
Sheets.Add
ActiveSheet.Name = "Resultat_Semaine_Choisie"' création d'une feuille nouvelle nommée : Resultat_Semaine_Choisie
' recopie du titre des données situées en A5, B5, C5, D5 de la feuil1
Range("A5").Select
ActiveCell.FormulaR1C1 = "=liste_exercé!RC"
Range("A1:B1").FillRight
J'arrive a créer le nouvelle feuille nommée Resultat_semaine_choisie, sur celle ci je retrouve bien mes différentes entêtes de tableau, j'ai également l'inputBox me demandant de choisir ma semaine et le problème se trouve après; j'arrive pas à filtrer le tableau pour insérer dans la nouvelle feuille le ou les résultats attendus
j'avoue que ton code me laisse énormément perplexe...
Pourquoi passer par l'écriture de formules dans les cellules pour seulement recopier un titre?
De plus, tu fais référence à une Sheets("Feuil1") à la fin de ton code, alors que la feuille sur laquelle tu veux travailler s'appelle Sheets("liste_exercé").
Evite également les accents dans les noms de feuille, ou les noms de contrôle...
Un petit code qui me semble plus judicieux (mais je peux me tromper)...
Sub tri_semaine()
Dim reponse As Integer
Dim i As Integer
Sheets.Add
'ATTENTION la feuille ne doit pas déjà exister, sinon la macro plante!!
ActiveSheet.Name = "Resultat_Semaine_Choisie" ' création d'une feuille nouvelle nommée : Resultat_Semaine_Choisie
' recopie du titre des données situées en A5, B5, C5, D5de la feuil1
ActiveWorkbook.Worksheets("Resultat_Semaine_Choisie").Range("A5:D5").Value = ActiveWorkbook.Worksheets("liste_exercé").Range("A5:D5").Value
' choix semaine
reponse = InputBox("choisir la semaine")
'initialisation des variables de boucle
i = 6
j = 6
'boucle de copie
While ActiveWorkbook.Worksheets("liste_exercé").Range("A" & i).Value <> ""
'test de la valeur de la colonne semaine
If ActiveWorkbook.Worksheets("liste_exercé").Range("A" & i).Value = reponse Then
ActiveWorkbook.Worksheets("Resultat_Semaine_Choisie").Range("A" & j & ":D" & j).Value = ActiveWorkbook.Worksheets("liste_exercé").Range("A" & i & ":D" & i).Value
j = j + 1
End If
i = i + 1
Wend
End Sub
A améliorer bien sur (gestion des entrées non numériques de l'inut box, test de l'existence de la feuille résultat,...) mais ça te fait un bonne base pour commencer.
Tubafat Avant d'imprimer, pensez à l'environnement
Tu pourrais aussi utiliser la méthode du filtre comme tu as dit ...
Il te suffit d'utiliser l'enregistreur de macro, regarder le code généré et l'adapter avec un InputBox.
bonjour
merci pour ton aide je comprend deja la facon de faire!
je viens d'essayer ta facon de voir mais il dois y avoir un problème à partir de la boucle car ça me génére un code 9
je retrouve le résultat que j'avais auparavant.
je regarderais un peu plus un détail cet aprem et te dirais quoi!