Microsoft 365 Index Equivalent en VBA n'affiche pas le résultat

comardud

XLDnaute Nouveau
Bonjour à tous,
j'ai besoin de votre aide pour un petit problème et j'ai beau chercher partout (notamment ici) je n'ai pas trouvé la solution.
J'entre une formule index/equivalent en vba mais le résultat ne s'affiche pas, c'est la formule qui s'affiche, je sais que mon problème vient du format de donnée de cette colonne. Quand je change manuellement le format via: convertir > données > standard le résultat s'affiche bien mais quand je veux faire exactement la même manip en vba ça ne change rien.
Ma formule en vba est issue de l'enregistreur de macro:
Sheets("ExtractionOKT").Select
Columns("L:L").Select
Selection.TextToColumns Destination:=Range("L1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Selection.ColumnWidth = 51.86
Columns("L:L").EntireColumn.AutoFit
Range("L2").Select

Merci de votre aide ;-)
 

comardud

XLDnaute Nouveau
Bonjour pierrejean, en effet j'avais juste mis la formule de conversion en vba mais pas la formule originale.
La voici:
Sheets("ExtractionOKT").Select
Range("L1").Select
ActiveCell.FormulaR1C1 = "TypeKit"
Range("L2").Select
ActiveCell.FormulaR1C1 = _
"=INDEX(Feuil1!C:C;EQUIV('Extraction OKT'!J2;Feuil1!A:A;0))"
Columns("L:L").Select
Selection.TextToColumns Destination:=Range("L1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Range("L2").Select
Selection.AutoFill Destination:=Range("L2:L500"), Type:=xlFillDefault
Range("L2:L500").Select
Range("A1").Select
Sheets("Suivi").Select
Range("A1").Select
 

comardud

XLDnaute Nouveau
Bonjour à tous, je ne trouve décidemment pas de réponse à mon problème malgré toutes mes recherches.

J'ai une macro (voir mon post juste au dessus) qui écrit dans une cellule une formule INDEX/EQUIV, cette formule fonctionne parfaitement quand je l'entre manuellement mais la même via ma macro m'affiche la formule dans la cellule au lieu du résultat. Je suis obligé à chaque fois de convertir la colonne en standard et tout rentre dans l'ordre.
J'ai ajouter cette conversion à ma macro via l'enregistrement de macro mais ça ne donne rien.
Extractions suivi productivité.xlsm - Excel.jpg
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Bien qu'il n'y ait pas de fichier joint pour vérifier si c'est bien ça, je pense que la valeur affectée à .FormulaR1C1 est interprétée comme une constante texte parce que ce n'est pas une formule R1C1 valide. Ce serait plutôt une formule pour la propriété .FormulaLocal.
 

comardud

XLDnaute Nouveau
Bonjour à tous les deux et merci de prendre sur votre temps pour résoudre mon problème :)

La macro de ce fichier est beaucoup plus conséquente et fait appel à 4 autres fichiers sur des emplacements réseau (interne entreprise) c'est pourquoi je ne l'ai pas mis en pièce jointe car la macro ne fonctionnerais pas. Je ne vous ai mis que la partie qui pose problème.

La macro en question avec vos changements, corrigez moi si j'ai fait une erreur

Sheets("ExtractionOKT").Select
Range("L1").Select
ActiveCell.Formula = "TypeKit"
Range("L2").Select
ActiveCell.Formula = _
"=INDEX(Feuil1!C:C,MATCH('Extraction OKT'!J2;Feuil1!A:A,0))"
Columns("L:L").Select
Selection.TextToColumns Destination:=Range("L1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Range("L2").Select
Selection.AutoFill Destination:=Range("L2:L500"), Type:=xlFillDefault
Range("L2:L500").Select
Range("A1").Select
Sheets("Suivi").Select
Range("A1").Select
 

comardud

XLDnaute Nouveau
ça doit être l'explication puisque en fait cette partie de la formule

Range("L1").Select
ActiveCell.Formula = "TypeKit" "

vient écrire en L1 à la place d'un texte déjà existant, j'ai donc ajouté ça avant votre modification

Columns("L:L").Select
Selection.ClearContents

Et là Messieurs ALLELUYA !! ça fonctionne !

Merci infiniment pour votre aide, je viens encore d'apprendre quelque chose grace à vous et à ce forum et j'avoue que je suis un peu jaloux de votre maitrise du sujet.
;-)
 

Discussions similaires