Selection d'onglet selon son nom
salut à tous,
j'espère que vous allez bien,
je souhaite perfectionner ma macro que j'ai crée, et biensur avec vos aides,
ma macro faire un copier a partir d'un onglet d'un certain classeur, puis le colle dans un autre onglet d'un autre classeur,
les onglets du classeur destination se nomment : Données année, sahant que année est la variable année qui pourra prendre n'importe quelle année,
donc vu qu'on est en 2021, je souhaite que le collage se fait dans l'onglet Données 2021
je vous liasse mon code standard, je souhaite l'avoir svp en mode général, c'est a dire le collage se fait dans l'onglet qui correspond à l'année en cours
voici mon code:
'Ouvrir le fichier Reporting mensuel maintenance et l 'onglet Données aaaa de l'année en cours. Copier les cases Q4 à Q14
'Coller les valeurs des cases Q4 à Q14 du fichier TRAVAUX dans les lignes 4 à 14 du mois correspondant du fichier Reporting mensuel maintenance
Sub Copier_Q4_Q14()
Sheets("statistiques").Select
Range("q4:q14").Select
Selection.Copy
Dim WB_D As Workbook
Dim REP()
Dim A%
REP = Array("D") ' declaration des noms du disque
For A = 0 To UBound(REP)
Set WB_D = Workbooks.Open(REP(A) & ":\fichier travaux-macros\Nouveau dossier\Reportinggggg mensuel maintenance.xlsx")
Worksheets("données 2021").Cells(4, Month(Date) + 1).PasteSpecial xlPasteValues 'je veux un collage dans l'onglet "données année en cours"
WB_D.Close True
Sheets("statistiques").Select
Next A
End Submerci a tous
Bonjour Imad SIO
Alors plusieurs remarques avant de donner le code
1) Faire des "Select" ne sert à rien, sauf alourdir l'exécution du code
2) Si comme dans votre exemple, vous n'utilisez qu'un seul lecteur, déclaré un Array ne sert absolument à rien
3) Pour l'enregistrement dans un dossier spécifique de chaque utilisateur, on n'utilise pas cette méthode du Array
Sinon le voici
Sub Copier_Q4_Q14()
Dim WB_D As Workbook
Dim REP()
Dim A%
REP = Array("D") ' declaration des noms du disque
For A = 0 To UBound(REP)
Set WB_D = Workbooks.Open(REP(A) & ":\fichier travaux-macros\Nouveau dossier\Reportinggggg mensuel maintenance.xlsx")
' Copier les données
ThisWorkbook.Sheets("statistiques").Range("q4:q14").Copy
' Les coller dans le classeur ouvert, dans la feuille nommée, dans la cellule définie
WB_D.Sheets("données " & Year(Date)).Cells(4, Month(Date) + 1).PasteSpecial xlPasteValues 'je veux un collage dans l'onglet "données année en cours"
WB_D.Close True
Next A
End Sub@+
bonjour Bruno,
Vous m’avez mal compris
Pour le choix d’onglet, je veux que ça soit fait automatiquement,
C’est à dire, vu qu’on est en 2021, le collage se fait dans l’onglet données 2021
Et l’année prochaine je souhaite faire le même collage mais dans l’onglet données 2022 automatiquement,
Onglet données 2022 : est-il possible qu’il soit créé automatiquement comme celui de données 2021 ????
Merciii
Re,
Désolé, j'ai zappé cette notion vu que le code n'était pas correcte à mes yeux, je l'ai modifié
On peut le créer via VBA, reste à savoir quand ou comment on doit le faire
WB_D.Sheets.Add After:=WB_D.Sheets.Count
WB_D.ActiveSheet.Name = "Données 2022"@+
bruno, Re!
enfaite ton code marche a merveille, j'avais pas vu le détail que t'as modifié, c'est excellent,
pour l'ajout de l'onglet par exemple données 2022, je souhaite le rajouter par exemple au début de l'année 2021, et ça sera le meme chose pour données 2023 , et ainsi de suite
peux-tu me faire cela stp
merci
imad