Macro conditions imbriquées
Bonjour,
J'aurais besoin d'aide pour créer une macro permettant de modéliser un tableau avec plusieurs condition imbriquées.
Merci !
Salut,
Je ne suis pas certain d’avoir tout bien compris, mais regarde le fichier ci-joint, ça peut probablement être un point de départ.
Sur la feuille « Résultat » tu n’as rien pour l’instant. A condition que les macros soient bien enclenchées sur ta machine, lorsque tu quittes cette feuille et que tu la sélectionnes à nouveau, elle est actualisée en fonction de la feuille « Base ».
Afin de faire de nouveaux essais, tu peux modifier la feuille « Base » et voir le résultat sur la feuille …… « Résultat ».
A te relire.
Bonjour Yvouille,
D'abord un grand merci pour ton travail et bien entendu je m'excuse de te répondre aussi tardivement.
Après avoir analyser le code, pour répondre à ta question, oui c'est bien la colonne "B" qu'il faut contrôler la dernière ligne de chaque "section".
Dans la feuille résultat les colonne compte ana et lib ana n'est pas remplie. Est -ce par rapport à ta question et à ce moment là il faut compléter le code?
En te souhaitant une bonne journée
Bonjour,
Je ne comprenais tout d’abord pas que tu répondes à des questions que je n’avais pas posées
Contrairement à ton exemple sur lequel tu avais inscrit des informations dans les colonnes « Compt ana » et « lib ana », je n’y avais encore rien mis dans l’attente d’informations complémentaires. Comme elles ne sont pas vraiment arrivées, voici mes questions :
Je vois qu’il n’y a qu’une section d’indiquée en jaune. Le début se trouve à ta ligne 3 (maintenant également sur ma feuille « Base ») et la fin sur la ligne 22.
Qu’en est-il des lignes suivantes ? Ont-elles également une section qui leur sera attribuées ? Si non, il faut remplir les colonnes
« Compt ana » et « lib ana » des seules lignes 5 à 21 ??
Si nécessaire, fournis-moi une feuille de base un peu plus complète et un peu plus représentative.
Dernière question : que signifie « Kaizoku o ni ore wa naru ! »
Amicalement.
Bonjour Yvouille,
Oui je me rend compte que le fichier d'extraction de la base de données était très limitative, et je m'en excuse.
En fait chaque écritures commençant par "6xxxx" dans la colonne C correspondent à des écritures comptables et celles-ci sont imbriquées dans des sections analytiques (commençant par "2xxxxxx..." dans la colonne B).
Chaque sections analytique commencent et se terminent comme cet exemple :
0221000000000 ATELIER TOURNAGE
(toutes les écritures comptables)
Total 0221000000000 ATELIER TOURNAGE XXXX €
Tu trouveras ci-joint l'extraction complète. j'ai commencé par coloré quelques sections analytiques afin d'éclairer mon explication...
Enfin, pour répondre à ta dernière question, " kaizoku o ni ore wa naru !" qui veut dire en japonnais "Je deviendrais le seigneur des pirates" correspond à une phrase emblématique d'un héros de manga (One Piece) que j'apprécie particulièrement
C'est en quelque sorte une motivation pour atteindre son rêve et qui me motive également dans ma vie de tous les jours... lol
Amicalement,
Une très bonne journée !
Re,
En ce qui concerne ta devise, je pensais apprendre de la sorte que tu provenais d’une région méga exotique du globe, mais bon, je présume que tu n’es pas japonaise
Concernant ton fichier, j’ai ajouté une numérotation la première section (dans les cellules B3 et D1789, numéro 0000000000000) afin que la macro prennent en compte toutes les sections. Si cette première section devait être ignorée, à voir comment on va corriger le code.
Afin de pouvoir contrôler les totaux des lignes transférées, j’ai ajouté des formules dans les colonnes N et O des ta feuilles Grand-livre analytique et dont je reporte les montants aux colonnes N et O de la feuille Résultat. Ca semble jouer. Ces totaux peuvent être supprimés par la suite si tu ne les désires plus lors de prochains lancements de la macro.
Dans ta première feuille exemple – reprise dans ce fichier sous le nom Tel que reçu la première fois – tu avais des chiffres dans la colonne L que tu m’avais demandé de reporter dans la colonne H de la feuille Résultat(Débit) puis d’effectuer un calcul dans la colonne J (Débit-Crédit).
Actuellement tu n’as plus de chiffre dans la colonne L de ta nouvelle feuille Grand-livre analytique, alors le calcul toujours en place dans la colonne J de la feuille Résultat est toujours sur 0.
Ce code demande environ 10 secondes chez moi pour traiter tes 2 à 3000 lignes.
Je ne sais pas si tu as besoin de totaux par sections, par écritures ?
Je n’ai pas compris non plus si ce travail était unique ou si tu allais devoir effectuer de tels reports régulièrement sur la base d’autres chiffres.
A te relire.
Re,
Et non comme tu l'as deviné je ne viens pas du Japon mais de l'île de la Réunion.... C'est pas méga exotique mais c'est déjà pas mal je pense...
Pour la section "écritures non ventilées" c'est normal qu'il n'y ait pas de codes, car c'est justement l'objet de mon travail. Mon but étant d'affecter ces écritures non ventilées en analytique, car il est prévu que j'effectue ce travail tous les mois sur des extractions différentes... Mais j'avoue que pour faire fonctionner le code javais pensé à lui attribuer un code un peu comme tu l'as proposé...
Dans le premier fichier envoyé je n'avais pas supprimé les colonnes inutiles et c'est pour cela que la colonne débit était en "L". Cependant, dans cet extrait, il n'y avait pas la colonne de crédit....
C'est pour cela que je t'ai renvoyé le deuxième extrait de la base ("Grand Livre Analytique") et pour simplifier la lecture, j'ai supprimé les colonnes vides... De ce fait la colonne débit se trouve en "J" et crédit en "K". Et donc théoriquement devrait apparaître respectivement dans la feuille "Résultat" en "H" et "I" (J'ai honte je ne t'ai même pas mis les titres des colonnes dans l'extrait de base de données... je m'en excuse...). Du coup comment puis je faire pour faire apparaître les données dans les bonnes colonnes? A quel moment dois-je changer le code?
En tout cas le résultat final est exactement comme je le voulais, même mieux..
Tout ça pour te dire un GRAND MERCI, tout ce que tu as fait est parfait, je n'ai rien à redire, et franchement sans toi je n'y serais arriver jusque là...
Je n'hésiterai pas à revenir vers toi si j'ai d'autres questions. Merci encore et une très bonne soirée à toi !
Au plaisir !
Salut,
Pour un suisse des Alpes, l’Ile de la Réunion est effectivement déjà bien exotique
Tu poses quelques questions puis tu indiques que tu reviendras si tu as besoin d’aide
Je n’ai pas compris si tu désirais pouvoir changer les codes toi-même. Quelles sont tes connaissances en VBA ? Faut-il t’expliquer où modifier les codes ou veux-tu que je le fasse moi ? Dans tous les cas, si tu as besoin d’aide, sois très précise dans tes demandes.
A te relire
Bonjour,
Pardonne moi si je n'ai pas été claire...
J'ai quelques connaissance en vba mais j'avoue que dans ton code il y a certaines "formules" que je ne connaissais pas.
J'ai juste une dernière question concernant ce cas excel :
- Comment puis je faire pour faire apparaître les colonnes "J" et "K" de la feuille "Grand livre analytique", respectivement dans les colonnes "H" et "I" dans la feuille "Résultat" ?
Après libre à toi de me le dire et a ce moment là je le change dans le code ou je te laisse le soin de le modifier. Je m'adapte à ta façon de travailler.
Pour l'instant tu as répondu à toutes mes question concernant ce sujet.
De manière générale, si un jour je me retrouve dans l'impasse avec un travail Excel et notamment en vba, je n'hésiterai pas a me tourner vers toi pour avoir quelques conseils...
La bonne journée !
Re-bonjour,
Si tu as de l’intérêt pour le VBA, je t’explique volontiers un ou deux trucs (mais je ne peux pas te faire un cours complet non plus).
Dans le code, tu as la ligne With Sheets("Grand-livre analytique") puis beaucoup plus loin l’autre ligne End With 'Sheets("Grand-livre analytique")
Entre ces deux lignes, chaque fois que tu vois un point devant les mots Cells ou Range, ça fait référence à la feuille "Grand-livre analytique".
Parfois tu vois les mots ActiveSheet devant les mots Cells ou Range, ça fait donc référence à la feuille active qui est la feuille "Résultat" (puisque c’est le fait d’avoir sélectionné cette feuille qui déclenche cette macro événementielle). J’avais placé ces mots ActiveSheet par sécurité, sans trop réfléchir s’ils étaient absolument nécessaires ou non. Mais je me rends compte que sur la ligne Range("J" & DerLig_Résultat + k).FormulaR1C1 = "=RC[-2]-RC[-1]" j’ai oublié de placer ActiveSheet devant et ça fonctionne quand même. Le code considère donc par défaut qu’il s’agit de la feuille active.
Tu remarqueras alors que dans une ligne telle que ActiveSheet.Range("E" & DerLig_Résultat + k) = .Range("C" & j) on dit que la cellule de la feuille active de la colonne E de la ligne traitée (selon les valeurs des variables DerLig_Résultat + k) doit recevoir la valeur de la cellule C de la feuille "Grand-livre analytique" de l’autre ligne traitée dans cette autre feuille (selon la valeur de la variable j).
Est-ce que tu t’en sors avec ces explications ?
Un indice : pour l’instant la colonne L de la feuille "Grand-livre analytique" est transférée dans la colonne H de la feuille "Résultat". Si tu remplaces le L par un J dans la bonne ligne du code, tu as déjà résolu la moitié de ton problème. Pour le transfert de la colonne K à la colonne I, tu dois ajouter une ligne (par copier-coller ?).
Si tes nouveaux problèmes concernent ce code, reviens sur ce fil. S’il s’agit d’un nouveau problème Excel, ouvre un nouveau fil. Si l’un de tes fils est résolu, ce serait sympa de l’indiquer comme tel en cliquant sur le petit V vert dans l’un de tes messages (après les remerciements d’usage
Cordialement.
Re,
Merci beaucoup pour ces explications, elle m'éclairent pas beaucoup !
En travaillant ce matin avec ton code sur mes extractions j'ai pu modifier les variables et donc faire apparaître les montants dans la bonne colonne.
Je signale de ce pas que mon problème est résolu
Encore un grand MERCI!