Traitement de séries de nombres

Slt à tout le Forum,

2 code dont j'aurais besoin, qui ne me paraissent pas compliqués à écrire mais qui dépassent mes capacités du moment.

En fichier joint, les explicatifs et résultats attendus.

Un grand merci à vous par avance pour votre aide.

Bonne soirée

Salut,

il y a un 5 en G50 et un 11 en F110, j'imagine que c'est une erreur.

Tu veux ça d'office en VBA ou des formules dans les cellules peuvent convenir ?

Slt Doux Rêves,

Il s'agit effectivement d'erreurs de ma part, parce qu'en étant trop dans le truc, on voit plus tout, même en se relisant et relisant encore avant de poster.

Je crois que si tu as relevé ces 2 erreurs, c'est que tu as compris le truc que je voulais et c'est donc top...

Oui, je souhaiterais 2 codes en 2 fichiers. Un code pour traiter une série de nombres en temps réel au fur et à mesure de la sortie de chaque nombre et un autre pour traiter des séries passées déjà enregistrées.

Un grand merci à toi de t'intéresser au sujet que je propose.

Bonne soirée

Ok, ne connaissant quasi rien au VBA, je ne pourrai pas faire beaucoup avancer le schmilblick.

Mais dans le doute, voici une première approche qui répond en partie à tes demandes ;

traitement de series de nombres modif par doux reveur b

J'ai vu une autre erreur, tu as tapé la lettre G au lieu de C dans la ligne 111.

Slt Doux Rêveur; Slt le Forum,

Je ne suis pas fan des formules mais bon si cela peut permettre le traitement de séries tel que je le souhaite pourquoi pas.

Sauf qu'en étirant ta formule sur une série plus longue le résultat attendu n'est pas le même.

Voir en ligne 14 du fichier joint une série traitée manuellement.

Bonne journée.

Bonjour à tous,

Sauf qu'en étirant ta formule sur une série plus longue le résultat attendu n'est pas le même.

Et si tu étirais également la formule sur la ligne 9....? (cette ligne est utilisée dans la formule:=SI(SOMMEPROD(--(DROITE(H3;1)*1=C9:G9))=0;"C";"P") )


Un essai par macro :


Cordialement,

Slt le Forum,

Slt à toi Xorsankukai,

Toujours pas fan de formules mais j'ai testé quand-même. Merci Xor de m'avoir donné l'info de l'utilisation de la ligne 9 car il fallait en fait passer par là mais je n'avais pas compris cette chose qui pouvait paraître évidente pour Doux Rêve.

Du coup, j'ai appliqué... et vous livre le comparatif entre les résultats obtenus avec la formule et les résultats manuels sur une série aléatoire.

Il reste peu de détails à affiner pour la formule proposée par Doux Rêve dont je vous livre le comparatif avec commentaires en fichier joint.

Je testerais dans la nuit prochaine la macro d'Xor.

En tout les cas, un grand merci vous votre aide .

Bonne fin de journée

Oupsssssssssssssss pas tout compris Xor pour "la ligne 6",

En terme de macro, j'imaginais la sélection de la ligne de données complète et lancement du code.

A la macro de sélectionner les 5 premiers nombres sans "doublons" (en terme de finales) de la sélection. Puis application de a procédure réexpliquée dans mon dernier fichier envoyé...

Re,

Oupsssssssssssssss pas tout compris Xor pour "la ligne 6",

J'ai écrit volontairement sur la ligne 6 afin de pouvoir comparer avec le résultat attendu en ligne 5 😉

Il suffira de modifier la ligne dans le code pour écrire en ligne 5.

Cordialement,

Re Xor,

J'ai modifié ton code pour changer de ligne effectivement. Jusque-là je sais faire, lol

En revanche, le résultat attendu est celui de la ligne 15 de mon dernier fichier où je compare et commente les écarts constatés entre les résultats contenus dans la ligne 5 (qui est le résultat de la formule proposée par Doux Rêves) et les résultats de la ligne 15 qui est en fait le résultat attendu.

Dans mon dernier fichier comparatif (que je joins à nouveau), il faut se rendre directement à la colonne "AK" et faire ensuite défilé jusqu'à la fin de la série à traiter pour se rendre compte du détail qui manque et que j'explicite au mieux, je crois.

