Fonction Counta [Résolu]

Petit Ecolier 11 Messages postés vendredi 29 juin 2007Date d'inscription 31 juillet 2007 Dernière intervention - 12 juil. 2007 à 12:31 - Dernière réponse : Petit Ecolier 11 Messages postés vendredi 29 juin 2007Date d'inscription 31 juillet 2007 Dernière intervention
- 13 juil. 2007 à 12:03
Bonjour,
Voila j'ai un petit problème sur le retour de la fonction counta. En effet celle la me renvoit la valeur "1" pour n'importe quelle plage que je définis.
 Voici mon code

Set plage_phi = Sheets("Données").Range(Cells(ligne_debut_acou, col_debut_acou), Cells(ligne_fin_acou, col_debut_acou))
Range("AI13").Select
ActiveCell.FormulaR1C1 = "=COUNTA(plage_phi)"
compt_phi = ActiveCell.Value
Set plage_lw = Sheets("Données").Range(Cells(ligne_debut_acou, col_fin_acou), Cells(ligne_fin_acou, col_fin_acou))
Range("AK13").Select
ActiveCell.FormulaR1C1 = "=COUNTA(plage_lw)"
compt_lw = ActiveCell.Value

Je pense bien que mes plages sont correctement définies car la suite de mon programme représente graphiquement ces plages et ca marche.
En fait ce que je veux faire c'est  : ne pas tracer de graph (ou rajouter la série) si une des plages est vide. Donc si compt_phi ou compt_lw est égal à 0 je ne représente rien.
J'avais essayé IsEmpty mais ca ne fonctionne pas non plus.
Avez vous une idée de mon erreur, est-ce sur le code ou c'est carrément l'idée qui est mauvaise ??
Merci beaucoup
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 12 juil. 2007 à 12:43
3
Merci
tu mélange tes variables VBA avec ta formule Excel...


Set plage_phi = Sheets("Données").Range(Cells(ligne_debut_acou, col_debut_acou), Cells(ligne_fin_acou, col_debut_acou))
With Range("AI13")
.FormulaR1C1 = "=COUNTA(" & plage_phi.Address & ")"
compt_phi = .Value
End With

Set plage_lw = Sheets("Données").Range(Cells(ligne_debut_acou, col_fin_acou), Cells(ligne_fin_acou, col_fin_acou))
With Range("AK13")
.FormulaR1C1 = "=COUNTA(" & plage_lw.Address & ")"
compt_lw = .Value
End With

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Renfield
Meilleure réponse
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 13 juil. 2007 à 11:13
3
Merci
Ben si c'est possible puisque tu ne définis pas la feuille.
Si j'ai bien suivi ce que tu fais et ce que te dis MPI : tu définis bien les plages, du contenu de ta formule.
Qu'en est-il de la feuille de la cellule où tu veux insérer la formule ? Rien dans ton code ne nous dit que tu travailles sur une seule et unique feuille, ni que ta macro ne change pas de feuille. D'ailleurs tu définis tes plages sur la feuille "Données", je pense que tu essayes de mettre ta formule dans une autre feuille.

Je parierais presque que ta formule se trouve dans la cellule AI13 de la feuille "Données" et non celle que tu veux. Vérifies donc dans toutes les feuilles de ton classeur la cellule AI13.

Si c'est vraiment le cas, il te suffit de faire
Worksheets("toto").Range("AI13").FormulaR1C1 = "=COUNTA(" & plage_phi.Address & ")"

Si ce n'est pas ça, Et bien, toutes mes excuses.

Molenn

