Utiliser variable VBA dans formule Excel

Bonjour à tous,

Je rencontre un souci similaire à celui d'un ancien post : J'ai besoin d'utiliser une variable d'incrément dans une formule Excel, voici la partie du code le concernant :

Sub CreationFeuille()
DerniereCellule = Range("A6").End(xlDown).Row
Repertoire = Range("Repertoire").Text
NomFichier = Range("NomFichier").Text
    For inc = 6 To DerniereCellule
        Code = Range("A" & inc).Text
        Nom = Range("B" & inc).Text
        Sheets("Feuille").Range("A2").Formula2R1C1 = _
            "=FILTER(Tableau_complet,(Tableau_complet[Code]=Resume!R" & inc & "C0)*(Tableau_complet[Nom]=Resume!R" & inc & "C1))"
        Sheets("Feuille").Copy
        ActiveWorkbook.SaveAs Filename:= _
        Repertoire & NomFichier & Code & Nom & ".xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWindow.Close
Next inc
End Sub

Concrètement, le classeur est composé de 3 feuilles :

  • Une feuille "Tableau_complet" qui se compose d'un tableau.
  • Une feuille "Resume" sur laquelle on précise le répertoire où on souhaite placer les enregistrements, le nom commun à chaque fichier et, à partir de la ligne 6 (le début de l'incrément), un résumé du tableau avec en colonne A un code numérique et en colonne B un nom.
  • Une feuille "Feuille" qui est celle qui doit être créé par la macro.

Passons maintenant à la macro : elle doit passer chaque ligne de Resume en revue pour en récupérer le code et le nom, puis filtrer le tableau en fonction de ces données (formule mise dans la cellule A2 de la feuille). Enfin elle enregistre la feuille et passe au code suivant.

La partie enregistrement marche très bien, le problème n'est que dans la partie où je cherche à filtrer les données. Est-ce que quelqu'un peut m'aider ?

Je voudrais bien vous joindre un fichier mais j'ai peur qu'il vous fasse enregistrer des classeurs pour pas grand-chose. Après s'il le faut je peux en fournir un.

Merci d'avance,

Nicolas

bonjour,

Sheets("Feuille").Range("A2").Formula2R1C1 = _
            "=FILTER(Tableau_complet,(Tableau_complet[Code]=Resume!R" & inc & "C0)*(Tableau_complet[Nom]=Resume!R" & inc & "C1))"

C0 signifie colonne 0, qui n'existe pas d'où l'erreur.

je pense comprendre que tu souhaites ceci

Sheets("Feuille").Range("A2").Formula2R1C1 = _
            "=FILTER(Tableau_complet,(Tableau_complet[Code]=" & code & ")*(Tableau_complet[Nom]=""" & nom & """))"

Bonjour H2so4,

Mais quel erreur nulle, merci pour la remarque ! Du coup la formule

Sheets("Feuille").Range("A2").Formula2R1C1 = _
            "=FILTER(Tableau_complet,(Tableau_complet[Code]=Resume!R" & inc & "C1)*(Tableau_complet[Nom]=Resume!R" & inc & "C2))"

Marche parfaitement, merci à toi !

Rechercher des sujets similaires à "utiliser variable vba formule"