Insertion de chapitre - Dur dur

Je viens de regarder très rapidement ton fichier (je le regarderais plus en détail dans l'aprèm).

Et je me rends compte que laisser la possibilité de choisir la façon de numéroter les chapitres (chiffres, chiffres romain, lettres...) va grandement compliquer les choses

Je vais donc demander l'avis d'un collègue cette aprèm pour savoir si cette liberté est vraiment indispensable, ou si on peut se permettre de toujours les nommer de la même manière (1,2,3...).

Je poste dès que j'ai du nouveau.

Bon, après échange et négociation, on va supprimer la liberté de pouvoir nommé comme souhaité le numéro de chapitre.

Il sera forcément sous la forme 1, 2, 3, ...

Concernant la macro, merci d'avoir mis en commentaire des bouts de mon ancien code afin que je puisse comparer les façons de faire.

Je vois que tu as donné un bon coup de ménage ! et que j'ai encore énormément à apprendre

Pour la suppression de texte dans les colonnes (que je réalisais par le biais d'une boucle), je comprends maintenant comment sélectionner plusieurs colonnes, chose que je n'arrivais pas à faire malgré plusieurs essais, d'où l'utilisation des boucles. Le résultat est maintenant beaucoup plus claire et rapide à écrire

Concernant la colonne A, en effet je ne sais pas pourquoi je la supprimais pour essayer de la réécrire. Elle fonctionne, donc pas touche ! Comme quoi être trop le nez sur le même dossier nous fait oublier qu'il est souvent nécessaire de prendre un peu de recul sur ce que l'on fait, ce que l'on souhaite faire et la manière dont on le fait.

J'ai également remarqué que tu as nommé une plage de cellule afin de pouvoir y faire appel sans utiliser de "select" (dont j'ai bien compris qu'il faut en limiter au maximum l'utilisation). Je n'y avais pas pensé...

Un grand merci !

Bonjour,

J'ai eu une rixe avec l'insertion de lignes pour l'écriture des chapitres sous Récapitulatif qui me donnait des références circulaires en L et M ... les dernières formules du bas.

Après quelques bleus, j'ai fini par trouver la cause et pu corriger ce problème.

Je suis un peu inquiet des boutons "Ajouter Lignes" et "Ajouter détails". Je n'ai pas testé s'ils posent problème avec les codes des boutons "Ajouter Chapitre(s)" et "Supprimer(s) ... lesquels, comme pitou, suivent partout (je te laisse découvrir).

Pour supprimer des chapitres, j'ai utilisé un formulaire avec une listbox ... on sélectionne le chapitre à supprimer et on utilise le bouton. Tu remarqueras que le chapitre1 n'apparaît pas dans la liste ... puisqu'il est le modèle à copier, on ne peut donc pas le supprimer. Si le listbox est vide, c'est qu'il n'y a que le chapitre1. Suite à des suppressions d'un chapitre, la listbox adapte la liste, si le listbox se vide, il se fermera après la dernière suppression.

Étant donné que tu aimes bien les plages nommées, j'utilise :

  • CHAP001 (et x) pour la première ligne du chapitre
  • _TT001 (et x) pour la ligne Total HT Chapitre
  • Ch_Recap001 (et x) pour la ligne du chapitre en récapitulatif.

Je te laisse regarder cela... voir si ça convient.

ric

Bonjour Ric,

Alors là chapeau Un grand merci à toi pour tout le temps déjà passé sur ce fichier (temps déjà conséquent je suis sur !).

Par contre j'avoue avoir de plus en plus de mal dans le fonctionnement du code… mais je vais continuer d'analyser tout ça !

Super les boutons "Ajouter Chapitre(s)" et "Supprimer(s) Chapitre(s)" qui suivent la position de la ligne sélectionnée !! Je ne trouvais pas où était la partie du code permettant cette prouesse... et j'ai fini par la trouver dans la feuille 2, et ce n'est visiblement pas compliqué à mettre en place donc c'est top !

Par contre je ne vois pas ce qu'est "comme pitou" , a moins que ce soit comme un patou, le Chien de Montagne des Pyrénées

Le fonctionnement de la listbox est top, il me convient parfaitement !!

Tu avais raison d'être inquiet sur les fonctions d'ajout de ligne et de détail, car dès qu'ils ont été utilisés, l'insertion ne se fait plus au bon emplacement (car basé sur 20 lignes dans le code).

On pourrait imaginer que le chapitre 1 et sa ligne de récap soit masqué (pour ne pas être utilisé) et serait nommé chapitre 0 (si c'est possible), il serait impossible pour l'utilisateur de l'utiliser (et donc d'ajouter des lignes ou des détails).

Actuellement la variable adresse est égale à la cellule nommée "LigRecap" - 20 lignes.

Il faudrait qu'elle soit égale à "_TT001" (et x, correspondant à la ligne Total HT Chapitre) + 2 lignes (étant donnée qu'il y a une ligne vide sous le total).

