XL 2016 Formula Local - Autre ordinateur

lilidxb

XLDnaute Nouveau
Bonjour le forum!

Me voilà confronter a un problème que je ne comprends pas. Mon code contient une ligne qui reprendre une "FormulaLocal"
Celle-ci contient une variable appelée ligne qui va chercher la ligne qui contient dans ma colonne E la variable "Ma_Valeur".

VB:
Dim Ma_valeur As String

Dim ligne As Integer

Ma_valeur = Range("N1").Value

ligne = Worksheets("Sheet1").Range("E:E").Find(Ma_valeur, searchdirection:=xlNext).Row

Range(Cells(ligne, 12), Cells(ligne, 12)).FormulaLocal = "=IFNA(VLOOKUP(E" & ligne & ";Sheet2!A:B;2;);)"

Bizarrement la formule fonctionne très bien sur mon ordi (EN), sur l'Excel de mon conjoint (FR) qui se transforme même en RECHERCHE V automatiquement mais pas sur ceux de mes collègues (EN).

J'ai vu beaucoup de forum de discussion sur ce sujet et je ne comprends vraiment pas pourquoi chez mes collègues cela ne fonctionne pas, eux qui ont également la version anglaise d'Excel.

J'ai testé les différents types de ".Formula" fournit par VBA (.FormulaR1C1, .Formula2, ect..) et rien n'y fait donc bon me voilà perdue.

Je joint un fichier bien sûr.

Merci par avance si vous avez une idée du problème.

Cordialement
 

Pièces jointes

  • TEST_FormulaLocal.xlsm
    18.6 KB · Affichages: 13
Solution
Re,

Range(Cells(ligne, 12), Cells(ligne, 12)) est inutile et ce n'est pas ça qui fait planter votre macro. Cells(ligne,12) est suffisant.

Pour le numéro de ligne, essayez : & Cstr(Ligne) &

Et croyez moi lorsque je vous dis que Formula et FormulaLocal, ne s'écrivent pas de la même façon.
Dans formulaLocal, pour nous, français il faut utiliser les termes français et le ; (point-virgule) comme séparateur alors que dans Formula, il faut utiliser les noms anglais, et la virgule comme séparateur.
C'est excel qui traduit de Formula à FormulaLocal (et Lycée de Versailles).

En lui parlant en anglais, excel saura traduire dans toutes les locales qui lui sont accessibles.
Par contre si vous utiliser FormulaLocal en Hindi dans votre...

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @lilidxb , le Forum

Chez moi to fichier fonctionne bien, à l'ouverture, et ensuite en effaçant la formule en en L2 et en faisant tourner "test" j'ai bien ceci :

1594040959179.png


Je suis enversion Office 2013 PRO Plus 2013 (32 Bit) version US, Windows_8.1 Pro version FR

Je ne peux pas donc simuler le problème de tes collègues... Et je ne vois pas d'où ça peut provenir...

Bon courage
@+Thierry
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Peut-être simplement :
Cells(ligne, 12).Formula = "=IFNA(VLOOKUP(E" & ligne & ",Sheet2!A:B,2,),)"
Devrait s'adapter à toute les langues.

Si vous utilisez FormulaLocal if faut utiliser les termes locaux.

FormulaLocal : '=SI.NON.DISP(RECHERCHEV(E3;Sheet2!A:B;2;);)'
Formula : '=IFNA(VLOOKUP(E3,Sheet2!A:B,2,),)'

Votre macro pèche sur différents points :

1 - Ligne doit être déclaré en Long.
2 - Si la méthode Find ne trouve rien, plantage
3 - il n'est jamais bon de référencer des lignes ou colonnes entières dans une formule (cf Microsoft)

cordialement
 

lilidxb

XLDnaute Nouveau
Merci pour vos retours ! C'est très étrange que cela fonctionne différemment d'un PC a un autre.
J'ai changé la variable en "long" et initialement j'avais la structure ci-dessous:

VB:
Cells(ligne, 12).FormulaLocal = "=IFNA(VLOOKUP(E" & ligne & ",Sheet2!A:B,2,),)"

J'ai ajouté la partie Range lorsque j'ai vu que cela posait souci chez mes collègues.

