Macro ou fonction à changer

Jimy

XLDnaute Occasionnel
Bonjour à tous
Dans un autre fil un problème avec une Macro que je souhaiterais changer en fonction:
Code:
[SIZE=3][FONT=Times New Roman]Sub Macro4()[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]' Macro4 Macro[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]' Macro enregistrée le 3/06/2008 par Gruick[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]For i = 2 To Cells(2, 3).End(xlDown).Row[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]  If Cells(i, 3) = 1 Then[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      Cells(i, 3).Select[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      For j = Cells(i, 3).Row + 1 To Cells(i, 3).Row + Cells(2, 1) + 1[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]          'Cells(j, 3).Select[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]          If Cells(j, 3) = 1 Then s = s + 1: Exit For[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      Next j[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]  End If[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Next i[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]Cells( 3, 6).value = s[/FONT][/SIZE]
[FONT=Times New Roman][SIZE=3]End Sub[/SIZE][/FONT]
Question est t'il possible de s'inspirer de ce code pour modifier la fonction ?
Cette fonction est destinée a vérifier le nombre de fois qu'une valeur est apparue "avant sa moyenne" donnée dans le fichier en ligne 228.
J'ai vérifié manuellement , mais elle donne faux.
Ex: pour le 1 il est apparu 20 fois alors que la fonction renvoie 22
Pour le 16 pareil, 14 fois alors que la fonction renvoie 16
De plus elle ne fonctionne pas en la mettant à jour... :(
Je joins le fichier en question, au cas ou qqun peut m'aider ?
(merci d'avance)
 

Pièces jointes

  • Euromillion2004-2008R.xls.zip
    33.3 KB · Affichages: 28
  • Euromillion2004-2008R.xls.zip
    33.3 KB · Affichages: 25
  • Euromillion2004-2008R.xls.zip
    33.3 KB · Affichages: 29
Dernière édition:

Jimy

XLDnaute Occasionnel
Re : Macro ou fonction à changer

Bonjour Chriss
Oui, sur mon portable qui est ancien j'utilise une version plus ancienne d'Excel. et c'est surtout là que ça ne va pas. j'ai modifié la partie de la formule en enlevant Round(moyenne) et j'ai juste laissé moyenne.
ça marche mais il indique faux il me met 51 à tous :(
je pensais que cela venait des <> 0 (que j'ai essayé de changer aussi )
mais sans succes.
décidément c'est bien compliqué le vba :eek: tous ça parce qu'il y a des zéros à la place des vides :(
D'autre part, il y a un autre souci:
Quand je mets à jour le fichier en rajoutant des valeurs dans la grille même si il a répétition du numéro ( donc sortie avant moyenne ) rien ne change dans la formule précocité :confused:
Bien entendu, j'ai étendu les plages des autres formules affin de mettre tout à jour.
Seul le nombre de sorties et la moyenne changent mais pas la fonction.
Sauf quand je fais F2 et enter, alors seulement là la valeur change. bizzare non ?
Si vraiment c'est trop difficile en Vba, y a t'il pas un moyen d'y arriver avec plusieurs fomules Excel ?
Ps: J'ai à la maison sur le pc de bureau Excel 2007 et sur mon portable Excel 97
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Macro ou fonction à changer

Bonjour

Déjà si tu as des zéros il faut que le nombre de sorties soit calculé avec NB.SI et non NB.

Function Précocité(Numéro As Byte, moyenne As Single)
Application.Volatile
For i = 2 To Cells(1, 1).End(xlDown).Row
If Cells(i, Numéro + 1) > 0 Then
For j = i + 1 To i + Application.Round(moyenne, 0) - 1
If Cells(j, Numéro + 1) > 0 Then s = s + 1: Exit For
Next j
End If
Next i
Précocité = s
End Function

devrait marcher dans tous les cas
 
Dernière édition:

Jimy

XLDnaute Occasionnel
Re : Macro ou fonction à changer

Rebonjour Chriss
Oui bien sûr les formules sont différentes, je ne l'avais pas précisé dsl
J'ai changé le code par celui que tu m'as donné,
Mais il me renvoie toujours 51 invariablement.
sais vraiment pas quoi faire.
 

Jimy

XLDnaute Occasionnel
Re : Macro ou fonction à changer

Re
Voilà, j'ai fait un fichier juste avec les valeurs.
Ici il indique 0 je ne comprends pas :confused: sur l'autre fichier il indique 51 sur tous... c'est à devenir chèvre lol
Enfin merci de ta patience :eek:
 

Pièces jointes

  • Nouveau WinRAR ZIP archive.zip
    9 KB · Affichages: 19
  • Nouveau WinRAR ZIP archive.zip
    9 KB · Affichages: 19
  • Nouveau WinRAR ZIP archive.zip
    9 KB · Affichages: 21

chris

XLDnaute Barbatruc
Re : Macro ou fonction à changer

Bonjour

Depuis le début je pensais que la création d'une fonction qui n'agit pas sur une plage passée en argument mais qui part du principe que
  • la colonne A donne le nombre de lignes à traiter
  • que le numéro de colonne est égal au numéro à traiter + 1
n'est pas une vraie fonction.

D'où tes problèmes.

J'ai repris les choses de façon à passer la plage en argument : on a donc 3 arguments pour ta fonction
  • plage à traiter : si elle a plus d'une colonne la fonction renvoie #valeur
  • numéro à traiter
  • moyenne
Ainsi
  • on ne s'occupe plus de la colonne A (quand elle est vide la fonction ne marchait pas !)
  • la colonne à calculer et le numéro sont indépendants (car ton second cas n'ayant que des 1, la fonction ne traitait que la colonne 2)
Si grâce à cela, tu gagnes à l'Euromillions, j'espère 10% !
 

Pièces jointes

  • Euromillion2004-2008R4.xls
    45.5 KB · Affichages: 62

Lii

XLDnaute Impliqué
Re : Macro ou fonction à changer

Bonjour,


Pour m'être penché sur la question et sans avoir testé les derniers envois.
Pourquoi ne pas arrondir directement sur la feuille ?
Pas besoin du 2ième paramètre pour la fonction si tu as prévu la ligne (228).
A tester, avec une autre macro que tu peux facilement transformer en fonction et qui gère bien les * !
La mise en couleur ne sert que de contrôle.

Adaptation de ma macro au dernier envoi en fichier joint.

Remarque : tu peux toujours d'amuser avec des ARRONDI.INF, ARRONDI.SUP !
 

Pièces jointes

  • CompteSi.zip
    27.1 KB · Affichages: 26
  • Euromillion2004-2008R4-10.zip
    11.2 KB · Affichages: 34
Dernière édition:

Jimy

XLDnaute Occasionnel
Re : Macro ou fonction à changer

Bonjour à tous.
Et merci de votre sollicitude :)
Woaw ! ça devient de plus en plus compliqué !
Maintenant il faut une macro en plus :eek:
Je m'en vais tester tout cela en adaptant sur le fichier de test. cela a l'air de marcher, je changerais juste la position "C50" dans la macro pour pouvoir addapter a mon fichier.
Petite question, à quoi sert cette macro ?
Question 2: est ce nécessaire la colonne avec les dates ?
En tout cas, merci encore devotre aide car tout seul je ne m'en serais jamais sorti :eek:
Et une bonne fête avec feu d'artifices :)
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Macro ou fonction à changer

Bonjour Lii

Concernant l'arrondi de la moyenne, le fait de la mettre dans la fonction allège la formule et surtout cela fonctionne si on oublie de le faire dans la formule.

La mise en couleur est une bonne idée.

Mais cette macro comme l'autre fonction que tu proposes produira les mêmes problème si la colonne A est vide (envoi de 13h27 de Jimy) et/ou les données pas placées à partir de la ligne 2 ou la moyenne pas en ligne 228...

D'où la nécessité de travailler sur une plage passée en argument comme fait dans le dernier fichier que j'ai transmis.
 

Jimy

XLDnaute Occasionnel
Re : Macro ou fonction à changer

Bonjour à tous
Après intense utilisation de la fonction bizzarement elle génère une erreur de réfèrence circulaire :confused: comprends pas... d'autant que j'ai vérifié et les plages concèrnées n'étaient pas comprises dans la cellule de la formule.
Pour la macro couleur je ne l'ai pas mise car je n'en ai pas l'utilité.
sinon pour le reste ça va
 

Jimy

XLDnaute Occasionnel
Re : Macro ou fonction à changer

Bonjour à tous.
Il y a aussi une réaction bizzare, quand j'ouvre un autre fichier (qui n'a rien à voir) les résultats changent tout seul et pire quand j'entre une formule dans une autre feuille le résultat de précocité revient à zéro...
ne peut on pas arriver a obtenir le même résultat avec une ou plusieur formules Excel ?
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 857
Membres
103 979
dernier inscrit
bderradji