Bonjour à vous tous,
J'ai une macro dans Excel VBA que j'utilise depuis des décennies. Elle sert à convertir la valeur numérique d'une colonne en sa valeur alphabétique. Tout à coup elle me retourne une réponse nulle (vide). J'ai essayé toutes les solutions imaginables et inimaginables et rien n'y fait.
J'ai sur mon portable Windows 10 Famille 64 bits version 20H2, version du S.E. 19042.1466 et Office 365 avec Microsoft® Excel® pour Microsoft 365 MSO (Version 2112 Build 16.0.14729.20224) 32 bits1117. J'avais la version 64 bits et j'ai rétrogradé dernièrement à la version 32 bits, car plusieurs boutons de commande ActiveX ne fonctionnaient plus.
J'ai une tablette Surface 3 avec la version 32 bits 1116 et la macro fonctionne très bien sur celle-ci.
Je crois certainement qu'il y a une relation avec la rétrogradation de version d'Excel, ou entre une mise à jour vers la version 1117 versus la version 1116.
J'ai exécuté la réparation rapide d'Office dans « Paramètres », « Applis » et cela n'a rien changé.
J'ai ensuite exécuté la réparation complète en ligne d'Office dans « Paramètres », « Applis » et cela n'a rien changé.
J'ai maintenant la version d'Office 365 Microsoft® Excel® pour Microsoft 365 MSO (Version 2201 Build 16.0.14827.20028) 32 bits et la version de VBA 1118.
Mon petit bout de code est listé ici-bas. Rien de compliqué.
Au premier « Stop » la variable A contient la chaîne "A". C'est normal.
Au deuxième « Stop », la variable A devrait contenir la chaîne "AJ". Eh! bien non, la variable est vide.
Et ensuite la variable A ne veut plus accepter l'ajout d'aucune chaîne, sauf si on la réinitialise, mais toujours pas "AJ".
Quelqu'un a-t-il eu vent d'un problème similaire ou d'une réponse de Microsoft sur le sujet.
Merci à l'avance,
Christian
Private Sub TestTest()
Dim A As String, Z(1 To 3) As Integer
A = ""
Z(1) = 10
Z(2) = 1
Z(3) = 0
If Z(3) > 0 Then
A = Chr(64 + Z(3))
End If
If Z(2) > 0 Then
A = A + Chr(64 + Z(2))
End If
Stop '(Contenu normal dans la variable A)
A = A + Chr(64 + Z(1))
Stop '(Surprise, la variable est vide)
A = A + "AI"
Stop
A = A + "AJ"
Stop
A = A + "AK"
Stop
A = "AJ"
Stop
A = "AI"
Stop
A = "AJ"
Stop
A = "AK"
Stop
End Sub