IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Code VBA pour utilisateurs PC et Mac


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2014
    Messages : 46
    Par défaut Code VBA pour utilisateurs PC et Mac
    Bonjour,

    Dans un classeur Excel, j'ai une macro qui me permet d'effacer le contenu de cellules. Lorsqu'on exécute cette macro, j'ai une boîte de dialogue qui s'ouvre avec le texte suivant : Es-tu sûr(e) de vouloir effacer la grille. Le problème est que pour les utilisateurs qui ont un Mac, les caractères spéciaux se modifient et le texte devient Es-tu s_r(e) de vouloir effacer le grille. J'ai essayé de remplacer le "û" par le code ascii correspondant, soit 251, mais le problème est que Mac n'a pas les mêmes codes ascii et le û se transforme en *.
    Je voudrais dons savoir s'il existe une instruction qui permettrait d'avoir le bon texte lorsqu'on utilise un Mac, du style If Mac .... Else ....
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
        Dim Rep As Integer
        Rep = MsgBox("Es-tu s" & Chr(251) & "r(e) de vouloir effacer la grille ?", vbYesNo + vbQuestion)
            If Rep = vbYes Then
                Range("H18:AI76").Select
                Selection.ClearContents
                Selection.Interior.Pattern = xlNone
                Range("24:78").EntireRow.Hidden = False
                Range("H18").Select
            Else
            End If
    Merci.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 165
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je voudrais dons savoir s'il existe une instruction qui permettrait d'avoir le bon texte lorsqu'on utilise un Mac, du style If Mac .... Else ....
    Oui, cela s'appelle la compilation conditionnelle

    Voir Présentation de la compilation conditionnelle
    J'ai écrit un billet qui pourrait également servir d'exemple VBA Excel - La compilation conditionnelle ou comment développer en EarlyBinding et distribuer en late binding

    Pour la constante conditionnelle "Mac", voir (en anglais) Differentiate between Office for Mac versions at compile time
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 219
    Par défaut
    Hello,
    Citation Envoyé par Sergio33600 Voir le message
    Dans un classeur Excel, j'ai une macro qui me permet d'effacer le contenu de cellules. Lorsqu'on exécute cette macro, j'ai une boîte de dialogue qui s'ouvre avec le texte suivant : Es-tu sûr(e) de vouloir effacer la grille. Le problème est que pour les utilisateurs qui ont un Mac, les caractères spéciaux se modifient et le texte devient Es-tu s_r(e) de vouloir effacer le grille. J'ai essayé de remplacer le "û" par le code ascii correspondant, soit 251, mais le problème est que Mac n'a pas les mêmes codes ascii et le û se transforme en *.
    En ce qui concerne l'encodage des caractères, il faut savoir ce qui provoque un mauvais encodage sur Mac. Je n'ai pas de Mac donc voici quelques macros pour aider à résoudre le problème :


    Déjà il faut savoir avec quelle version d'Excel Mac tu travailles. Voici une macro Excel qui affiche la version :
    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
    Sub TestMacOrWindowsOfficeVersion()
    'Test the conditional compiler constants
        #If MAC_OFFICE_VERSION >= 15 Then
            MsgBox "Excel 2016 or higher for the Mac, version: " & _
                Val(Application.Version)
            Exit Sub
        #End If
     
        #If Mac Then
            If Val(Application.Version) < 15 Then
                MsgBox "Excel 2011 or earlier for the Mac, version: " & _
                    Val(Application.Version)
            End If
        #Else
            MsgBox "Excel for Windows, version: " & _
                Val(Application.Version)
        #End If
    End Sub
    Ensuite il faut savoir si c'est le bon paramètre de langue qui est utilisé. Voici une macro qui affiche la langue utilisée pour certains pays :
    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
    Sub TestParamLangue()
        If Val(Application.Version) >= 16 Then
        ' You use Mac Excel version 16 or higher
            Select Case Application.LanguageSettings.LanguageID(2)
                Case 1031: MsgBox "Run code for German"
                Case 1033: MsgBox "Run code for English"
                Case 1034: MsgBox "Run code for Spanish"
                Case 1036: MsgBox "Run code for French"
                Case 1043: MsgBox "Run code for Dutch"
                Case 1049: MsgBox "Run code for Russian"
                Case Else: MsgBox "Run code for other country(default english 1033) : " & CStr(Application.LanguageSettings.LanguageID(2))
            End Select
        Else
            ' You use Mac Excel version 15 or lower
            Select Case Application.LocalizedLanguage
                Case 1031: MsgBox "Run code for German"
                Case 1033: MsgBox "Run code for English"
                Case 1034: MsgBox "Run code for Spanish"
                Case 1036: MsgBox "Run code for French" 
                Case 1043: MsgBox "Run code for Dutch"
                Case 1049: MsgBox "Run code for Russian"
                Case Else: MsgBox "Run code for other country(default english 1033) : " & CStr(Application.LocalizedLanguage)
            End Select
        End If
    End Sub
    Peux-tu nous dire ce que tu obtiens pour ces deux Macros dans Excel Mac ?


    Si cela ne suffit pas voici une macro qui affiche les caractères ascii de 128 à 255 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub TestSpecChars()
    Dim x
    Dim Machaine
    For x = 128 To 255
    Machaine = Machaine + Chr(x)
    Next
    MsgBox Machaine
    Debug.Print Machaine
    End Sub
    et voici ce que l'on obtiens avec un paramètre de langue en français :
    €‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬*®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ

    Peux-tu nous montrer ce que tu obtiens ? Avec ceci il sera peut-être possible de deviner l'encodage utilisé.


    Ami calmant, J.P

Discussions similaires

  1. Un code VBA pour récupérer un type de donnée ?
    Par KEROZEN dans le forum VBA Access
    Réponses: 22
    Dernier message: 26/09/2019, 11h12
  2. Code VBA pour empêcher utilisateur de supprimer une ligne
    Par serpiccio dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/01/2018, 11h06
  3. [VBA-A] Code vba pour inclure un formulaire Acces
    Par MadSquirrel dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/04/2006, 18h19
  4. Réponses: 3
    Dernier message: 06/09/2005, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo