Bonjour à tous,
Au bureau, je viens de changer de machine et suis passé du monde Windows 7 à Windows 10. À cette occasion, mon employeur a migré toutes nos machines sur Office 365.
Je bute sur 2 problèmes et je ne trouve pas de réponse sur le Net. Probablement parce que je ne pose pas bien la question.
Dans un de mes tableaux Excel j’écris en tête « semaine du lundi xx yyyy au dimanche zz yyyy » que tout le monde a pris l’habitude de lire. J’utilise quelques fonctions d’Excel « "Semaine du " & TEXTE(K$2;"jjjj") & " " & JOUR(K$2) & " " &TEXTE(K$2;"mmmm") & " au " & TEXTE(EA2;"jjjj") & " " & JOUR(EA2) & " " &TEXTE(EA2;"mmmm") ».
Ce qui donnait « Semaine du lundi 2 mars au dimanche 8 mars ». Et bien, en changeant d’Excel, ça devient « Semaine du jjjj 2 march au jjjj 8 march ». Et ensuite tous les intitulés de jours sont en Anglais « Monday, Tuesday, etc. ». Bien entendu je suis allé dans le sous-menu « langue » des options. J’ai enlevé toute allusion à l’Anglais. Mais rien ne change.
Probablement existe-t-il une solution en corrigeant les formats des cellules concernées ou les formules (mettre « dddd » au lieu de « jjjj » corrige en partie => le « jjjj » devient « monday »). Mais ce sera long, peu sûr et fastidieux. Il existe sûrement un petit sous-menu ou une case à cocher qui règle le problème. Si l’un de vous sait, merci d'avance pour cette astuce.
L’autre anomalie est plus complexe. J’avais trouvé sur votre site (je crois) une solution pour insérer une image d’une partie d’un tableau Excel dans un Userform à travers des déclarations en début de module de la forme :
Public Declare Function GetTempFileNameA Lib "Kernel32" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Declare Function GetClipboardData Lib "user32" (ByVal uFormat As Long) As Long
Public Declare Function CopyEnhMetaFileA Lib "gdi32" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
Public Declare Function DeleteEnhMetaFile Lib "gdi32" (ByVal hDC As Long) As Long
Puis, grâce à l’appel suivant :
GetTempFileNameA Environ("TMP"), "", 0, FicTmp
FicTmp = Left$(FicTmp, InStr(FicTmp, vbNullChar) - 1)
ongHebdo.Range(Cells(1, 1), Cells(24, 78)).CopyPicture
OpenClipboard 0
DeleteEnhMetaFile CopyEnhMetaFileA(GetClipboardData(14), FicTmp)
CloseClipboard
Image.Picture = LoadPicture(FicTmp)
une photo de la zone définie s’affiche dans la fenêtre image d’un Userform.
Le nouvel Excel ne tolère pas cette écriture de Function en début de module.
Le programme fonctionne si je passe en commentaire ces quelques lignes du début, sauf, bien entendu, l’appel de l’image.
C’est donc probablement le principe de déclaration en début de module qui n’est plus accepté dans la dernière version d’Excel. Quelqu’un en connaît-il la raison ?
D'avance merci pour votre aide de pros
Au bureau, je viens de changer de machine et suis passé du monde Windows 7 à Windows 10. À cette occasion, mon employeur a migré toutes nos machines sur Office 365.
Je bute sur 2 problèmes et je ne trouve pas de réponse sur le Net. Probablement parce que je ne pose pas bien la question.
Dans un de mes tableaux Excel j’écris en tête « semaine du lundi xx yyyy au dimanche zz yyyy » que tout le monde a pris l’habitude de lire. J’utilise quelques fonctions d’Excel « "Semaine du " & TEXTE(K$2;"jjjj") & " " & JOUR(K$2) & " " &TEXTE(K$2;"mmmm") & " au " & TEXTE(EA2;"jjjj") & " " & JOUR(EA2) & " " &TEXTE(EA2;"mmmm") ».
Ce qui donnait « Semaine du lundi 2 mars au dimanche 8 mars ». Et bien, en changeant d’Excel, ça devient « Semaine du jjjj 2 march au jjjj 8 march ». Et ensuite tous les intitulés de jours sont en Anglais « Monday, Tuesday, etc. ». Bien entendu je suis allé dans le sous-menu « langue » des options. J’ai enlevé toute allusion à l’Anglais. Mais rien ne change.
Probablement existe-t-il une solution en corrigeant les formats des cellules concernées ou les formules (mettre « dddd » au lieu de « jjjj » corrige en partie => le « jjjj » devient « monday »). Mais ce sera long, peu sûr et fastidieux. Il existe sûrement un petit sous-menu ou une case à cocher qui règle le problème. Si l’un de vous sait, merci d'avance pour cette astuce.
L’autre anomalie est plus complexe. J’avais trouvé sur votre site (je crois) une solution pour insérer une image d’une partie d’un tableau Excel dans un Userform à travers des déclarations en début de module de la forme :
Public Declare Function GetTempFileNameA Lib "Kernel32" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Declare Function GetClipboardData Lib "user32" (ByVal uFormat As Long) As Long
Public Declare Function CopyEnhMetaFileA Lib "gdi32" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
Public Declare Function DeleteEnhMetaFile Lib "gdi32" (ByVal hDC As Long) As Long
Puis, grâce à l’appel suivant :
GetTempFileNameA Environ("TMP"), "", 0, FicTmp
FicTmp = Left$(FicTmp, InStr(FicTmp, vbNullChar) - 1)
ongHebdo.Range(Cells(1, 1), Cells(24, 78)).CopyPicture
OpenClipboard 0
DeleteEnhMetaFile CopyEnhMetaFileA(GetClipboardData(14), FicTmp)
CloseClipboard
Image.Picture = LoadPicture(FicTmp)
une photo de la zone définie s’affiche dans la fenêtre image d’un Userform.
Le nouvel Excel ne tolère pas cette écriture de Function en début de module.
Le programme fonctionne si je passe en commentaire ces quelques lignes du début, sauf, bien entendu, l’appel de l’image.
C’est donc probablement le principe de déclaration en début de module qui n’est plus accepté dans la dernière version d’Excel. Quelqu’un en connaît-il la raison ?
D'avance merci pour votre aide de pros