Ta codification ou la formule de Doux Rêves ne tiennent pas compte de l'élément suivant répété à plusieurs reprises dans mes explicatifs :

5 derniers numéros précédents dont les finales sont différentes.

On est pas loin.

Encore merci à vous.

Bien cordialement et bonne fin de soirée

Bonsoir fouggy , à tous,

Moi aussi je veux participer ...

Mes deux petites versions (série complète ou série pas à pas). Le code est dans module1 et il est un peu commenté.

On peut utiliser le pas à pas après avoir traité une série complète. Le contraire n'est pas vrai car on perdra les précédents résultats.

Cliquer sur les boutons selon votre humeur...

J'ai fait quelques vérifications mais sans doute pas comme pourrait le faire fouggy.

Bonsoir MaFraise,

Merci pour ta contribution, mais malheureusement le traitement de la série que tu proposes ne correspond pa à ma demande d'aide.

En effet, dans ta colonne AD, pour le nombre "30", et donc finale "0", les 5 derniers nombres ont des finales : 1 ; 2 ; 4 ; 5 ; 9 et dans l'ordre chronologique inverse : 105 ; 169 ; 204 ; 61 ; 172.

L'incrémentation doit donc être "C" et non "P"

A revoir mon dernier fichier posté.

Je pensais franchement que ma demande était simple mais ce n'est apparemment pas le cas

Bonne fin de soirée à tous

Ta codification ou la formule de Doux Rêves ne tiennent pas compte de l'élément suivant répété à plusieurs reprises dans mes explicatifs :

5 derniers numéros précédents dont les finales sont différentes.

Ah si, cette condition était bien dans le fichier que j'ai proposé. La ligne 9 renvoie le dernier chiffre de la ligne 3 et la ligne 5 utilise ces chiffres.

Re

fouggy à écrit :

Merci pour ta contribution, mais malheureusement le traitement de la série que tu proposes ne correspond pas à ma demande d'aide.

En effet, dans ta colonne AD, pour le nombre "30", et donc finale "0", les 5 derniers nombres ont des finales : 1 ; 2 ; 4 ; 5 ; 9 et dans l'ordre chronologique inverse : 105 ; 169 ; 204 ; 61 ; 172.

L'incrémentation doit donc être "C" et non "P"

Merci pour tes vérifications.

Effectivement dans mon code de la fonction SerieUnit() j’avais cette instruction :

sUnit5 = 0                                ' on crée le string sUnit5 contenant les 5 précédentes unités distinctes

C'est ma très grande faute. sUnit5 est un string et doit donc être initialisé avec la chaine vide "". Cela explique pourquoi tous les nombres se terminant par 0 comportaient un "P" puisque la chaine de caractères des 5 dernières unités distinctes comportaient forcément un 0 à cause de l'initialisation erronée.

J'ai fait la correction.

sUnit5 = ""                                ' on crée le string sUnit5 contenant les 5 précédentes unités distinctes

C'est corrigé dans la v2 qui est jointe à ce message.

Slt Mafraise et tous les autres,

Un grand merci à toi pour avoir apporté une réponse très précise et correspondant exactement à ma demande

Ceci étant il resterait un dernier détail, léger, dont je pourrais me passer en rectifiant de moi-même à chaque fois mais qui serait vraiment du tip top.

En effet, dans le traitement des séries que ton code aborde il démarre à partir des 5 premiers chiffres "quelques qu'ils soient" avant de commencer l'incrémentation des "C" ou "P", l'incrémentation étant elle-même au top en tant qu'elle respecte scrupuleusement les conditions posées après de nombreuses vérifications sur plusieurs séries.

Il faudrait en effet que l'incrémentation des "C" ou "P" débute à partir de 5 nombres dont eux aussi ont des finales différents.

En fichier joint le début des séries que j'ai traité ce en comparatif avec ton code proposé et pour lesquels j'ai du apporter des rectifications à la main.

Vu ton niveau affiché la rectif doit être peanuts.

Bonne fin de soirée

Bonsoir fouggy ,

fouggy à écrit :

Il faudrait en effet que l'incrémentation des "C" ou "P" débute à partir de 5 nombres dont eux aussi ont des finales différents
Voici la version v3 qui devrait répondre à ton souhait.
Rechercher des sujets similaires à "traitement series nombres"