Bonjour,
Je me permets de vous solliciter car j’aurais besoin de votre aide concernant une macro. Je possède un fichier Excel partagé avec plusieurs onglets :
- Un onglet « synthèse » possédant un certain nombre de colonnes (de la colonne A à S)
- Plusieurs autres onglets (pour différentes personnes) possédant les mêmes colonnes que l’onglet de synthèse.
L’objectif serait que chaque personne ait la possibilité de remplir ses données dans l’onglet qui lui est associé et qu’en fin de journée (par exemple) je puisse avec l’aide d’une macro récupérer l’ensemble des données de chaque onglet afin de les coller (les unes à la suite des autres) dans l’onglet de synthèse.
Je sais que via l’enregistreur de macro il est possible de « régler » ce type d’action, ceci étant je me pose plusieurs questions notamment en ce qui concerne la sélection des données… Dans mon fichier je souhaite pouvoir garder au moins l'onglet de synthèse rempli jour après jour ce n'est pas grave si après chaque lancement de la macro les autres onglets (personnes1/2/3/4/5 soient effacés sauf la 1ere ligne de chaque). Ainsi lorsque je vais devoir importer les données il faudra que je puisse sélectionner la ligne d’arrivée (à partir de quelle ligne de l’onglet de synthèse je colle mes données).
Pour illustrer mon idée :
En admettant avoir lancé la macro le jour d’avant (N-1) et que mon onglet de synthèse possède 30 lignes de rempli il faudra que les nouvelles données importées du jour (N) soient collées dans l’onglet de synthèse à partir de la ligne 31 etc… Je ne sais pas si je suis clair et encore moins si cela est possible…
Etant novice sous VBA j’ai essayé de chercher de mon coté avant de vous importuner et j'ai pu trouver ça:
- le problème de ce code est que dans l’éventualité où des données sont déjà présente dans l'onglet de synthèse (avant la création de la macro) celles-ci sont écrasées...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Public x As Integer Sub Extraction() Application.ScreenUpdating = False For x = 2 To Sheets.Count derlgn = F_MaDerligne("A") With Worksheets(x).Activate If Range("T1") < derlgn Then derlgnsynthese = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(Range("T1") + 1, 1), Cells(derlgn, 19)).Copy Destination:=Worksheets(1).Cells(derlgnsynthese + 1, 1) Range("T1") = derlgn End If End With Next x Worksheets(1).Select Application.ScreenUpdating = True End Sub Function F_MaDerligne(lalettre) F_MaDerligne = Worksheets(x).Cells(Rows.Count, lalettre).End(xlUp).Row End Function
- dans le cas où je souhaiterai rajouter d'autres onglets (sans lien avec les données précédentes par exemple pour faire des stats etc...) je pense que cela pourrait poser un soucis car dans le code VBA le nom des feuilles n'est pas mentionnés du style Sheets("Personne 1").Select du coup je me dis que si je rajoute des onglets cela va copier les données des autres feuilles sans liens avec les précédentes.
Je sais que mon post est un peu long j'ai essayé de donner le maximum d'infos peut être que si quelqu'un passe par là il ou elle pourra m'aider ^^ dans le cas contraire je continuerai de chercher,
merci pour vos retour,
PS: en piece jointe le fichier en question
Partager