Code:
Range(Cells(ligne, 12), Cells(ligne, 12)).FormulaLocal = "=IFNA(VLOOKUP(E" & ligne & ";Sheet2!A:B;2;);)"

Lorsque j'enlève le "local" et que je garde que ".Formula" la macro ne fonctionne plus pour le coup.

Le problème n'est pas la construction de la formule en elle-même (enfin je pense) car la macro plante avant même de l'intégrer.

En ce qui concerne le Find, dans mon fichier original les valeurs a trouver sont dans une liste prédéfinie d'un userform

Merci encore pour vos retours

Cordialement,
 

lilidxb

XLDnaute Nouveau
Apres un petit test je me rend compte que si j'enlève la variable ligne de la formule cela fonctionne.

ci dessous par exemple j'ai directement inscrit "E3" et cela fonctionne:

Code:
Cells(ligne, 12).Formula = "=IFNA(VLOOKUP(E3,Sheet2!A:B,2,),)"

C'est en ajoutant la variable ligne (comme ci dessous) que la macro plante:

VB:
Cells(ligne, 12).Formula = "=IFNA(VLOOKUP(E" & ligne & ",Sheet2!A:B,2,),)"

Cependant cette ligne est variable donc comment faire autrement? Peut etre qu'il s'agit de la syntaxe des "&" ?

cordialement,

Linda
 

lilidxb

XLDnaute Nouveau
Bonjour @lilidxb , le Forum

Chez moi to fichier fonctionne bien, à l'ouverture, et ensuite en effaçant la formule en en L2 et en faisant tourner "test" j'ai bien ceci :

Regarde la pièce jointe 1072415

Je suis enversion Office 2013 PRO Plus 2013 (32 Bit) version US, Windows_8.1 Pro version FR

Je ne peux pas donc simuler le problème de tes collègues... Et je ne vois pas d'où ça peut provenir...

Bon courage
@+Thierry
Bonjour et merci pour le test :)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Range(Cells(ligne, 12), Cells(ligne, 12)) est inutile et ce n'est pas ça qui fait planter votre macro. Cells(ligne,12) est suffisant.

Pour le numéro de ligne, essayez : & Cstr(Ligne) &

Et croyez moi lorsque je vous dis que Formula et FormulaLocal, ne s'écrivent pas de la même façon.
Dans formulaLocal, pour nous, français il faut utiliser les termes français et le ; (point-virgule) comme séparateur alors que dans Formula, il faut utiliser les noms anglais, et la virgule comme séparateur.
C'est excel qui traduit de Formula à FormulaLocal (et Lycée de Versailles).

En lui parlant en anglais, excel saura traduire dans toutes les locales qui lui sont accessibles.
Par contre si vous utiliser FormulaLocal en Hindi dans votre VBA, il y a fort à parier que ce ne sera pas reconnu sur un pc 'français'.
Votre macro cherchera toujours à écrire en hindi une formule qu'un Formulocal Français ne peut reconnaître.

Sur un PC anglais, excel attend un formulaLocal anglais. Sur un hindi, du hindi.
Seul .Formula en anglais est compris sur toutes les machines.

Votre première formule, mélangeait les deux , nom anglais et séparateur local (;) "=IFNA(VLOOKUP(E" & ligne & ";Sheet2!A:B;2;);)"


Si vous rencontrez de nouveaux problèmes, revenez avec un classeur et vos modifications.

Cordialement
 

lilidxb

XLDnaute Nouveau
Bonjour Roblochon, le forum,

Merci beaucoup ! En effet, j'ai eu l'occasion d'effectuer des tests à distance sur l'ordinateur de ma collègue et ils s'agissaient bien des virgules qui bloquaient et non de la variable !

Dans la mesure où c'est un fichier qui va être utilisé par différentes régions et donc versions, j'ai ajouté une liste déroulante à deux choix (EN ou FR) dans une page et dans chaque macro qui intègre une formule j'ai ajouté ceci:

VB:
If Worksheets("HTU").Range("B2").Value = "EN" Then
Cells(ligne, 12).Formula = "=IFNA(VLOOKUP(E" & CStr(ligne) & ";Current_phase!A:B,2,),)"
End If

If Worksheets("HTU").Range("B2").Value = "FR" Then
Cells(ligne, 12).FormulaLocal = "=IFNA(VLOOKUP(E" & CStr(ligne) & ";Current_phase!A:B;2;);)"
End If

Bizarrement je n'ai pas réussi à enlever le "Local" pour la version française mais bon ça fonctionne de cette façon.

Je dois le faire tester à mes collègues de Chine j'espère ne pas avoir à ajouter "CHINE" à ma liste de choix!

Merci encore pour votre aide précieuse ma date de présentation est demain et me voilà soulagée !

Très cordialement,

Linda
 

Pièces jointes

  • TEST_FormulaLocal.xlsm
    21.3 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Vous n'avez pas besoin de faire deux tests, ni même un !!!!

VB:
Cells(ligne, 12).Formula = "=IFNA(VLOOKUP(E" & CStr(ligne) & ";Current_phase!A:B,2,),)"

Fonctionnera qu'excel soit de langue anglais,e allemande ou française/

cordialement
 

lilidxb

XLDnaute Nouveau
Bonjour Roblochon,

Merci mais vraiment, même copier-coller à l'identique cela ne fonctionne pas sur mon ordinateur...

J'ai le message suivant:

1594212482689.png

C'est bien la mon probleme…

Je vous rejoint le fichier, si vous avez une idee?

Cordialement,

Linda
 

Pièces jointes

  • TEST_FormulaLocal.xlsm
    21.1 KB · Affichages: 6

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir/bonjour @lilidxb , @Roblochon , le Forum

C'est pas si simple ce truc
En tout cas je confirm en version Office 2013 PRO Plus 2013 (32 Bit) version US, Windows_8.1 Pro (64 Bit) version FR ça ne fonctionne PAS ! (Même erreur)

Voici une version qui tente d'y pallier ...
1594247115085.png


Bonne nuit/journée
@+Thierry
 

Pièces jointes

  • XLD_lilidxb_TEST_FormulaLocal-1_Analyse_XL-OS_Versions_v00.xlsm
    37.4 KB · Affichages: 8

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @mapomme , à tous

euh oui, tes deux suggestions fonctionnent chez moi (xl US), mais je ne vois pas pourquoi changer de IFNA à IFERROR, mais bon ca n'est pas ça qui faisait planter.

Le but de mon classeur était d'être essayé sur différentes versions/languages, Mapomme, en l'état fonctionne-t'il chez toi ? et donc sur quelle version ?

Bien à toi, à vous
@+Thierry
 

lilidxb

XLDnaute Nouveau
Bien le bonjour le forum, @mapomme , @_Thierry, @Roblochon !

Je pense avoir compris et cela marche enfin sur mon ordinateur. Je pense que c'était un problème dans mes réglages principaux. Voyez la formule suivante fonctionnait chez moi alors qu'elle contenait des ";" mais aussi des ",":

VB:
Cells(ligne, 12).Formula = "=IFNA(VLOOKUP(E" & CStr(ligne) & ";Sheets2!A:B,2,),)"


Or, comme la si bien dit @Roblochon , une version anglaise ne fonctionne pas avec des ";". Dans mes paramètres j'ai donc changé « ; » pour « , » dans "List separator".

1594293915921.png


Puis j’ai rédigé correctement pour une fois la formule qui donne ceci:

VB:
Cells(ligne, 12).Formula = "=IFNA(VLOOKUP(E" & CStr(ligne) & ",Sheets2!A:B,2,),)"

Et après tout roule ! Donc en effet pas besoin de test SI FR ou SI EN le « Formula. » s'adapte.

Je teste Lundi avec mes collègues de Bangkok et de Chine pour voir si on a le problème mais je pense que c'est enfin réglé.

Je vous joint le fichier avec la formule qui fonctionne (enfin j’espère) !

Si vous avez une minute ou deux pour faire le test ce serait cool mais je pense que c’est tout bon

Bonne journée à tous et encore une fois merci de votre aide précieuse!

Cordialement,

Linda
 

Pièces jointes

  • TEST_FormulaLocal.xlsm
    25 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 251
Messages
2 086 623
Membres
103 269
dernier inscrit
SamirSEK20