Redirection macro sur onglet
Bonjour,
J'ai crée une macro dont l'objectif est d'afficher les données de certain onglet présents dans des fichiers eux mêmes présents dans un dossier.
L'objectif de tout ça est que sur un fichier principale Excel ou est présent un Template. La macro crée un onglet pour chacun des fichiers présents dans mon dossier et copie le Template de l'onglet "Template" sur chaque nouvel onglet crée.
Tout fonctionne jusque là et j'arrive à récupérer les données que je souhaite en faisant un système de lien.
Maintenant là ou j'avais un problème que j'ai réussi partiellement à résoudre c'est dans le cas d'une actualisation des données, ou, si on rajoute d'autre fichier dans le dossier cité ci-dessus la macro n'arrive pas à faire son travail correctement si je la relance.
Elle va mettre le Template de l'onglet "Template" sur le nouvel onglet crée correspondant au fichier, (celui-ci sera nommé X pour plus de compréhension), mais va afficher les valeurs récupérées du fichier correspondant dans le mauvaise onglet (à chaque fois dans le premier onglet exemple A).
J'espère avoir été compréhensible sur l'origine de mon problème, voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
Sub qsd()
Dim nomFeuille As String, monFichier As String, chemin As String
Dim num_onglet As Integer
Set wb = Workbooks(ThisWorkbook.Name)
chemin = ThisWorkbook.Path & "\test2\"
monFichier = Dir(chemin & "*.xlsx", vbNormal)
Do While monFichier <> ""
'Ici je cr?e un onglet pour chaque nom de fichier dans mon dossier
nomFeuille = Split(Split(monFichier, "-")(2), "_")(0)
For Each sh In ThisWorkbook.Sheets
If sh.Name = nomFeuille Then
'Sheets("Template").Range("A1:AH127").Copy Destination:=sh.Range("A1")
GoTo SUIVANT
End If
Next
'Si on arrive ici, c'est que la feuille nomFeuille n'existe pas encore
Sheets.Add After:=Sheets(Sheets.Count) 'Devient la feuille active
ActiveSheet.Name = nomFeuille
Sheets("Template").Range("A1:AH127").Copy Destination:=Sheets(nomFeuille).Range("A1")
num_onglet = num_onglet + 1
Sheets(8 + num_onglet).Activate
Sheets(8 + num_onglet).Range("A1").FormulaR1C1 = nomFeuille
'MsgBox "vérif"
'Recuperation des donn?es des FIT_MECH
For i = 8 To 154
Select Case nomFeuille
Case "T1"
'Temps 'Ici je crée un lien pour aller récupérer les valeurs dans l'onglet Test1 de mon fichier, de mon dossier.
j = 3
Cells(i - 4, j - 2) = "='" & chemin & "[" & monFichier & "]Test1'!R" & i & "C" & j:
Case Else: 'Tout ce qui n'est pas l'onglet T1
'Temps
j = 3
Cells(i - 4, j - 2) = "='" & chemin & "[" & monFichier & "]Test'!R" & i & "C" & j:
End Select
Next
'Permet de passer au fichier suivant en vidant le nomFicheir
SUIVANT:
monFichier = Dir
Loop
End Sub |
Merci pour votre aide.