Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

chris

XLDnaute Barbatruc
Bonjour

Utilise l'enregistreur de macros pour mettre ta formule en Anglais.
Si tu crées des noms utilise
Code:
ActiveWorkbook.Names.Add Name:="M_CDP_01", RefersToR1C1:= ...

Ton code sert à les modifier...
 

SSIAP2

XLDnaute Occasionnel
bonjour chris bonjour jecky67 merci pour votre aide la solution de jacky67 me parle plus et fonctionne pour un nom je vais faire ma petite boucle pour les autre merci à vous sa m'aide bien
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…