Personnaliser la fonction RechercheV et NB.SI

Bonjour,

Dans un classeur Excel j'utilise beaucoup de sheets et le nom de ces sheets diffère, exemple : "123 nom feuille" à noter que le chiffre change vu qu'il représente le nbre des lignes de la colonne A ou autres, d'où le nom du sheets change.

Je veux utiliser dans les deux fonctions ci-dessous : Feuil1 comme nom de la premlère feuille mais ça ne marche pas.

Aidez moi SVP

Dans la RechercheV

ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1],'[Fichier.xls]Feuil1'!R2C1:R1000C2,1,FALSE)"

Ou

Dans la NbSi

ActiveCell.FormulaR1C1 = _
     "=COUNTIF('Feuil1'!R2C2:R10000C2, ""Type 1"")"

Merci par avance pour votre support .

David @+

Bonjour David

Utilise "ActiveCell.FormulaLocal"

Comme cela tu pourras directement recopier ta formule qui fonctionne dans ton code VBA

@+

Bonjour BrunoM45,

Je te remercie pour ta réponse rapide.

J'ai testé ça ne fonctionne pas.

Dsl, je me suis mal exprimé

Mon besoin c'est que je veux utiliser dans chaque fonction le nom de la feuille dans le classeur sous : 'Feuilx' soit x son ordre sans être amené à utiliser le propre nom de la feuille qui pourrait changer.

Exemple 1:

ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1],'[Fichier.xls]Feuil1'!R2C1:R1000C2,1,FALSE)"     'Feuil1 Pour première feuille du classeur Excel

au lieu de :

ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1],'[Fichier.xls]250Stés'!R2C1:R1000C2,1,FALSE)"      '250Stés le nom de la première feuille du classeur Excel

Meme chose pour cet exemple

Exemple 2:

ActiveCell.FormulaR1C1 = _
     "=COUNTIF('Feuil3'!R2C2:R10000C2, ""Type 1"")"

au lieu de :

ActiveCell.FormulaR1C1 = _
     "=COUNTIF('123Marques'!R2C2:R10000C2, ""Type 1"")"

Merci par avance pour votre support .

David @+

Salut,

Quel est le code entier de ta fonction STP

Bonjour BrunoM45,

Comme déjà expliqué sur mon code je veux utiliser 'Feuilx' au lieu du nom de la feuille comme sur ce code.

La contrainte c'est que le nom des feuilles change puisque c'est alphanum, exemple Sheets("

100Stés") et je suis amené à utiliser les feuilles dans autres fonctions.

Sub Test1()

("Stat Reporting").Select
'Calcul pour Type 1

   'Adhérents actifs Type 1 : C4
    Range("C4") = _
        "=COUNTIF('Feuil1'!R2C2:R10000C2, ""Type 1"")"

   'Adhérents actifs Type 1 abonnés à E@syP : C5
    Range("C5") = _
        "=COUNTIF('Feuil2'!R2C2:R10000C2, ""Type 1"")"

    'Non abonnés: C6
    Range("C6") = _
        "=COUNTIF('Feuil3'!R2C2:R100C2, ""Type 1"")"

    'Non abonnés justifiés : C7
    Range("C7").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C-R[1]C"

    'Effectivement non abonnés : C8
    Range("C8") = _
        "=COUNTIFS('Feuil3'!R2C4:R100C4, ""Non Abonné à E@syP"", 'Feuil3'!R2C2:R100C2, ""Type 1"")"

    'Adhérents actifs Type 1 réglent avec E@syP : C9
    Range("C9") = _
        "=COUNTIF('Feuil4'!R2C2:R10000C2, ""Type 1"")"

    'Ne réglent pas : C10
    Range("C10") = _
        "=COUNTIF('Feuil5'!R2C2:R500C2, ""Type 1"")"

    'Ne réglent pas justifiés : C11
    Range("C11").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C-R[1]C"

    'Effectivement ne réglent pas : C12
    Range("C12") = _
        "=COUNTIFS('Feuil5'!R2C5:R500C5, ""Ne Régle pas via E@syP"", 'Feuil5'!R2C2:R500C2, ""Type 1"")"

End Sub

' Autre fonction

Sub Test2()

LastRow = Range("A" & Rows.Count).End(xlUp).Row

'Ouvrir le fichier "BDD Adhérents actifs.xls"
    Workbooks.Open ("C:\Users\nom\Desktop\Adhérents actifs.xls")

'Effectuer Recherche V sur le fichier "Adhérents Actifs"
    Feuil7.Activate

    Range("G2").Select  'Resp Sté
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-6],'[Adhérents Actifs.xls]Feuil1'!R2C1:R25000C11,3,0)"
    Selection.AutoFill Destination:=Range("G2:" & "G" & LastRow)
    Range("G2:" & "G" & LastRow).Select

End Sub

Merci par avance pour votre support .

David @+

Re,

Toujours pas vraiment compris l'intérêt de passer par du VBA, mais bon voici un exemple

avec ce dont je te parlais sur l'utilisation de FormulaLocal

Sub Test1()
  Dim NomFeuille As String
  With Sheets("Stat Reporting")
    'Calcul pour Type 1
    'Adhérents actifs Type 1 : C4
    NomFeuille = "Feuil1"
    .Range("C4").FormulaLocal = "=NB.SI('" & NomFeuille & "'!B2:B10000,""Type 1"")"

    'Adhérents actifs Type 1 abonnés à E@syP : C5
    NomFeuille = "Feuil2"
    .Range("C5").FormulaLocal = "=NB.SI('" & NomFeuille & "'!B2:B10000,""Type 1"")"

    'Non abonnés: C6
    NomFeuille = "Feuil3"
    .Range("C6").FormulaLocal = "=NB.SI('" & NomFeuille & "'!B2:B10000,""Type 1"")"
    '
    'Etc....
  End With
End Sub

A+

Bonjour BrunoM45,

Ca ne marche toujours pas.

J'ai le message d'erreur: Erreur d’exécution '1004'.

Le code est sur "Module1" et j'ai même testé sur "ThisWorkbook" est le même message d'erreur.

Merci par avance pour votre support .

David @+

Bonjour BrunoM45,

Merci pour ta réponse mais entre temps j'ai réussi à trouver le code exact.

J'ai une petite question de syntaxe qui me casse la tête et qui est en relation avec le sujet

Par exemple sur une Feuille1 d'un Fichier.xls, je renomme la Feuille1 avec par exemple "100 Personnes" sachant que le 100 est le nombre des lignes renseignés du 2 au 101 lignes avec Count, sachant que le nombre diffère selon les lignes renseignés et donc le nom de la feuille diffère aussi.

Si pour une Sub ou une Fonction quelconque je veux utiliser le nouveau nom de la Feuille1 quelque soit le nombre des lignes renseignés, je peux utiliser :

'début code.Sheets(1).fin code

Et ainsi le tour est joué.

Mais si je veux l'utiliser dans une RechercheV par exemple, je n'ai que cette syntaxe je crois? Et si le nombre change je dois changer à chaque fois la formule de RechercheV

ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC[-1],'[Fichier.xls]100 Personnes'!R2C1:R1000C2,1,FALSE)"

Ma question y a t il une autre syntaxe à utiliser et à ne pas modifier quelques soit le nom de la Feuille1? "20 Personnes" ou "100 Personnes" ou "250 Personnes" ou "9000 Personnes" ou autres...

Merci par avance pour ta réponse.

Rechercher des sujets similaires à "personnaliser fonction recherchev"