Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Appel dans une formule d'un nombre calculé plus tôt

7 réponses
Avatar
Gillou
Bonjour

Dans une fonction VBA je fais
i=1
while cells(i,1) <> ""
i=i+1
wend
nblig=i-1

pour calculer le nombre de lignes.

Jusque là, pas de problème, tout fonctionne :-)

Ensuite je veux faire un calcul sur une plage que je définis avec ce
nblig, et c'est là que ça merdouille :

dim c as range
for each c in activesheet.range(plage_de_cellules définie)
c="COUNTIF(RC:R[nblig]C;"valeur cherchée")
next c

Il ne comprend pas l'appel à nblig car si je le remplace par un vrai
numéro de ligne tout fonctionne... Comment dois-je l'écrire pour que ça
marche ?

Merci d'avance pour votre aide

Gillou

7 réponses

Avatar
Elliac
Bonjour,


c="COUNTIF(RC:R[" & nblig &"]C;valeur_cherchée)"

Camille

"Gillou" wrote:

Bonjour

Dans une fonction VBA je fais
i=1
while cells(i,1) <> ""
i=i+1
wend
nblig=i-1

pour calculer le nombre de lignes.

Jusque là, pas de problème, tout fonctionne :-)

Ensuite je veux faire un calcul sur une plage que je définis avec ce
nblig, et c'est là que ça merdouille :

dim c as range
for each c in activesheet.range(plage_de_cellules définie)
c="COUNTIF(RC:R[nblig]C;"valeur cherchée")
next c

Il ne comprend pas l'appel à nblig car si je le remplace par un vrai
numéro de ligne tout fonctionne... Comment dois-je l'écrire pour que ça
marche ?

Merci d'avance pour votre aide

Gillou



Avatar
papou
Bonjour
D'abord ta méthode pour définir la dernière ligne n'est pas forcément la
meilleure.
Il existe plusieurs méthodes, perso j'utilise plutôt :
Range("A65536").end(xlup).row
mais d'autres te fourniront d'autres méthodes.
Ensuite, si tu veux récupérer la valeur de ta variable dans une formule, il
te faut utiliser la concaténation donc avec quelquechose comme ça par
exemple :
"R1C1:R" & nblig & "C1"

Mais vu que que je ne suis pas au "top" de la forme en ce moment je peux
avoir oublié quelque chose, d'autres contributeurs sauront me corriger dans
ce cas ;-)

Cordialement
Pascal


"Gillou" a écrit dans le message de news:
431ed017$0$168$
Bonjour

Dans une fonction VBA je fais
i=1
while cells(i,1) <> ""
i=i+1
wend
nblig=i-1

pour calculer le nombre de lignes.

Jusque là, pas de problème, tout fonctionne :-)

Ensuite je veux faire un calcul sur une plage que je définis avec ce
nblig, et c'est là que ça merdouille :

dim c as range
for each c in activesheet.range(plage_de_cellules définie)
c="COUNTIF(RC:R[nblig]C;"valeur cherchée")
next c

Il ne comprend pas l'appel à nblig car si je le remplace par un vrai
numéro de ligne tout fonctionne... Comment dois-je l'écrire pour que ça
marche ?

Merci d'avance pour votre aide

Gillou


Avatar
Gillou
c="COUNTIF(RC:R[" & nblig &"]C;valeur_cherchée)"



C'est bon ça marche ! Merci !

Par contre pour obtenir un taux je fais maintenant :
c="COUNTIF(RC:R[" & nblig &"]C;valeur_cherchée)/" & nb_CF & " "
où nb_CF est un nombre défini plus haut dans la fonction.

Cette fois-ci ça ne marche plus, je me doute bien qu'il considère mon 1er
guillement de " & nb_CF & " comme la fermeture du tout premier, et donc après
il est perdu. Mais comment faire du coup ?

Et puis une question subsidiaire pour finir :-)
plutôt que de conserver la valeur de la formule dans la cellule, je veux
simplement avoir le résultat. Bourrinement, je peux faire un copier-coller
des valeurs dans la suite de ma macro, mais j'imagine quand même qu'il y a
plus simple : quelque chose pour lui dire de conserver uniquement la valeur ?

Merci !

Avatar
Gillou
Merci pour ta réponse. En ce qui concerne le nombre de ligne, il y a en fait
un bloc de lignes dans mon fichier puis un espace puis d'autres lignes, et ma
méthode me permet de déterminer le nombre de lignes du 1er bloc, et c'est ce
que je veux. J'imagine qu'avec ta méthode ça renvoie le nombre total ?
Avatar
Gillou
Personne ne peut m'aider ? :'-(
Avatar
Elliac
Bonjour,

Essaie :
c="COUNTIF(RC:R[" & nblig &"]C;valeur_cherchée)/" & nb_CF

Camille

"Gillou" wrote:

c="COUNTIF(RC:R[" & nblig &"]C;valeur_cherchée)"



C'est bon ça marche ! Merci !

Par contre pour obtenir un taux je fais maintenant :
c="COUNTIF(RC:R[" & nblig &"]C;valeur_cherchée)/" & nb_CF & " "
où nb_CF est un nombre défini plus haut dans la fonction.

Cette fois-ci ça ne marche plus, je me doute bien qu'il considère mon 1er
guillement de " & nb_CF & " comme la fermeture du tout premier, et donc après
il est perdu. Mais comment faire du coup ?

Et puis une question subsidiaire pour finir :-)
plutôt que de conserver la valeur de la formule dans la cellule, je veux
simplement avoir le résultat. Bourrinement, je peux faire un copier-coller
des valeurs dans la suite de ma macro, mais j'imagine quand même qu'il y a
plus simple : quelque chose pour lui dire de conserver uniquement la valeur ?

Merci !



Avatar
Gillou

Bonjour,

Essaie :
c="COUNTIF(RC:R[" & nblig &"]C;valeur_cherchée)/" & nb_CF


Cela fonctionne, merci pour ton aide !