Redaction Boucle dans une macro
Fermé
Arthurdrt
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Redaction Boucle dans une macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Aide a la redaction - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel récupérer couleur cellule sans macro ✓ - Forum Bureautique
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
peux-tu continuer la discussion en cours, au lieu d'en ouvrir une nouvelle?
peux-tu continuer la discussion en cours, au lieu d'en ouvrir une nouvelle?