Petit Ecolier
Messages postés11Date d'inscriptionvendredi 29 juin 2007StatutMembreDernière intervention31 juillet 2007
-
12 juil. 2007 à 12:31
Petit Ecolier
Messages postés11Date d'inscriptionvendredi 29 juin 2007StatutMembreDernière intervention31 juillet 2007
-
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
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
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 13 juil. 2007 à 11:13
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 & ")"
Petit Ecolier
Messages postés11Date d'inscriptionvendredi 29 juin 2007StatutMembreDernière intervention31 juillet 2007 12 juil. 2007 à 14:46
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).
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 13 juil. 2007 à 00:01
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 ?
Petit Ecolier
Messages postés11Date d'inscriptionvendredi 29 juin 2007StatutMembreDernière intervention31 juillet 2007 13 juil. 2007 à 01:11
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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 13 juil. 2007 à 02:41
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...
Petit Ecolier
Messages postés11Date d'inscriptionvendredi 29 juin 2007StatutMembreDernière intervention31 juillet 2007 13 juil. 2007 à 10:06
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...
Petit Ecolier
Messages postés11Date d'inscriptionvendredi 29 juin 2007StatutMembreDernière intervention31 juillet 2007 13 juil. 2007 à 12:03
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é