Merci Molenn 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Molenn
Petit Ecolier 11 Messages postés vendredi 29 juin 2007Date d'inscription 31 juillet 2007 Dernière intervention - 12 juil. 2007 à 14:30
0
Merci
Merci de ta réponse rapide mais compt_lw et compt_phi valent tout le temps "0" maintenant. Pourtant ca me parraissait pas mal ta correction
Commenter la réponse de Petit Ecolier
Petit Ecolier 11 Messages postés vendredi 29 juin 2007Date d'inscription 31 juillet 2007 Dernière intervention - 12 juil. 2007 à 14:46
0
Merci
En passant au debogage pas à pas, je ne  comprends pas pourquoi dans ma cellule AI13 ou AK13 je ne vois pas la valeur associée à =COUNTA(" & plage_phi.Address & ") ou =COUNTA(" & plage_lw.Address & ")
Est-ce que le code que tu m'as passé permet de les visualiser ? Comme je le comprends il me sembe que oui.
Dans la fenêtre de variables locales, ces variables (compt_xx) restent désespérément nules.
Pour info je les aies déclarées As Integer (c'est bien ce que renvoie COUNTA il me semble).
Commenter la réponse de Petit Ecolier
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 13 juil. 2007 à 00:01
0
Merci
Où affectes-tu des valeurs à ces variables
Range(Cells(ligne_debut_acou, col_debut_acou), Cells(ligne_fin_acou, col_debut_acou))

De plus, dans la deuxième, tu répètes 2 fois col_fin_acou
est-ce voulu ?

Autrement, la méthode que te donnes Rendield me semble être ce que tu as besoin. Personnellement, je n'utilise pas FormulaR1C1, mais plutôt Formula tout court mais c'est probablement juste une question d'habitude.

Pour les variables Integer, ça ne devrait pas causer de problème, sinon tu aurais probablement eu une erreur 13 "Type Mismatch". Mais tu pourrais aussi les déclarer As Long.

Et pour tes variables locales en mode Debug, as-tu essayé le code sans passer par ce Debug ? Et est-ce que les formules sont bien écrites dans ces cellules AI13 et AK13 ?

MPi
Commenter la réponse de cs_MPi
Petit Ecolier 11 Messages postés vendredi 29 juin 2007Date d'inscription 31 juillet 2007 Dernière intervention - 13 juil. 2007 à 01:11
0
Merci
Bonsoir MPi,
ligne_debut_acou etc sont définies plus haut.
Ce n'est pas ca le pb car mes plages fonctionnent bien et sont bien définies (je
répète 2 fois col_fin_acou -> c normal :))
En effet elles servent
plus loin pour faire des graph et ils fonctionnent.

Le problème est bien
le suivant : AI13 et AK13 restent vides, pas la moindre formule ne s'y trouve.
Par conséquent mes variables sont nulles (par défaut, lors de l'initialisation
je pense). Je suis en variable explicit pour eviter toute erreur de déclaration
"automatique" par VBA.

J'obtiens le même résultat que je debug le prog ou
non.
Merci pour ton aide
Commenter la réponse de Petit Ecolier
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 13 juil. 2007 à 02:41
0
Merci
Alors, tout ce que je peux voir c'est que lorsque tu écris
Range("AI13").FormulaR1C1 = "=COUNTA(" & plage_phi.Address & ")"
(...selon la méthode de Renfield...)
Tu n'es pas dans la bonne feuille
... est-ce possible ?

Il faudrait alors spécifier la feuille du Range("AI13")

Autrement, je ne vois pas pourquoi il n'y aurait rien d'écrit dans cette cellule. Tout au moins il y aurait une erreur un #Valeur ou #Nom ou autre...

MPi
Commenter la réponse de cs_MPi
Petit Ecolier 11 Messages postés vendredi 29 juin 2007Date d'inscription 31 juillet 2007 Dernière intervention - 13 juil. 2007 à 10:06
0
Merci
Ben non ce n'est pas possible puisque juste au dessus je définis mes plages... la j'avoue ne pas comprendre grand chose...
Quand je fais le débugage, la ligne .FormulaR1C1 = "=COUNTA(" & plage_phi.Address & ")" ne fais strictement rien sur ma feuille, c'est comme je n'avaias rien écris dans mon prog.
Merci quand même les gars...car la je vois bien qu'il n'y aura pas de solution car ca me parrait vraiement bon le code de Renfield...
Commenter la réponse de Petit Ecolier
Petit Ecolier 11 Messages postés vendredi 29 juin 2007Date d'inscription 31 juillet 2007 Dernière intervention - 13 juil. 2007 à 12:03
0
Merci
Merci Molenn pour ta remarque ! En effet j'ai réussi à faire fonctionner ce que je voualais. Je m'explique.
Molenn, c'était bien dans données que je voulais faire apparaître mon résultat, dans un premier tant je voulais tester le code plutôt que la mise en forme. Sur tes conseils j'ai vérifié les autres feuilles... nulle trace de formule où que ce soit.

J'ai décidé de mettre en page en mettant cette formule sous "Tampon". Et bien le programme voualit bien inscrire ma formule. Il ne me resatait plus qu'à préciser ceci :
With Worksheets("Tampon").Range("A1")
    .FormulaR1C1 = "=COUNTA( Données! " & plage_phi.Address & ")"
    compt_phi = .Value
End With

Et ca fonctionne. Je ne comprends pas le caprice de la feuille "Données" mais bon...

Merci à tous ! En vous combinant cela m'a permis de trouver une solution Je suis super content car je vais enfin pouvoir continuer mon taff ! j'étais grandement bloqué
Commenter la réponse de Petit Ecolier

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.