Fonction DECALER / INDIRECT / EQUIV en VBA et erreur
Bonjour,
Lorsque je renseigne la formule suivante dans une liste déroulante, cela fonctionne très bien :
=DECALER(INDIRECT("Masquée!B"&EQUIV(INDIRECT("A"&LIGNE());Masquée!A:A;0));;;NB.SI(Masquée!A:A;INDIRECT("A"&LIGNE()));)
Lorsque que je lance un enregistrement de macro sur cette même manipulation, j'obtiens le code suivant :
Sub Macro1()
'
' Macro1 Macro
Range("B14").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:= _
"=DECALER(INDIRECT(""Masquée!B""&EQUIV(INDIRECT(""A""&LIGNE());Masquée!A:A;0));;;NB.SI(Masquée!A:A;INDIRECT(""A""&LIGNE()));)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Et lorsque j'exécute ce code, j'ai l'erreur suivante sur la ligne correspondant à ma formule :
Erreur d'exécution '1004':
Erreur définit par l'application ou par l'objet
J'ai tenté de modifier ma formule en la passant en anglais mais j'ai le même code d'erreur.
J'ai également tenté de modifier quelque peut ma formule pour essayer de déterminer la source de mon problème, sans succès.
Est-ce qu'une âme charitable pourrait m'aider ?
Merci à vous !
Bonne soirée !
Bonjour
Logique vous mettez une formule en Français dans VBA qui ne voit que l'anglais
Si la formule dans votre cellule est bonne remplacez :
decaler par OFFSET
Equiv par MATCH
Ligne par ROW
Si elle n'est pas bonne je vous conseille de la placer dans une cellule et d'obtenir dans cette cellule ce que vous cherchez
Une fois fait, démarrez l'enregistreur VBA automatique, sélectionnez votre formule dans la barre de formule
Ensuite faites copier la formule et coller (ctrl + V)
Arrêtez l'enregistreur automatique puis allez dans l'éditeur VBA pour visualiser ce que l'enregistreur auto vous a renvoyé
Cordialement