Bonjour le Forum,
Je suis en train de copier des valeurs d'un classeur à un autre. Ma macro de base fonctionne lorsque j'ai une feuille qui existe d'ors et déjà dans mon classeur de destination. Ici la feuille de destination est identifié dans la variable Nom
J'aimerai pouvoir tester la présence de cette feuille Nom dans mon classeur de destination. Si elle est présente : la feuille est vidée de ses valeur. Si elle est abscente, je la crée. J'applique cette macro :
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
25
26 Sub CopieEntreClasseur() Application.DisplayAlerts = False Application.ScreenUpdating = False Dim Chemin As String Dim Chemintest As String Dim Source As Workbook Dim i As Byte Chemin = ThisWorkbook.Path Chemintest = Chemin & "\donnee.xlsm" Set Source = Application.Workbooks.Open(Chemintest) With Workbooks("donnee.xlsm") For i = 1 To .Sheets.Count If .Sheets(i).Name Like "*2016" Then With .Sheets(i) Nom = .Name Source1.Sheets(Nom).Range(.Cells(LigOpe, ColOpe), .Cells(EndRow, ColOpe)).Copy ThisWorkbook.Sheets(Nom).Cells(1, 1) End With End If Next i .Close End With End Sub
Je n'arrive pas à intégrer cette macro CreeOuReinitialiseFeuille dans ma procédure CopieEntreClasseur et faire le test dans la boucle For pour ne l'appliquer que lorsqu'il y a une aucurence de nom qui est trouvée. J'ai essayé comme ça :
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 Sub CreeOuReinitialiseFeuille(ByVal MaFeuille As String) Dim g As ChartObject For Each feuille In Worksheets If feuille.Name = MaFeuille Then For Each g In Worksheets(MaFeuille).ChartObjects g.Delete Next Worksheets(MaFeuille).Cells.ClearContents Exit Sub End If Next feuille Sheets.Add.Name = MaFeuille End Sub
Et d'autres manières qui ne sont pas cohérentes car la syntaxe n'est pas bonne. C'est comme dans mon exemple précédent : comment Excel peut savoir que c'est dans ce classeur qu'il faut travailler (le point n'est pas approprié ici).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 With Workbooks(resutlat.xlsm) .CreeOuReinitialiseFeuille (Nom) End With
Avez-vous une idée vers une piste vers laquelle se tourner?
Merci de votre aide
BlackMountain
Partager