XL 2010 inserer une formule en VBA

SSIAP2

XLDnaute Occasionnel
bonjour à tous je recherche à creer des liste de nom en passant par VBA car j'en est vraiment beaucoup à creer j'ai donc fait cette petite formule à l'aide de l'enregistreur de formule.

Code:
Sub Macro5()
'
' Macro5 Macro
'

'
    With ActiveWorkbook.Names("M_CDP_01")
        .Name = "M_CDP_01"
        .RefersToR1C1 = "=""DECALER(Feuil1!$A$4;;;NB.SI(Feuil1!$A$4:$A$46;"?*"))"""
        .Comment = ""
    End With
End Sub

mais j'ai une erreur semble t'il de syntax

comment puis je faire pour inserer ce code dans ma liste de nom svp
Code:
=DECALER(Filtre!$A$4;;;NB.SI(Filtre!$A$4:$A$46;"?*"))

merci à vous
 

Pièces jointes

  • vbaformule.xlsm
    15.5 KB · Affichages: 28

SSIAP2

XLDnaute Occasionnel
Re jacky67
pourrais tu m'aiguiller sur une autre question sur ce même fichier si je veux créer une boucle qui reprend cette formule comme ceci

Code:
ActiveWorkbook.Names.Add Name:="M_CDP_01", RefersTo:= _
        "=OFFSET(Filtre!$A$4,,,COUNTIF(Filtre!$A$4:$A$46,""?*""))"

Code:
ActiveWorkbook.Names.Add Name:="M_CDP_02", RefersTo:= _
        "=OFFSET(Filtre!$A$4,,,COUNTIF(Filtre!$A$49:$A$90,""?*""))"

Code:
ActiveWorkbook.Names.Add Name:="M_CDP_03", RefersTo:= _
        "=OFFSET(Filtre!$A$4,,,COUNTIF(Filtre!$A$94:$A$35,""?*""))"

comment écrirait tu ce code en créant une boucle sachant a chaque fois l’écart est strictement le même si tu pouvais me donner une idée svp
 

chris

XLDnaute Barbatruc
Re

Dans ton exemple l'écart et la taille de la plage n'est pas le même donc code à adapter :
Code:
x = 4
For i = 1 To 10 'borne à définir de même que la taille de la plage et l'incrément de x
ActiveWorkbook.Names.Add Name:="M_CDP_" & IIf(i < 10, "0", "") & i, RefersTo:= _
        "=OFFSET(Filtre!$A$" & x & ",,,COUNTIF(Filtre!$A$" & x & ":$A$" & x + 42 & ",""?*""))"
    x = x + 47
Next i
 

SSIAP2

XLDnaute Occasionnel
Re cris en attendant une réponse j'ai réussit à écrire la macro comme ceci mais le tien est plus compresser je vais la tester de suite
Code:
Sub teste()
'b = 45
'C = 4
For i = 2 To 9
V2 = 45 * i
V1 = V2 - 41
ActiveWorkbook.Names.Add Name:="M_CDP_0" & i, RefersTo:= _
"=OFFSET(Filtre!$A$" & V1 & ",,,COUNTIF(Filtre!$A$" & V1 & ":$A$" & V2 & ",""?*""))"
       
      
        '
Next
For ii = 10 To 31
V3 = 45 * ii
V4 = V3 - 41
ActiveWorkbook.Names.Add Name:="M_CDP_" & ii, RefersTo:= _
        "=OFFSET(Filtre!$A$" & V3 & ",,,COUNTIF(Filtre!$A$" & V3 & ":$A$" & V4 & ",""?*""))"
       
      
        Next
  
       
End Sub

un grand merci à toi
 

SSIAP2

XLDnaute Occasionnel
Re Chris merci encore pour ta macro et ton aide voila je l'ai adapter à mon projet réel c'est parfait merci à toi
Code:
Sub teste2()
x = 4
For i = 1 To 31 'borne à définir de même que la taille de la plage et l'incrément de x
ActiveWorkbook.Names.Add Name:="M_CDP_" & IIf(i < 10, "0", "") & i, RefersTo:= _
        "=OFFSET(Filtre!$A$" & x & ",,,COUNTIF(Filtre!$A$" & x & ":$A$" & x + 41 & ",""?*""))"
    x = x + 45
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 581
Membres
109 082
dernier inscrit
Narlock