Tableau VBA: feuilles Excel par données d'une colonne
Hello hello,
J'aurai besoin d'un coup de main! Voici mon souci du moment:
Je souhaite créer une commande VBA utilisant les TABLEAUX (hors je n'ai pas vraiment de connaissance dessus), à partir d’une feuille présentant plusieurs informations et qui me permettra de créer autant de sheets différentes par information présente dans cette colonne. Ici, il s'agit de lieux.
Je mets ça en pièce jointe.
Je souhaite effectuer la même commande mais avec une colonne différente, par personne. Une macro qui créerait donc autant de feuille que de nom de personnes présentes dans cette colonne (ici que 2 mais pouvant croitre rapidement avec le temps).
Il s'agit de 2 commandes que j'ai déjà créé (et qui fonctionnent) avec l'option RECORDING+bidouillage.. SAUF QUE il se peut que certains des éléments évoluent (nouveaux lieux, nouvelles personnes). Je devrais donc rajouter des lignes de codes manuellement... Ce n'est pas vraiment ce qu'on appel un outil "durable"...
J'aimerai juste que les commandes créent des feuilles automatiquement en fonction des nouveaux éléments présents dans la colonne et non des informations que j'aurai près renseigné.
Cela donne pour la 1er commande - commande en fonction de LIEUX:
Sub Location()
'
' Location Macro
'
Range("B1:J1").Select
Selection.AutoFilter
ActiveSheet.Range("$B$1:$J$7042").AutoFilter Field:=9, Criteria1:= _
"Barangay 101"
Columns("B:J").Select
Selection.Copy
Columns("A:A").Select
Worksheets.Add(, Sheets(Sheets.Count)).Name = ("Barangay 101")
ActiveSheet.Paste
Range("B:B,F:F,G:G").Select
Selection.Delete Shift:=xlToLeft
Application.CutCopyMode = False
Range("A:I").EntireColumn.AutoFit
Idem pour tout les autres lieux!
End Sub
Maintenant pour la 2ème commande - en fonction de NOM de personnes:
Sub WeeklySheet()
'
' WeeklySheet Macro
'
' Positionnement sur la feuille Matrice qui sera copiée tous les jours
Sheets("Result").Select
Columns("B:K").Select ' Sélection des colonnes B à K
Selection.Copy ' Copie
ActiveSheet.Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select ' Positionnement du curseur en A1
Worksheets.Add(, Sheets(Sheets.Count)).Name = "Gerald's week" ' Ajout d'une nouvelle feuille
ActiveSheet.Paste ' Collage de la feuille copiée précédemment
Range("A1:I1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$I$7042").AutoFilter Field:=8, Criteria1:="gerald"
Idem pour l'autre personne
End Sub
Idéalement, j'aimerai bien qu'on m'oriente sur un "cours" ou explications qui me permettrait par la suite d'utiliser par mes propres moyens les tableaux VBA pour approfondir mon outil..
Merci à celles et ceux qui s’arrêterons pour m’aider sur mon problème!
Bonne continuation aux autres!
A+
Bonjour,
Une procédure à tester sous Mac.
J'ai mis tes données sous forme de tableau.
A te relire.
Cdlt.
Hello Jean-Eric!
Merci beaucoup, la procédure fonctionne pour les recorders!
Toutefois, 3 questions :
- je n'ai pas réussi à créer la macro soeur (pour la "location"). J'ai juste modifié le numéro de colonne dans ta procédure et rajouter juste un chiffre au nom de ta macro mais cela n'amène rien.. As-tu une idée?
- la finalité de l'outil doit pouvoir fonctionner sous Windows, hors effectivement je travail personnellement sous Mac. Je pourrais tester cela demain sur Windows mais qu'elle doit être la modification apporté pour que cela soit compatible Mac/Windows stp?
- ta procédure efface automatiquement les feuilles présentent du fichier Excel. Comment faire pour ne pas exécuter cette commande? Je souhaite imbriquer ta commande dans un fichier Excel comportant plusieurs feuilles qui resteront "fixe". Quand j'exécute la macro, elles sont effacées..
Merci de ton aide!
Bonne journée