Compatibilité VBA Français et Anglais

Bonjour à tous,

Je suis face à quelque chose de suprenant... J'ai un code en VBA qui fonctionne parfaitement sur Excel 2013 version française.

Lorsque je l'envois à quelqu'un qui utilise Excel 2013 en anglais, la macro se lance pas... Dès qu'on la lance, un massage apparaît "Run time error 13 type Mismatch".

J'ai envoyé ce même fichier sur un PC avec Excel 2007 en français et là nickel, tout fonctionne, celà semble donc vraiment un problème de compatibilité linguistique.

Quelqu'un a déjà eu ce phénomène? Merci pour les éclaircissements,

Bonne journée

Bonjour,

Logiquement, le code VBA est rédigé en anglais ... donc pas de différence (sauf rares exceptions ... )

Mais l'erreur que tu signales ... pourrait venir de l'ajout (fort utile...) de Option Explicit .... à vérifier ...

Bonjour,

Merci de joindre le code VBA.

Cdlt.

Bonjour à tous,

Vous trouverez ci-joint le fichier problématique.

Bonne journée

172forum.xlsm (40.92 Ko)

Bonjour,

Il semble bien que tous tes problèmes soient liés au fait que les mois sont au format Texte ...

Pas de rapport avec VBA ...

Bonjour James,

Etant nouveau dans la programmation VBA, je ne vois pas comment je pourrais by-passer ce problème du format "texte"...

Avez-vous une idée?

Merci pour votre aide,

Bonne journée

Re,

Il faut savoir que pour Excel les dates sont des nombres ... =Date(année,mois,jour)

Dans ton exemple, L'année est 2030 ... OK, par contre le mois d'Août devrait être converti en nombre soit 8 , et finalement le jour est égal à 1 ...OK ...

Bonjour,

Si je comprends bien le problème se pose lorsque je rentre le "start date " et le "end date"?

Si je fais donc format de cellule et que je sélectionne "1-1-2012" ca devrait aller?

Dois-je aussi changer les mois écrits en format texte sur le planning-même ou peuvent-il rester?

Je me pose quand même une question de fond.. Pourquoi en français Excel comprend le mois sous forme de texte et pas en anglais?

Si je mets les mois écrits en anglais celà pourrait fonctionner?

Les questions sont peut-être ridicules, mais je n'utilise VBA que depuis 10 jours.... Sorry

Bonne journée

Re,

Les mois dans ta feuille sont en francais ... et la formule qui les reprend dans VBA est en anglais ...

Dans ta feuille, tu peux faire le test : = Mois(1&F3) pour convertir le texte en nombre ...

Si cela fonctionne, dans ton code VBA, l'équivalent en anglais sera Month("1" & range("F3"))

J'espère que cette explication est assez claire ...

Bonjour,

J'ai un peu de mal à cerner les causes j'avoue (désolé).

Si je renomme les mois en anglais et que je continue d'utiliser la formule months, ça fonctionnerait du coup? Je pourrais les laisser dans mon planning sur leur forme écrite et sur le start date et end date en chiffres?

Merci pour votre patience

Re,

A l'ouverture du fichier, tu dois vérifier la langue utilisateur, et travailler soit en anglais, soit en français.

Donc avoir 2 listes de mois en texte.

Code à priori qui pose problème :

DateDep = CDate(Range("F2") & "/" & Month("1/" & Range("F3")) & "/1")

Je peux regarder.

A te relire.

Cdlt.

Salut Jean-Eric,

Je pense que tu as raison ...

Une petite table externe qui traduise les mois français en anglais ... ainsi qu'en nombres de 1 à 12 ...

Cela évitera la conversion ... et tous les casses-têtes improductifs ...

Bonjour,

Je commence doucement à comprendre les tenants et aboutissants du problème ! (lent, mais ça arrive )

Cependant, étant novice, j'ai du mal à l'effectuer... Je ne cherche pas qu'on me le fasse, loin de là, je souhaite vraiment "comprendre" ce que je dois coder.

Pouvez-vous me donner les pistes avec des printscreen ou autre s'il vous plaît?

Merci d'avance,

Bonne journée

Re,

Le plus simple est de glisser une table de référence dans ton fichier ... voir fichier joint ...

Cette table te sert de conversion ... à chaque fois que ton code en a besoin ...

47test-thslt91.xlsx (8.01 Ko)

Re,

Merci pour le fichier. Donc à chaque fois que j'ai codé la cellule du mois en francais, je sélectionne la cellule du chiffre et automatiquement il m'affichera le mois en anglais?

( mon franc tombe, mais moins vite que l'euro... )

Re,

Une piste

Sinon, faire attention à l'utilisation de 'EnableEvents' sans gestion d'erreur.

Si plantage, lancer la procédure 'help' (ALT F8)

19forum.xlsm (43.15 Ko)
Option Explicit
Private Sub Workbook_Open()
Dim x As Long
Dim ws As Worksheet

    Set ws = Worksheets("tasks list")
    x = Application.International(xlCountryCode)

    Select Case x
        Case 33
            With ws.Range("F3")
                .Validation.Modify Formula1:="=LesMois"
                .Replace "January", "Janvier"
                .Replace "February", "Février"
                .Replace "March", "Mars"
                ' etc...
            End With
        Case Else
            With ws.Range("F3")
                .Validation.Modify Formula1:="=AllMonths"
                .Replace "Janvier", "January"
                .Replace "Février", "February"
                .Replace "Mars", "March"
                ' etc...
            End With
    End Select

    Set ws = Nothing

End Sub

Re,

J'ai copié-collé le code de Jean-Eric mais il ne lance plus la macro à présent... J'avoue ne pas voir ou se situe l'erreur...

Par contre, élément troublant, la macro se lance sur un PC avec Excel 2013 en anglais et pas celui d'à côté (esprit, es-tu là?! )

Je suis un peu perdu pour effectuer les corrections, ça dérangerait quelqu'un de me faire des print-screen en incluant le code pour voir comment j'aurais du faire? Je suis perdu avec le tableau pour qu'ils comprennent les mois et dates etc sur version anglaise..

Merci pour tout, bonne journée

Re,

La formule =MOIS("1/"&F3) n'est pas reconnue avec Excel basculé en langue anglaise.

Si une personne a une solution (une alternative)?

On revient donc au problème de la formule :

DateDep = CDate(Range("F2") & "/" & Month("1/" & Range("F3")) & "/1")

Et de l'utilité de travailler avec des mois en texte.

A suivre.

Cdlt.

Jean-Eric,

Je t'explique ce que j'avais compris de ta première suggestion ...

En fonction de la langue dans laquelle l'utilisateur travaille, ... dans le code un petit index match sur la table externe pour ramener diretement le mois en integer ..

Plus de casse-tête de conversion à l'intérieur du code ...

Merci M. Bond

Je suis un peu perdu j'avoue dans les corrections à faire... Est-ce possible que vous m'indiquiez en commentaire dans mon code la démarche mais là je vois vraiment pas comment corriger ce problème...

Merci d'avance,

Bonne après-midi

Rechercher des sujets similaires à "compatibilite vba francais anglais"