Redaction Boucle dans une macro

Fermé
Arthurdrt - 24 août 2021 à 11:03
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 - 24 août 2021 à 12:17
Bonjour j'ai ecrit une partie du programme pour vous donner une idée de mon besoin.

J'aurai besoin qu'en cliquant sur un bouton, je lance une macro qui reconnait le nombre de differentes "Area" et copie toutes les données relatives à celles-ci dans une nouvelle feuille par Area.

Concretement, les rapports sont extrait d'un logiciel externe au format Excel. Donc la disposition des informations est identique à chaque extraction mais le nombre de données par Area vont varier.

Exemple de rapport ci dessous:

Manchester - 19h30 - 20h00 - comments - email -number - ...
Manchester - 19h40 - 22h25 - comments - email -number - ...
Paris - 05h30 - 10h00 - comments - email -number - ...
Wimbledon - 09h00 - 13h21 - comments - email -number - ...

(Je m'arrete là, mais dans mon excel, les rapports sont bien plus long et aujourd'hui les Area sont manchester, Paris et Wimbledon mais demain elles seront différentes donc je ne peux pas nommer les Area dans mon codage).


Dans mon codage ci-dessous, je crée une liste des differentes "Area" grâce au filtre "sans doublons". Grace a cela, je peux filtrer les informations par Area sans les nommer.

Ensuite, comme vous pouvez le constater, je filtre les données par Area et les copie une par une sur une nouvelle feuille. Mais cela n'est pertinent car je ne peux pas prévoir combien d'Area il y aura. J'ai pensé à faire une boucle mais je n'y arrive pas à faire comprendre à Excel d'effectuer cet boucle jusqu'à ce qu'il n'y ait plus d'Area à traiter.

Pouvez-vous m'aider ?


Sub Areadistinction()
'
' Areadistinction Macro
'

'Distinctions des differentes Area

Sheets("Close Calls").Select
ActiveSheet.ShowAllData
Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("O1"), Unique:=True

'Filtrage de la premiere Area

ActiveSheet.Range("$A$1:$L$43").AutoFilter Field:=1, Criteria1:=Range("O2")

'Copier/Coller de la premiere Area

Sheets("Sheet1").Copy Before:=Sheets(2)
Sheets("Close Calls").Select
Sheets("Sheet1 (2)").Visible = True
Sheets("Close Calls").Select
Columns("A:L").Select
Selection.Copy
Sheets("Sheet1 (2)").Select
Columns("A:A").Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit

'Filtrage de la deuxieme Area

Sheets("Close Calls").Select
ActiveSheet.ShowAllData
ActiveSheet.Range("$A$1:$L$43").AutoFilter Field:=1, Criteria1:=Range("O3")

'Copier/Coller de la deuxieme Area

Sheets("Sheet1").Copy Before:=Sheets(2)
Sheets("Close Calls").Select
Sheets("Sheet1 (3)").Visible = True
Sheets("Close Calls").Select
Columns("A:L").Select
Selection.Copy
Sheets("Sheet1 (3)").Select
Columns("A:A").Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
A voir également:

1 réponse

yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 Ambassadeur 1 538
24 août 2021 à 12:17
bonjour,
peux-tu continuer la discussion en cours, au lieu d'en ouvrir une nouvelle?
0