Comme ça peut importe s'il a été ajouté des lignes ou des détails dans les chapitres, l'insertion se fait depuis la fin du chapitre, et non depuis un nombre de ligne fixe.

C'est une idée, après à voir si c'est réalisable et fonctionnelle.

Par contre pour traduire tout ça en code... car il ne sera jamais fait référence au même _TT, mais au dernier _TT connu.

En tout cas, de nouveau un grand merci pour tout le travail et temps passé sur ce fichier

Moi je vais continuer d'éplucher le code et voir quelles sont les différentes possibilité.

A+

Bonjour,

Par contre je ne vois pas ce qu'est "comme pitou" ,

Je voulais faire référence au petit chien qui te suit partout

Pour les autres remarques, je crois que tous sont réalisables aisément.

Je m'y mets dès que mon cerveau se réveille.

ric

Bonjour,

Question :

- Le bouton "Ajouter des lignes" ... l'insertion de ligne, est-ce toujours entre le texte saisi d'un chapitre et la ligne "TOTAL HT CHAPITREx" ? Ou cela peut être entre les lignes du texte saisi ??

ric

Bonjour,

Pour le moment, l'insertion des lignes à toujours été à l'intérieur d'un chapitre, et jamais entre deux chapitres.

Arnaud

Bonjour,

Je crois que je me suis mal exprimé ... Je reprends ...

Exemple : Chapitre3.

- Première éventualité : Je saisis de l'information sur 15 lignes pour ce chapitre. Je sélectionne la ligne 9 et j'utilise le bouton pour ajouter des lignes à partir de la ligne 9.

- Deuxième éventualité : Les lignes ajoutées devront être à partir de la ligne vide suivante (ici, ligne 16) .

- Troisième éventualité : L'emplacement des lignes ajoutées est au goût de l'utilisateur, tant que c'est entre la ligne CHAPITRE et la ligne TOTAL HT...

Ric

Oula, non ce n'est pas toi, mais moi qui ai mal compris

Actuellement l'insertion des lignes se fait à partir de la ligne sélectionnée lors du lancement de la macro, donc je dirais que ça correspond à la première éventualité.

Mais en testant je me rends compte qu'il est également possible de les insérer entre deux chapitres (exemple entre la ligne "TOTAL HT CHAPITRE 1" et "CHAPITRE 2".

Et je comprends tout de suite que ce fonctionnement est problématique.

Il faudrait donc que le fonctionnement corresponde à la troisième éventualité.

Ce qui implique d'avoir un contrôle sur l'emplacement de la cellule sélectionné lors du lancement de la macro "Ajouter lignes" afin de s'assurer que l'on est à l'intérieur d'un chapitre et non en dehors.

Si l'on est à l'intérieur, lancement de la macro, si l'on est à l'extérieur, un message de ce type "Insertion impossible en dehors d'un chapitre" pourra être indiqué à l'utilisateur.

Idem pour la macro "Ajouter détails".

Je savais que l'insertion d'un chapitre serait quelque chose de compliqué, mais je ne pensais pas qu'il y aurait autant d'incidences

Bonjour,

Ce n'est pas si compliqué... Il faut seulement bien comprendre la problématique.

Aussi, je dois modifier un peu le code pour les fameuses insertions de lignes et "éventuellement" la suppression d'un chapitre dont on aurait ajouter une ou plusieurs fois des lignes.

Pour l'instant, je trouve cela amusant.

ric

Si ce n'est pas si compliqué pour toi, tan mieux, et je dirais même que ça me sauve.

Car pour moi, grand débutant, je trouve que tout se complique.

Après il faut que je prenne suffisamment de temps pour bien décortiquer et analyser les codes et les actions.

Bon courage et encore merci

Bonjour,

Je ne sais plus si j'ai passé à travers toutes les avenues ... je te laisse vérifier.

L'ajout et la suppression se réfèrent maintenant à la position des lignes "CHAPITREx" et "TOTAL HT..x".

Donc peu importe le nombre de fois que l'on insère des lignes (via le bouton).

Peu importe le nombre de lignes que l'on sélectionne pour les supprimer (via le bouton).

Il suffit de sélectionner la plage d'une seule colonne, le code considérera les colonnes de A à M.

Par contre, si on sélectionne une plage chevauchant 2 chapitres (ou plus), la suppression est annulée avec message.

Lors des insertions chapitre ou ensemble de 10 lignes, le contenu est copié à partir du chapitre000, ainsi les formules suivent.

