GÉNÉRATION PAR MACRO DE FEUILLES EN FONCTION DE (2) MULTI-CR
Bonjour à tous,
Il s’agit de mon premier post !
Pour commencer je tiens à remercier la communauté de ce forum qui m’a permis d’accomplir pas mal de commande sur VBA afin de me faciliter la vie sur des sujets de traitement de données. Mais voilà, je suis tombé sur un os... Je m’explique.
Je souhaite créer une commande multi-critères, à partir d’une feuille présentant plusieurs informations (dates, personnes, account number, etc.) qui me permettra de créer autant de sheets différentes par personnes et par différentes dates présentes sur la principale feuille comprenant les informations (sur 5 jours). Je mets ça en pièce jointe.
Ainsi après la commande on obtiendrait comme nouvelles feuilles, après la principale :
Gerald 09-05-2017 / Gerald 08-05-2017 / etc… / Marcy 09-05-2017 / Marcy 08-05-2017 / etc…
(la forme des dates étant Anglo-Saxonne).
Pour l’instant j’ai « effectué » cette démarche uniquement en inscrivant précisément dans ma commande les dates. Je n’arrive pas à désigner la date la plus ressente comme une valeur X et en créer une feuille selon un autre critère (la personne). Encore moins effectuer la recherche X-1 pour les prochaines feuilles. Aucun automatisme donc.
Soyez indulgent, il s’agit ici de mix entre un enregistrement de macro ainsi que des commandes prisent sur différents sites.
Cela donne pour les 2ème jour (5/9/2017 & 5/8/2017) pour la première personne (« gerald ») :
Sub SheetsCreation()
'DAY1GERALD
' Positionnement sur la feuille Matrice qui sera copiée tous les jours
Sheets("Result").Select
Columns("A:D").Select ' Sélection des colonnes A à D
Selection.Copy ' Copie
ActiveSheet.Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select ' Positionnement du curseur en A1
DateJour = Range("A2").Value
' Extraction de JJ-MM-AAAA Le nom de feuille n'accepte pas les /
JourDate = Left(DateJour, 2) & "-" & Mid(DateJour, 4, 2) & "-" & Mid(DateJour, 7, 4)
Worksheets.Add(, Sheets(Sheets.Count)).Name = ("Gerald " & JourDate) ' Ajout d'une nouvelle feuille
ActiveSheet.Paste ' Collage de la feuille copiée précédemment
Range("A1:D1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$D$7042").AutoFilter Field:=4, Criteria1:="gerald"
ActiveSheet.Range("$A$1:$D$7042").AutoFilter Field:=1, Operator:= _
xlFilterValues, Criteria2:=Array(2, "5/9/2017")
Range("A1").Select
'DAY2GERALD
' Positionnement sur la feuille Matrice qui sera copiée tous les jours
Sheets("Result").Select
Columns("A:D").Select ' Sélection des colonnes A à D
Selection.Copy ' Copie
ActiveSheet.Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select ' Positionnement du curseur en A1
DateJour = Range("A2").Value - 1
' Extraction de JJ-MM-AAAA Le nom de feuille n'accepte pas les /
JourDate = Left(DateJour, 2) & "-" & Mid(DateJour, 4, 2) & "-" & Mid(DateJour, 7, 4)
Worksheets.Add(, Sheets(Sheets.Count)).Name = ("Gerald " & JourDate) ' Ajout d'une nouvelle feuil
ActiveSheet.Paste ' Collage de la feuille copiée précédemment
Range("A1:D1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$D$7042").AutoFilter Field:=4, Criteria1:="gerald"
ActiveSheet.Range("$A$1:$D$7042").AutoFilter Field:=1, Operator:= _
xlFilterValues, Criteria2:=Array(2, "5/8/2017")
Range("A1").Select
'
'DAY3GERALD
‘
etc…
Idem pour Marcy
End Sub
Merci à celles et ceux qui s’arrêterons pour m’aider sur mon problème!
Bonne continuation aux autres!
A+
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Bye !
Bonjour gmd,
Merci beaucoup pour ton aide!!
Alors j'ai testé ta macro et j'ai le message d'erreur suivant qui s'affiche pour la ligne - Set dicoN = CreateObject("Scripting.Dictionary") - :
"Erreur d'exécution « 429 »:
Un composant ActiveX ne peut pas créer d'objet"
Je ne te cacherai pas que ton code est plus compliqué que ce que j'avais essayé de faire donc je ne comprend pas vraiment d'où peut provenir l'erreur :/
Merci pour ta réponse !
A+
Bonjour
Flute ! Je n'avais pas remarqué que tu travaillais sous MAC.
J'ai dû reprendre la macro pour essayer d'adapter le code.
Voici une nouvelle version mais ... sans garantie !
Bye !
Bonjour gmb,
WOW! Un gros merci, la macro marche au top, c'est impressionnant !
Je te MP pour quelques questions perso sur ton code si tu n'y vois pas d'inconvénient à y répondre!
A+ gmb