XL 2016 Formula Local - Autre ordinateur

  • Initiateur de la discussion Initiateur de la discussion lilidxb
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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...
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
 
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
 
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,
 
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
 
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 🙂
 
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
 
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

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
 
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

Bonsoir à tous,

Et en essayant ? (@_Thierry ) :
VB:
myformula = "=IFERROR(VLOOKUP(" & MyRange.Address(0,0) & ",Sheets2!A:B,2,FALSE),"""")"
MyWS1.Cells(Ligne, 12).Formula = MyFormula

ou en essayant ? (@lilidxb ) :
VB:
myformula = "=IFERROR(VLOOKUP(N1 ,Sheets2!A:B,2,FALSE),"""")"
 
Dernière édition:
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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour