Codename dans un autre workbook ?

Bonjour,

j'ai cherché à ouvrir un 2ème fichier excel à partir de mon premier pour copier des cellules du classeur juste ouvert vers le classeur ou se trouve la macro grâce à un Vlookup.

Suite à vos nombreux conseils, j'ai pris la bonne habitude d'utiliser le codename plutôt que le name, sauf qu'ici cela ne fonctionnais pas au départ, car excel utilisait la propriété Name au lieu du codename (la propriété name est le nom de l'onglet qui peut être renommé au contraire de codename qui ne peux pas être renomée pour info)...

Voila routine à utiliser que que cela fonctionne correctement :

Sub Button1_Click()

Dim fichier_A_ouvrir As String
Dim fichier_A_chercher_ouvrir As Workbook
Dim shFrom As Worksheet

fichier_A_ouvrir = Dir(ThisWorkbook.Path & "\" & "*training matrix*.xlsm")
Set fichier_A_chercher_ouvrir = Application.Workbooks.Open(ThisWorkbook.Path & "\" & fichier_A_ouvrir, True)

MsgBox GetSheetWithCodename("Feuil2", fichier_A_chercher_ouvrir).Range("A34").Value

On Error Resume Next
MsgBox "Texte : " & Application.VLookup("6.1", GetSheetWithCodename("Sheet2", fichier_A_chercher_ouvrir).Range("A34:B125"), 2, False)
On Error Resume Next
MsgBox "CINT : " & Application.VLookup(CInt("6.1"), GetSheetWithCodename("Sheet2", fichier_A_chercher_ouvrir).Range("A34:B125"), 2, False)

Application.ScreenUpdating = True
Application.DisplayAlerts = True
fichier_A_chercher_ouvrir.Close

End Sub

En rajoutant dans un module cette function :

Function GetSheetWithCodename(ByVal worksheetCodename As String, Optional wb As Workbook) As Worksheet
    Dim iSheet As Long
    If wb Is Nothing Then Set wb = ThisWorkbook ' mimics the default behaviour
    For iSheet = 1 To wb.Worksheets.Count
        If wb.Worksheets(iSheet).CodeName = worksheetCodename Then
            Set GetSheetWithCodename = wb.Worksheets(iSheet)
            Exit Function
        End If
    Next iSheet
End Function

Une petite contribution pour tous ceux qui prennent du temps içi pour aider tout le monde, merci encore à tous.

David

par dav999:

la propriété name est le nom de l'onglet qui peut être renommé au contraire de codename qui ne peux pas être renomée

pour info, les codename peuvent être renommés

à tester sur un nouveau classeur,

Sub Renomme_CodeName()
i = 0
For Each ws In ActiveWorkbook.Worksheets
    i = i + 1
    On Error Resume Next
    ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") = "XXX" & i
    On Error GoTo 0
Next ws
End Sub

Oui pardon, je voulais dire ne pas être modifiable aisément, il faut soit passer par un code, ou sinon aller des les propriétés de la feuille avec la fenêtre "développeur" pour afficher le code VBA.

Ca ne viendrait pas à l'idée des utilisateurs de mes fichiers, c'est pour cela que j'ai pris ce raccourci, mais tu as bien fait de rectifier.

Merci

Rechercher des sujets similaires à "codename workbook"