Aide Find

Bonjour à tous,

Voici mon problème (fichier simplifié ci-joint) :

On cherche à savoir quel compte(s) est (sont) transféré(s) dans le nouveau compte.

Les lignes sont traitées 1 par 1.

Un SumIf réalise la somme des Cash-Out qui regroupent la même date que la ligne traitée.

Si la somme est égale au Cash-In de la ligne traitée, alors le (les) comptes correspondants sont assignés à la colonne "Previous UC 1" puis le cas échéant à "Previous UC 2" de la ligne traitée (on affiche les comptes précédents en soit).

J'ai fait de multiples essais mais c'est que de l'embourbage en règle, merci pour votre aide !

8comp.xlsb (27.48 Ko)

Bonsoir,

Si tu précisais ton problème exact, en rapport avec le titre de ton post, et à quel endroit il se situe dans le code, ce serait peut-être plus productif...

On pourrait au moins se centrer sur le problème qui coince...

Cordialement.

Le code est totalement épuré si tu regardes dans le fichier et donne directement sur ma problématique !

(J'ai simplement laissé les Dim et Set du fichier général pour s'assurer du bon fonctionnement)

Pour l'explication de ma recherche que désires-tu savoir ? Les explications sont dans la demande, pour préciser je dirai que j'ai toujours un error object que j'ai trituré dans tous les sens, et que je ne vois pas comment répartir les résultats du Find dans deux colonnes si il y a deux résultats...!

Merci encore

Ouais ! J'attendais simplement que tu me dises qu'il s'agissait de l'erreur 91, sur quelle ligne elle se déclenchait, et subsidiairement que k avait la valeur 7 au moment de l'erreur !

Parce que si je veux bien tenter de déboguer ce qui relève du code, c'est en entrant le moins possible dans la matière concrète qu'elle doit traiter mais qui ne me concerne pas hors les aspects types de données, qualifications, et autres articulations qui ont une incidence sur le code... Cela m'évite d'aller fouiller le coffre de ta voiture s'il y a un problème d'allumage déjà identifié.

Ceci étant, sans regarder trop plus avant, il me semblait dans un premier temps que ce n'était pas une bonne idée de faire partir k de 7 (ta ligne de titres me semblait-il). Mais les corrections sur ce point augmentaient le nombre de msgbox mais finissait toujours par une erreur.

En y regardant de plus près, ton second terme de boucle se pondérait par un -8, ce qui impliquait bien que k ne devait pas démarrer à 7 mais à 1.

Mais pas suffisant pour lever l'erreur... 3e faisceau d'observation la circonscrit au cas où la condition d'égalité est vérifiée, soit présomption que c'est bien sur cette ligne que ça se passe. En fait débuter à k=7 shuntait les éléments précédents pour démarrer sur une égalité.

Ayant été contraint de lire tes affectations prématurément (imbuvable pour moi qui ne fait pas trop bon ménage avec la "finance" ), j'ai trouvé assez vite que tu aurais intérêt à remplacer S_FindRedDate par S_RedDate.

Et effectivement cela marche mieux comme ça !

Note que ce ne sont ni des erreurs de codage, ni des erreurs grossières de syntaxe, et donc pas graves (j'en fais de bien pires dans le genre... ! ) que tu aurais trouvées rapidement à tête reposée.

Cordialement.

Merci pour ta réponse ! Effectivement de la fatigue là dessous

Le k aurait dû être à 1 et la MsgBox inexistante, c'était à cause de tests que j'avais réalisé sur cette ligne que j'ai totalement oublié de modifier dans mon code général !

Autrement je ne peux pas remplacer par S_RedDate, je vais tenter de repréciser mon but plus clairement :

  • Chaque compte a une date de début et de fin (Iss Date/Red Date)
  • Il arrive qu'un compte sur la fin soit transféré à un ou plusieurs autres comptes
  • Pour vérifier cela, on regarde à chaque nouveau compte si la date de début correspond à la date de fin d'un ou plusieurs autre compte (d'où proviennent donc les fonds)
  • ...et si c'est le cas, le sum if nous permet de vérifier si à cette date, les fonds des anciens comptes correspondent aux fonds des nouveaux
  • Alors banco, on note dans Prev UC 1 voire 2 les comptes d'où proviennent les comptes pour une ligne

Une version épurée du fichier ci-joint

Je continue bien évidemment de chercher, la pression monte ici

4comp.xlsb (27.42 Ko)

Ne repars pas sur tes explications de comptes... !

Relis ce que j'ai écris !

S_RedDate est une variable qui existe bien, qui est initialisée, qui doit intervenir dans la formule de calcul...

sauf que tu as écris dans cette formule : S_FindRedDate qui, elle, n'existe pas !

Cordialement.

Bien vu...

J'ai rajouté

Dim S_FindRedDate As String

au début et je suis en plein Object Error, j'ai essayé aves As Date aussi, je crois que je deviens fou

3comp.xlsb (26.38 Ko)

OK mais c'est plus le même problème alors ! (au moins pour moi).

Tu l'initialises avec quelle valeur cette nouvelle variable ?

Set S_FindRedDate = Summary.Range("G9:G100000").Find(S_RedDate.Offset(k + 1, 0).Value)

C'est déjà dans le code, mais noyé dans la masse je le reconnais

Si le Set XXX dépend de l'incrémentation de k, faut-il obligatoirement le mettre après le For ? C'est peut-être ça tout compte fait, je tente !

[EDIT] Eh non...

Solution trouvée !

Je ne le savais pas mais si la solution est "Nothing" avec find et que l'on tente malgré tout d'exploiter la boucle, tout fout le camps. Un If et le tour est joué

Merci pour ton aiguillage précieux !

Bravo et bon courage pour la suite du "traçage"...

Rechercher des sujets similaires à "aide find"