On ne peut insérer des lignes qu'entre "CHAPITREx" et "TOTAL HT..x" d'un même chapitre ... arrêt et message si mal positionné.

Après un repos, je vais nettoyer le code et mieux le documenter.

ric

Rebonjour,

Les modules que j'ai modifiés :

  • Insertion de lignes
  • Suppression_Lignes
  • Test_Insertion_Chapitre
  • le Userform "Supprime_Chapitre"
  • le modul1 > fonction pour vérifier l’existence des plages nommées

J'ai nettoyé un peu et ajouté des commentaires (en espérant qu'ils soient compréhensibles )

Si on supprime le chapitre1 et quelques affichages d'erreur de formule aux lignes 42 à 47. Le tout reviendra à la normale dès qu'un chapitre sera inséré.

Amuse-toi bien ...

ric

Bonjour,

Super t'es un boss !

Je vais regarder tout ça !

Le boulot que tu as effectué jusque-là est juste énorme !! Encore une fois un grand merci à toi !

J'ai relevé différents problèmes que je vais lister ci-dessous:

1 - Il y a deux lignes de récap pour le chapitre 1, si j'en supprime une (peu importe la-quelle), lors de la suppression du chapitre 1 via le bouton, on se retrouve avec une erreur de débogage. Et si je masque seulement une des deux ligne, le total est faux, car il compte deux fois le chapitre 1.

Je vais regarder, mais je pense que l'erreur vient du fait que la première ligne de récap du chap 1 devrai être faire appel à "CHAP000" au lieu de "CHAP001" et être masquée.

2 - Toujours dans les lignes de récap, dans la cellule colonne "I", j'ai un contrôle des sommes qui me permet de repérer une possible erreur.

La formule ne sélectionne plus les bonnes cellules. Si je la corrige manuellement, lors de l'insertion des futurs chapitres, la correction ne suit pas. Je vais essayer de voir où se situe le problème.

3 - Lors de la suppression d'un chapitre, si l'utilisateur clique sur "supprimer" sans avoir sélectionné de chapitre, on se retrouve avec une erreur d'exécution / débogage.

4 - Le bouton d'ajout de détail n'est plus affecté à la macro. Je l'ai réaffecté. Mais le nom des macros "Insertion détail", "Insertion lignes" et "Suppression des lignes" n'est plus présenté / écrit, de la même manière quand on regarde la liste des macros (Alt + F8).

Je ne sais pas pourquoi, n'y s'il y a une incidence sur leur exécution ?

5 - L'ajout de détail reste avec le fonctionnement d'avant (sans contrôle). Il lui faudrait le même fonctionnement que pour l'insertion des lignes.

6 - Lors de l'utilisation du bouton "Suppression des lignes", je me retrouve avec un comportement étrange de la colonne A. Toutes les cellules de la colonne A situé en dessous de la ou les lignes supprimées, perdent le référence, on se retrouve avec un "=REF!".

Voilà ce que j'ai relevé pour le moment. Tous est en vrac, et il faut que j'analyse plus en détail pour voir ce que j'arrive à corriger, et que je puisse te trouver au moins la source du problème et / ou la solution sur ce que je n'arrive pas à faire par moi-même.

Encore une fois, merci, car sans ton aide j'aurais tout simplement abandonné l'idée d'une insertion de chapitre.

Et merci également d'avoir pris le temps de détailler et commenté les différentes ligne de code, ça me permet de mieux comprendre les étapes, et donc d'apprendre !

Bonjour,

Je regarde cela.

Concernant ""=REF!"", je sais d'où ça vient, ce sera facile à corriger.

ric

Petit retour de mon analyse:

1 - Ligne de récap chapitre 1 en double :

Sur la première ligne de récap, modification de l’appel du champ nommé. CHAP000 au lieu de CHAP001, et _TT000 au lieu de _TT001.

Le champ nommé CHAP000 était déjà existant, mais je l’ai modifié, car il faisait appel qu’a $B$18 au lieu de $A$18 :$M$18

Pour _TT000, il n’existait pas, je l’ai donc créé avec $A$36 :$M$36

J’ai ensuite masqué la ligne de récap correspondant au chapitre 0.

Le problème est que cette ligne masquée ne suit pas le reste lors des insertions.

Exemple ligne masqué n°42, si insertion d’un chapitre, la ligne masquée reste la n°42….

2 – Formule de contrôle dans ligne récap :

Je n’ai pas réussi à corriger le problème.

A chaque insertion de chapitre, la formule de la colonne « I » s’incrémente d’une cellule seulement.

Je bloque sur ce cas, et ne vois pas où se situe le problème dans la macro.

