INDIRECT Sub ou Function non définie

Bonjour tout le monde !

Je n'arrive pas à écrire une formule dans une cellule si elle contient la fonction INDIRECT.

Ci-dessous un code tout bête mais quand je le lance j'obtiens :

Erreur de compilation :

Sub ou Function non définie

Sub Test()
Range("A6").FormulaLocal = INDIRECT(A2)
End Sub

J'ai beau chercher sur internet j'ai l'impression que tout le monde peut utiliser INDIRECT en VBA sans trop de problème

A la base c'est ce code que j'essayais de faire fonctionner :

Sub Nouvelle_commande()
    [C65536].End(xlUp).Select
    ActiveCell.Offset(1, -1).Value = Format(Now, "mm/dd/yyyy")
    Dim inc, adresse As String
    adresse = Range("C65536").End(xlUp).Address
    inc = Sheets("Listes").Range("G3").Value + Format(Now, "yymm")
    If CInt(Mid(Range(adresse).Value, 5, 2)) = Month(Now) Then
        inc = inc & Format(Right(Range(adresse).Value, 3) + 1, "000")
    Else
        inc = inc & "001"
    End If
    Range(adresse).Offset(1, 0).Value = inc
    ActiveCell.Offset(1, 4).FormulaLocal = SIERREUR((RECHERCHEV(H30, INDIRECT("catalogue_" & F30), 2, FAUX)), "")
End Sub

bonsoir,

essaie ainsi

Sub Test()
Range("A6").FormulaLocal = "=INDIRECT(A2)"
End Sub

et ainsi

ActiveCell.Offset(1, 4).FormulaLocal = "=SIERREUR((RECHERCHEV(H30, INDIRECT(""catalogue_"" & F30), 2, FAUX)),"""")"

Merci ça fonctionne si en plus je remplace les virgules par des points virgules.

Mais saurais-tu me dire pourquoi il faut """" à la fin alors que seulement "" apparait dans la cellule ?

ActiveCell.Offset(1, 4).FormulaLocal = "=SIERREUR((RECHERCHEV(H30, INDIRECT(""catalogue_"" & F30), 2, FAUX)),"""")"
Nefisto a écrit :

Merci ça fonctionne si en plus je remplace les virgules par des points virgules.

Mais saurais-tu me dire pourquoi il faut """" à la fin alors que seulement "" apparait dans la cellule ?

en VBA, une chaine de caractères est délimitée par des ". Si tu veux mettre un " dans la chaine de caractères tu dois le dédoubler.

Ha ok, merci encore.

Grâce à toi j'ai pu finaliser cette macro :

Sub Nouvelle_commande()
    [C65536].End(xlUp).Select
    ActiveCell.Offset(1, -1).Value = Format(Now, "mm/dd/yyyy")
    Dim inc, adresse, libelle, fournisseur As String
    adresse = Range("C65536").End(xlUp).Address
    inc = Sheets("Listes").Range("G3").Value + Format(Now, "yymm")
    If CInt(Mid(Range(adresse).Value, 5, 2)) = Month(Now) Then
        inc = inc & Format(Right(Range(adresse).Value, 3) + 1, "000")
    Else
        inc = inc & "001"
    End If
    Range(adresse).Offset(1, 0).Value = inc
    libelle = ActiveCell.Offset(1, 5).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    fournisseur = ActiveCell.Offset(1, 3).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    ActiveCell.Offset(1, 4).FormulaLocal = "=SIERREUR((RECHERCHEV(" & libelle & "; INDIRECT(""catalogue_"" & " & fournisseur & "); 2; FAUX));"""")"
    ActiveCell.Offset(1, 6).FormulaLocal = "=SIERREUR((RECHERCHEV(" & libelle & "; INDIRECT(""catalogue_"" & " & fournisseur & "); 3; FAUX));"""")"
    ActiveCell.Offset(1, 8).FormulaLocal = "=SIERREUR((RECHERCHEV(" & libelle & "; INDIRECT(""catalogue_"" & " & fournisseur & "); 4; FAUX));"""")"
    ActiveCell.Offset(1, 9).FormulaLocal = "=SIERREUR((RECHERCHEV(" & libelle & "; INDIRECT(""catalogue_"" & " & fournisseur & "); 5; FAUX));"""")"
ActiveCell.Offset(1, 1).Select
End Sub
Rechercher des sujets similaires à "indirect sub function definie"