OVH Cloud OVH Cloud

VBA, .formula et erreur 1004

5 réponses
Avatar
MarieGSM
Bonjour,

J'ai un problème avec l'écriture d'une formule dans une cellule en VBA.
J’ai une macro compliquée que j’ai simplifiée au niveau du nœud du problème.
Mon but est de faire des pourcentages en fonction de l’occurrence d’une valeur.
Ma formule fonctionne correctement :
=NB.SI(type_café;A2)/NBVAL(type_café)
« type_café » étant à la fois le nom d’une plage de cellule d'une des feuille précédente et le nom de la feuille active.
Et voici le code que j’essaie de mettre ne place :

Sub formule_alone()
Dim ws As String
ws = ActiveSheet.Name
Range("B2").FormulaR1C1 = "=NB.SI(" & ws & ";A2)/NBVAL(" & ws & ")"
End Sub

J'ai trouvé un post qui parlait de guillemets, du coup j'ai essayé:
Range("B2").Formula = "=NB.SI(""" & ws & """;A2)/NBVAL(""" & ws & """)"

Mais non... ça ne marche pas et comme je ne comprend pas ce système de guillemets... Je n'arrive pas à me corriger...

D'avance un grand merci à la personne qui pourrait m'avancer :)

5 réponses

Avatar
Jacquouille
Bonjour,
Un truc qui me chiffonne, c'est le même nom pour deux choses bien
différentes....
« type_café » étant à la fois le nom d’une plage de cellule d'une des
feuille
précédente et le nom de la feuille active.

Mais, ces histoires de café .... -))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MarieGSM" a écrit dans le message de groupe de discussion :
Bonjour,
J'ai un problème avec l'écriture d'une formule dans une cellule en VBA.
J’ai une macro compliquée que j’ai simplifiée au niveau du nœud du problème.
Mon but est de faire des pourcentages en fonction de l’occurrence d’une
valeur.
Ma formule fonctionne correctement :
=NB.SI(type_café;A2)/NBVAL(type_café)
« type_café » étant à la fois le nom d’une plage de cellule d'une des
feuille
précédente et le nom de la feuille active.
Et voici le code que j’essaie de mettre ne place :
Sub formule_alone()
Dim ws As String
ws = ActiveSheet.Name
Range("B2").FormulaR1C1 = "=NB.SI(" & ws & ";A2)/NBVAL(" & ws & ")"
End Sub
J'ai trouvé un post qui parlait de guillemets, du coup j'ai essayé:
Range("B2").Formula = "=NB.SI(""" & ws & """;A2)/NBVAL(""" & ws & """)"
Mais non... ça ne marche pas et comme je ne comprend pas ce système de
guillemets... Je n'arrive pas à me corriger...
D'avance un grand merci à la personne qui pourrait m'avancer :)
Avatar
JièL
Le 15/02/2018 à 11:32, Jacquouille a écrit :
Bonjour,
Un truc qui me chiffonne, c'est le même nom pour deux choses bien
différentes....
« type_café » étant à la fois le nom d’une plage de cellule d'une des
feuille
précédente et le nom de la feuille active.

Mais, ces histoires de café ....  -))

C'est quand même "fort de café", non ? ;-)
http://www.expressio.fr/expressions/c-est-fort-de-cafe.php
--
JièL
Avatar
Jacquouille
Oui, c'est comme cette histoire de retraité qui cherchait le chemin du
bureau ..... -))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"JièL" a écrit dans le message de groupe de discussion :
5a856619$0$4836$
Le 15/02/2018 à 11:32, Jacquouille a écrit :
Bonjour,
Un truc qui me chiffonne, c'est le même nom pour deux choses bien
différentes....
« type_café » étant à la fois le nom d’une plage de cellule d'une des
feuille
précédente et le nom de la feuille active.

Mais, ces histoires de café .... -))

C'est quand même "fort de café", non ? ;-)
http://www.expressio.fr/expressions/c-est-fort-de-cafe.php
--
JièL
Avatar
Michd
Bonjour,
Ça fait un moment déjà que je t'ai répondu sur le fil où tu as posé ta
question...
2 manières d'écrire la formule :
Range("B2").Formula = "=COUNTIF(type_café,A2)/COUNTA(type_café)"
Range("B2").FormulaLocal = "=NB.SI(type_café;A2)/NBVAL(type_café)"
Dans ton exemple : "=NB.SI(" & ws & ";A2)/NBVAL(" & ws & ")"
WS peut être le nom d'une feuille où d'une plage de cellules. Tu dois être
spécifique si tu veux utiliser la variable WS
Pour un range : Range(" & WS & ")...
Pour une feuille : Sheets(" & WS & ")...
'---------------------------------------------
Sub test()
Dim X As String
With Range("type_café")
'X= NomFeuille "!" Adresse plage de cellules
X = .Parent.Name & "!" & .Address
End With
Range("B2").Formula = "=COUNTIF(" & X & ",A2)/COUNTA(" & X & ")"
Range("B2").FormulaLocal = "=NB.SI(" & X & ";A2)/NBVAL(" & X & ")"
End Sub
'---------------------------------------------
MichD
Avatar
mariegsm
Le jeudi 15 Février 2018 à 09:16 par MarieGSM :
Bonjour,
J'ai un problème avec l'écriture d'une formule dans une cellule
en VBA.
J’ai une macro compliquée que j’ai simplifiée au
niveau du nœud du problème.
Mon but est de faire des pourcentages en fonction de l’occurrence
d’une valeur.
Ma formule fonctionne correctement :
=NB.SI(type_café;A2)/NBVAL(type_café)
« type_café » étant à la fois le nom
d’une plage de cellule d'une des feuille précédente et le
nom de la feuille active.
Et voici le code que j’essaie de mettre ne place :
Sub formule_alone()
Dim ws As String
ws = ActiveSheet.Name
Range("B2").FormulaR1C1 = "=NB.SI(" & ws &
";A2)/NBVAL(" & ws & ")"
End Sub
J'ai trouvé un post qui parlait de guillemets, du coup j'ai
essayé:
Range("B2").Formula = "=NB.SI(""" & ws &
""";A2)/NBVAL(""" & ws &
""")"
Mais non... ça ne marche pas et comme je ne comprend pas ce
système de guillemets... Je n'arrive pas à me corriger...
D'avance un grand merci à la personne qui pourrait m'avancer :)
Merci ,
Je vais essayer de corriger ça avec les explications de Michd :)
Effectivement, je nomme deux choses "différentes" avec le même nom pour pouvoir avoir une continuité plus facile.
Pour la petite histoire, une macro de la première feuille nomme des plages en fonction du titre de la colonne et crée un onglet en fonction de la plage, ensuite, s'en suit une analyse des données... Pourcentage, graphiques etc...
nb:En fait, je ne compte pas réellement des type de café... Mais je trouvais ça plus fun ;)
"Je vous tiens au jus" :)