3 - Lors de la suppression d'un chapitre, si l'utilisateur clique sur "supprimer" sans avoir sélectionné de chapitre, on se retrouve avec une erreur d'exécution / débogage

Idem que pour le point n°2, je n’arrive pas, enfin non, je ne sais pas comment corriger le problème.

Il faudrait que lorsque l’utilisateur clique sur le bouton « Supprimer » sans avoir sélectionné de chapitre, qu’il y est un message du genre « Veuillez sélectionner un chapitre à supprimer ».

4 - Le bouton d'ajout de détail n'est plus affecté à la macro.

J’ai réaffecté le bouton à la macro.

Le nom de la macro (ainsi que deux autres) est toujours affiché différemment (Alt + F8) sans que je sache si c’est normal et s’il y a une incidence sur quoique ce soit.

J’en ai profité pour colorer les cellules de la même manière que lors de l’insertion des lignes, mais le comportement est différent.

En effet lors de l’insertion des lignes, les colonnes A à M sont coloré, alors que pour le détail, les colonnes A et H ne le sont pas. Je ne comprends pas pourquoi puisque le code est le même.

5 – L'ajout de détail reste avec le fonctionnement d'avant (sans contrôle). Il lui faudrait le même fonctionnement que pour l'insertion des lignes.

Ça reste pour le moment en dehors de mes compétences.

Par contre j’ai remarqué que lorsque l’on a enserré un détail dans un chapitre, lors de la suppression du chapitre par le bouton, la fonction groupée du détail reste) et pose problème pour la suite, car les groupes finissent par se mélanger.

6- Lors de l'utilisation du bouton "Suppression des lignes", je me retrouve avec un comportement étrange de la colonne A avec un "=REF!"

Le problème vient du fait que les cellules font référence à la cellule située juste au-dessus.

Il faudrait qu’elles fassent référence à la cellule B à droite du titre.

Voilà pour le moment, avec le fichier joint des corrections que j’ai pu apporter pour le moment.

Bonjour,

... Le bouton d'ajout de détail ...

Je suis retourné dans les vieilles versions pour comparer "L'insertion de lignes" et "L'insertion de détails".

Est-ce que ça se peut qu'il n'y ait que l'ajout de "groupes de lignes" qui soit différent ??

Si c'est seulement cela la différence ... je vais utiliser la même macro avec une condition supplémentaire.

Pour les boutons qui ont perdu leurs macros ... je suis le coupable ... j'ai corrigé une faute de frappe dans le nom du module ... désolé ne pas avoir testé à fond.

"=REF!". > c'est corrigé.

"clique sur "supprimer" > c'est corrigé aussi.

Je continue la tournée des macros ... je reviens bientôt.

ric

Oui tu es coupable ! Coupable de me donner de plus en plus envi d'approfondir, ou plutôt devrais-je dire, d'apprendre le fonctionnement du VBA, et d'améliorer le mieux possible ce fichier.

Mais certainement pas coupable d'autre chose. Un bouton qui perd sa macro, ce n'est qu'un détail.

Concernant l'ajout de détail, le "groupe de lignes" n'est pas la seule différence malheureusement

Les différences sont:

  • Le groupe de lignes
  • Formatage du texte en italique
  • Les formules sont copiées à l'identique sauf pour les colonnes "F", "G", "L" et "M" où il n'y a plus aucune formule.
  • On modifie la ligne située juste au dessus de l'insertion sur les colonnes "K" et "L" pour que ça prenne la somme du détail.

Mais je me rends compte que la formule qui est dans la colonne "L" devrait être dans la colonne "I". et que "L" devrait être la somme de "E" x "I".

Je regarde pour essayer de corriger la formule dans la macro et te retransmettre le code corrigé pour ce passage.

Ci-dessous la formule corrigée

    'Saisie des formules constituant le détail
    ActiveCell.Offset(0, -2).Select
    ActiveCell.FormulaR1C1 = "=R[-1]C"
    ActiveCell.Offset(0, 7).Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-3]<>0,1,)"
    ActiveCell.Offset(-1, 3).Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(R[1]C[-6]:R[10]C[-6],R[1]C[0]:R[10]C[0])"
    ActiveCell.Offset(0, -2).Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT((R[1]C[0]:R[10]C[0] *R[1]C[-4]:R[10]C[-4])-((R[1]C[0]:R[10]C[0]*R[1]C[1]:R[10]C[1])*R[1]C[-4]:R[10]C[-4]))"
    ActiveCell.Offset(0, 3).Select
    ActiveCell.FormulaR1C1 = "=(R[0]C[-3]*R[0]C[-7])"

N'hésite pas si tu as besoin d'infos ou autres

Rechercher des sujets similaires à "insertion chapitre dur"