Mettre une fonction Excel dans une cellule via VBA

Bonjour à tous,

J'ai un pb :

Je cherche à introduire la fonction recherchev via mon code vba directement dans une cellule :

en gros une fois la macro finie, la cellule comportera une formule recherchev.

Seulement, je souhaite mettre des variables dans cette formule.

Voici mon code

Sub formula1()

nb = Sheets.Count

For n = 7 To nb
    Sheets(n).Activate
    derniereligne = Cells(1, 1).End(xlDown).Row
    For numeroligne = 3 To derniereligne
        For numerocolonne = 2 To 7
            If Cells(numeroligne, numerocolonne).MergeCells = False Then
                        If numerocolonne = 2 Then
                            index1 = 2
                            formule = "=VLOOKUP(cells(numeroligne,3),sheets(3).range(cells(4,1),cells(1000,5)),2,FALSE)"
                            Cells(numeroligne, numerocolonne).Activate
                            ActiveCell.FormulaR1C1 = formule
                        ElseIf numerocolonne = 3 Then
                            index1 = 3
                            formule = "=VLOOKUP(cells(numeroligne,3),sheets(3).range(cells(4,1),cells(1000,5)),2,FALSE)"
                            Cells(numeroligne, numerocolonne).Activate
                            ActiveCell.FormulaR1C1 = formule
                        ElseIf numerocolonne = 6 Then
                            index1 = 4
                            formule = "=VLOOKUP(cells(numeroligne,3),sheets(3).range(cells(4,1),cells(1000,5)),2,FALSE)"
                            Cells(numeroligne, numerocolonne).Activate
                            ActiveCell.FormulaR1C1 = formule
                        ElseIf numerocolonne = 7 Then
                            index1 = 5
                            formule = "=VLOOKUP(cells(numeroligne,3),sheets(3).range(cells(4,1),cells(1000,5)),2,FALSE)"
                            Cells(numeroligne, numerocolonne).Activate
                            ActiveCell.FormulaR1C1 = formule
                        End If
            End If
        Next
    Next
Next
End Sub

Je reçois l'erreur 1004.

Merci d'avance de votre aide

Bonjour,

je t'ai fait la correction pour ton premier vlookup, reste à faire les autres selon le même principe

 If numerocolonne = 2 Then
                            index1 = 2
                            formule = "=VLOOKUP(" & Cells(numeroligne, 3) & "," & Sheets(3).Range(Sheets(3).Cells(4, 1), Sheets(3).Cells(1000, 5)).Address & ",2,FALSE)"
                            Cells(numeroligne, numerocolonne).Activate
                            ActiveCell.FormulaR1C1 = formule

merci mais ca me fait toujours un pb.

Maintenant on me dis incompatibilité de type

antony360 a écrit :

merci mais ca me fait toujours un pb.

Maintenant on me dis incompatibilité de type

essaie ceci, sinon indique sur quelle instruction tu reçois le message ou mieux encore mets-nous ton fichier.

                        If numerocolonne = 2 Then
                            index1 = 2
                            formule = "=VLOOKUP(" & Cells(numeroligne, 3) & "," & Sheets(3).Name & "!" & Range(Cells(4, 1), Cells(1000, 5)).Address & ",2,FALSE)"
                            Cells(numeroligne, numerocolonne).Activate
                            ActiveCell.FormulaR1C1 = formule

ps tu n'utilises pas ta variable index1

Par mail car trop gros. Sinon ca bug sur formule =

via cjoint.com et mettre le lien vers le fichier ici


c'est le module 11

re bonjour,

la formule est correcte, mais la cellule réferencée "Cells(numeroligne, 3)" contient une erreur. il faut que tu corriges ton classeur.

comment ca ? Quel genre d'erreur ?

voici une copie d'écran avec l'erreur.

erreur antony360

Non le bug existe car il ne peux pas calculer avec #Name etc...

Mais j'ai corrigé et dans tous les cas ce n'est pas cells(numeroligne,3) mais cells(numeroligne,1) et quand je lance le code en ayant corrigé ca me met 1004 comme avant donc je pense que la formule n'est pas bonne


CA MARCHE MERCI !!

Rechercher des sujets similaires à "mettre fonction via vba"