Insertion de chapitre - Dur dur

Rebonjour,

>>>ActiveCell >>> représente éventuellement quelle colonne ???? colonne C ?

ric

Oui la colonne C.

Le code est encore "à l’ancienne", je n'ai corrigé que la formule et non l'écriture du code.

Le code complet de la macro Insertion Détail:

Sub Insertion_Détail()

'Déprotection de la feuille
   ActiveSheet.Unprotect Password:="KGV"

   'Désactivation de l'actualisation de l'écran (pour accélérer l'exécution du code)
   Application.ScreenUpdating = False

   'Passage en calcul manuel
   With Application
      .Calculation = xlManual
      .MaxChange = 0.001
   End With

   'Déclaration de la variable "adresse2"
   Dim adresse2 As String

   'Atribution d'une valeur à la variable "adresse2" = ligne sélectionnée lors du lancement de la macro
   adresse2 = ActiveCell.Row

   'Sélection de la cellule "C" sur la ligne "adresse2"
   Range("C" & adresse2).Select

   'Sélection de 10 lignes
   Rows(adresse2 & ":" & adresse2 + 9).Select

   'Insersion de 10 lignes
   Selection.EntireRow.Insert

   'Création d'un groupe constitué des linges insérées
   Selection.Rows.Group

   'Format des lignes insérées (police en italique + couleur de remplissage des cellules)
   Selection.Font.Italic = True
   'With Selection.Interior
      '.ColorIndex = 0
      '.Pattern = xlGray25
      '.PatternColorIndex = 6
   'End With

    With Range("A" & adresse2 & ":M" & adresse2 + 9).Interior
        .ColorIndex = 0
        .Pattern = xlGray25
        .PatternColorIndex = 35
    End With

   'Sélection de la cellule "C" sur la ligne "adresse2"
   Range("c" & adresse2).Select

   'Format de la cellule sélectionnée (alignement à gauche)
   With Selection
      .HorizontalAlignment = xlLeft
   End With

   'Sélection de la cellule "C" sur la ligne "adresse2"
   Range("c" & adresse2).Select

   '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])"

   'Sélection de la ligne "adresse2" et des lignes insérés précédemment
   Rows(adresse2 & ":" & adresse2 + 9).Select
   Selection.FillDown

   'Recopie de la cellules "A" située au dessus de "adresse2" sur toute les cellules "A" insérées
   Range("A" & adresse2 - 1 & ":A" & adresse2 + 9).Select
   Selection.FillDown

   'Recopie de la cellules "H" située au dessus de "adresse2" sur toute les cellules "H" insérées
   Range("H" & adresse2 - 1 & ":H" & adresse2 + 9).Select
   Selection.FillDown

   'Sélection de la cellule "C" sur la ligne "adresse2"
   Range("C" & adresse2).Select

   'Passage en calcul automatique
   With Application
      .Calculation = xlAutomatic
      .MaxChange = 0.001
   End With

   'Activation de l'actualisation de l'écran
   Application.ScreenUpdating = True

   'Protection de la feuille
   ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:= _
                       False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
                       AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
                                                                               :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
                       AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
                       AllowUsingPivotTables:=True, UserInterfaceOnly:=True, Password:="KGV"

End Sub

Bonjour,

Beaucoup de débogages effectués :

  • mauvaise position de la cellule active :
  • --> lors de l'insertion de lignes
  • --> lors de l'insertion de détails
  • --> si pas de chapitre pour l'insertion de lignes ou détails, ou la suppression de lignes
  • --> lors de la suppression de lignes
  • replacer à l'écran (merci Excel-Malin) la cellule active en colonne "O" à la hauteur du chapitre supprimé
  • 1-Ligne de récap chapitre 1 en double
  • 3 - lors de la suppression d'un chapitre, si l'utilisateur clique sur "supprimer" sans avoir sélectionné de chapitre
  • 4 - le bouton d'ajout de détail n'est plus affecté à la macro.
  • 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 avec un "=REF!"
  • et d'autres que j'ai oubliés, car pas noté.

Pas encore vérifié :

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

Je te laisse tester les formules (je n'ai pas regardé)

ric

Bonjour,

P.S. Les boutons "Ajouter et Supprimer Chapitres" se rapprochent parfois ... c'est dû aux lignes masquées.

ric

Bonjour Ric,

N'ayant pas d'excel sur mon PC perso, je ne pourrais pas tester avant lundi.

Mais visiblement tu as une nouvelle fois fait un énorme taf pour déboguer le fichier

Donc un grand

Bon weekend

Bonjour,

V16 = correction de la formule en colonne "i" > ligne du chapitre, section "Récapitulatif" ... la sommeprod.

Elle est maintenant dynamique et s'adapte à la plage du chapitre ajouté.

J'ai testé l'insertion de ligne dans le chapitre et la formule s'adapte bien. Il en va de même pour la suppression de ligne.

En écrivant la phrase précédente, je réalise que la suppression de lignes peut poser problème à la formule sommeprod ... si la sélection à supprimer comporte la ligne immédiatement sous le nom du chapitre ou immédiatement au-dessus de la ligne "Total HT....". Je vais de ce pas aller revoir le code de suppression.

La V16 sera donc jointe dès que la correction sera effectuée.

ric

Bonjour,

À force de zigonner sur le fichier, plusieurs constatations d'irritants ou de bogues m'ont mené jusqu'à la version 19.

Je te laisse poser un regard neuf sur ton projet où il en est rendu.

ric

Bonjour ric,

Une nouvelle fois, merci et bravo à toi pour tout le temps et travail passé sur ce fichier.

Que de chemin parcouru depuis le début où il n'y avait rien ou presque !

J'ai donc bien parcouru le fichier et fait plusieurs tests. Le fichier étant maintenant très avancé, j'ai demandé à un collègue utilisateur de tester en réel pour voir ce qu'il en ressort.

A ajouter si possible:

1 - Avoir un contrôle sur la colonne "B" pour que l'utilisateur ne puisse pas y insérer autre chose que du chiffre, sinon erreur lors l'insertion des futurs chapitre.

2 - Avoir un contrôle pour que l'enregistrement du fichier se fasse en version Excel prenant en charge les macros. En effet le fichier sera un modèle Excel. Chaque utilisateur devra donc enregistrer son fichier via un enregistré sous. Le danger est qu'à ce moment-là, l'utilisateur enregistre le fichier sans prise en charge des macros, et perde donc tout le fonctionnement.

Problèmes rencontrés:

1 - Le calcul automatique d'Excel ne semble pas toujours être activé. J'ai rencontré à plusieurs reprises le cas, mais sans pouvoir le reproduire.

2 - Nous avons relevé un problème qui pour moi semble très compliqué à résoudre.

En effet, si dans le fichier on ajoute par exemple 4 chapitres via le bouton

puis que l'on supprime le chapitre 3 via le bouton également

On renomme le chapitre 4 en chapitre 3.

1 - Si on veut de nouveau supprimer un chapitre via le bouton, dans la liste de choix on se retrouve avec "CHAP001", "CHAP002" et "CHAP004".

2 - Si on ajoute un chapitre via le bouton, le chapitre ajouter prend bien le numéro 4, mais dans le récap, on se retrouve avec 2 fois la récap du chapitre 4. Et si on veut supprimer un chapitre via le bouton, dans la liste de choix on se retrouve avec "CHAP001", "CHAP002" et "CHAP004", soit 3 chapitre en tout, alors qu'il y en a 4 dans le fichier.

Donc là j'avoue que c'est un peu la douche froide pour moi, car à aucun moment je l'ai vu venir celle-là, et surtout je ne vois pas comment contourner ce problème !

La seule solution que je vois c'est que l'on ne puisse supprimer que le dernier chapitre du document, et non un chapitre qui se trouve entre deux. Mais du coup, plus d'utilité pour la liste ?

Bref sur ce point je suis perdu, alors que sur tout le reste, je suis super enthousiaste.

Si tu as une idée?

Bonjour,

Je ne vois pas de problème majeur à ces observations.

Pour le renommage d'un chapitre, il serait simple de le faire via un userform et un 3e bouton poursuiveur tels : "Ajouter Chapitre" et Supprimer Chapitre" ... j'ajouterais "Renommer Chapitre".

Je te tricote quelque chose ...

Ric

Bonjour,

C'est super ! Tu as toujours une solution "simple"

Si tu ajoutes une possibilité de renommage des chapitres, penses-tu qu'il est possible que l'on puisse renommer les chapitres autrement qu'avec des chiffres ?

Étant donné que l'on modifie après l'insertion, il est peut-être possible de renommer les chapitre en A, B, C... au lieu de 1, 2, 3... ?

Bonne journée à toi et encore

Bonjour,

Beaucoup de changements dans la structure du code afin d'éviter les répétions (calcul auto/man, protection, etc.) voir "ModuleOutils"

Un seul formulaire pour supprimer ou renommer des chapitres.

On peut renommer de 1 à 999.

À l'intérieur des chapitres, on peut écrire du texte dans la colonne B sans interférer.

Pour supprimer des lignes, il faut être positionné en colonne C.

J'ai ajouté cette particularité, car la cellule sélectionnée était loin et j'ai accroché le bouton par mégarde.

Pour forcer l'enregistrement en .xlsm ... j'aime mieux ne pas toucher à cela pour l'instant.

Il faudrait passer par un formulaire ... et selon mes premiers tests ... je m'y suis cassé les dents.

Pour ce qui est de renommer les chapitres autrement que basés sur les chiffres ...

Ce n'est pas impossible. Pour cela, je vais devoir y réfléchir.

Déjà une idée ... je regarde cela.

En attendant ... regarde le fichier joint.

Bonjour,

Tu es incroyable

Comment fais-tu pour apporter toutes ses modifications en si peu de temps !

Je viens de regarder la version 24. Le seul point que je relève est que l'insertion de chapitre ne fonctionne plus, il y a une erreur dans l'exécution de la macro

Concernant le module outils, en effet c'est une très bonne idée car ce sont des fonctions utilisées très régulièrement, donc autant évité de les réécrire dans le code à chaque fois.

Pas de soucis pour la contrainte de la colonne C pour la suppression de ligne.

Pour l'enregistrement en .xlsm, ne te prend pas trop la tête. Après tout, il faut bien que les utilisateurs futurs réfléchissent un minimum a ce qu'ils font Et puis il ne faudrait pas que ça complique le fichier. Il est déjà pas mal chargé. Donc si ça peut se faire de manière simple oui, sinon on laisse tomber sur cette fonction.

Concernant le renommage autrement que par des chiffres, il est vrai que c'est quelque chose que les utilisateurs demandent.

Donc si c'est faisable c'est le top.

Encore merci à toi.

Bonne journée.

Bonjour,

Bizzzarrreee! Ici, l'insertion de chapitres fonctionne bien.

Pour vérifier, je viens de télécharger la version 24 soumise dernièrement ... et elle fonctionne bien également.

Si on laisse intacte les numéros dans la colonne B voisins de "CHAPITRE x", "CHAPITRE x" lui-même est un formule que l'on peut aisément l'écraser (sans conséquence) par du texte quelconque ... Exemple "CHAPITRE Vendredi XIII".

Quoi qu'il en soit, je cogite sur une version où l'on pourrait ...

Ric

Oui bizarre, je viens de refaire le test et j'ai bien une "Erreur d'exécution '13' Incompatibilité de type".

Une version où l'on pourrait quoi?

Je suis sûr que c'est encore un super truc !

probleme ajout chapitre

Bonjour,

Dans le gestionnaire des noms ...

S'il te manque des noms ou il y a des noms en référence perdue ( #ref......) peut être la cause..

Pour chaque chapitre, il y a CHAP00x, _TT00x et Ch_Recap00x.

Sans compter : ChapSource et ChapSourceRecap pour l'ensemble.

Je continue à cogiter sur ton désir de chapitres décapités ou émasculés tel un chapon.

ric

Bonjour,

Une ébauche ... la seule action validée est le bouton "Supprimer / Modifier" ... tout juste pour aller voir, rien d'autre.

Les cellules en colonne B voisines des chapitres pourraient avoir une couleur délavée.

Change la description de ton chapitre en colonne C et retourne voir avec le bouton "Supprimer/ Modifier".

Si cette approche te convient, tout le dessous déjà programmé n'aurait que peu à être retouché.

Donne-moi tes impressions.

En espérant que le bouton "Supprimer/Modifie" affiche le résultat.

ric

Rebonjour,

Si ça ne convient pas, peux-tu me soumettre un exemple d'une présentation hétéroclite quotidienne?

Si tu ne veux pas montrer à tous, envoie moi cela en message privé.

ric

Bonjour,

Je viens de tester la version 25.

1- L'ajout de chapitre ne fonctionne toujours pas pour moi.

J'ai vérifié dans le gestionnaire des noms, et rien ne manque, ni noms, ni références.

Je ne comprends pas ce qui se passe.

Dans le débogage, c'est cette partie de code qui est surligné en jaune "Dl = Right(PlageNommees, 3)"

2- J'ai testé tout les autres boutons, tous fonctionnent.

3- Bouton "Supprimer ou renommer un chapitre". La suppression fonctionne, le renommage avec des chiffres entre 1 et 999 fonctionne. Par contre il ne fonctionne pas si on met des lettres.

4- Tu indiques "Les cellules en colonne B voisines des chapitres pourraient avoir une couleur délavée." Quel serait le but ?

5- Pour le renommage du titre du chapitre (colonne C), avec le report dans le bouton "Supprimer ou renommer un chapitre" sous le champ chapitre visible, je trouve ça top !

6- En utilisation quotidienne, les titres des chapitres (colonne C) seront toujours modifiés.

La numérotation des chapitres (colonne B) sera soit une suite de numéro (1, 2, 3), soit une suite de lettre (A, B, C). Mais elle suivra la même logique sur tout le document, c’est-à-dire que l'on aura pas de numérotation du style (1, 2, A, B, 3, ....) avec un mélange de chiffres et de lettres. Si l'utilisateur a besoin d'une numérotation du style 1.1.2.3 (par exemple), Il indiquera cette numérotation dans le titre du chapitre et non dans le numéro, car sinon ça va être ingérable. Il se retrouvera donc avec un chapitre numéroté "1" ou "A", et un titre "1.1.2.3 - Installation chaudière"

Bonne journée.

PS: J'ai bien aimé le nom donné au chapitre 1 et 2 dans le fichier version 25

Bonjour,

À propos du bout de code qui bloque, essaie Dl = CInt(Right(PlageNommees, 3)).

Cint forcera une valeur "integerer".

C'est étrange, car je viens de tester sur une version 2007 et cette ligne ne pose pas problème.

Selon ce que l'on voit de ton profil, tu roules sous Excel 2010 ... est-ce que tout le monde du bureau a la même version ?

Je n'ai malheureusement pas accès à une version 2010.

Pour tenter de s'approcher du fonctionnement alphanumérique...

3- Bouton "Supprimer ou renommer un chapitre". La suppression fonctionne, le renommage avec des chiffres entre 1 et 999 fonctionne. Par contre il ne fonctionne pas si on met des lettres....

C'est pour cela que sous le bouton "Supprimer ou renommer un chapitre" de la V25, il y a la nouvelle version indiquant ... chapitre logique et chapitre visible. Le renommage pourrait n'être que la partie visible. La partie logique ne serait là que pour le bon fonctionnement ( suppression de chapitre, insertion de lignes ou de ligne avec détails ).

4- Tu indiques "Les cellules en colonne B voisines des chapitres pourraient avoir une couleur délavée." Quel serait le but ?

Ce numéro indiquait le numéro du chapitre et il ne deviendrait qu'un indicateur de la position du chapitre, d'où ma proposition d'en atténuer son apparence.

5- Pour le renommage du titre du chapitre (colonne C), avec le report dans le bouton "Supprimer ou renommer un chapitre" sous le champ chapitre visible, je trouve ça top !

De cette façon, on se garde une marge de manoeuvre pour le futur et le bouton renommer ne renommerait que "le chapitre visible" en laissant la partie "chapitre logique" que pour le fonctionnement... si on trouve une solution pour l'insertion de chapitres qui ne fonctionne pas de ton bord.

Je comprends bien ton propos ... on peut aller de l'avant avec cette méthode ...

En passant, une question que j'ai oublié de noter pour te la soumettre ... Quelle est l'utilité des numéros de chapitre à chaque ligne d'un chapitre en colonne A ?

C'est un beau projet ... dont il reste à consolider le fonctionnement.

ric

Bonjour,

Je viens d'apporter la modif dans le code, mais rien n'y fais, même résultat

Le code modifié:

      ' chercher le numéro du dernier chapitre
   For Each PlageNommees In ActiveWorkbook.Names      ' pour chacune des plages nommées ...
      If Left(PlageNommees.Name, 3) = "_TT" And Right(PlageNommees, 3) > 0 Then
         If Right(PlageNommees.Name, 3) > DerChap Then DerChap = Right(PlageNommees.Name, 3)
         If Right(PlageNommees, 3) > Dl Then Dl = CInt(Right(PlageNommees, 3))
      End If
   Next PlageNommees

Concernant la version, je suis sur un excel 2016, mais il est utilisé 3 versions au bureau (2007-2010-2016).

Dans la version 20, l'insertion de chapitre fonctionnait, mais il n'y avait pas de recherche sur le numéro du dernier chapitre.

Concernant le renommage de chapitre, je n'avais pas compris.

Donc si j'ai bien saisi, l'utilisateur n'aura plus la main sur la numérotation du chapitre (colonne B), mais seulement sur le nom du chapitre (colonne C) ? Et la colonne B ne serait qu'un indicateur de la position du chapitre.

Moi ce fonctionnement me va ! En plus ça laisse beaucoup plus de liberté à l'utilisateur, il pourra avoir une numérotation à rallonge s'il le veut, avec des chiffres, des lettres, des ponctuations, bref pas de limite puisqu'il n'y aura plus d'incidence ! Moi ça me va, bravo à toi

Par contre, avec ce fonctionnement, je me demande s'il est vraiment nécessaire de passer par le bouton "Supprimer ou renommer un chapitre" pour renommer le titre du chapitre en colonne C ? Plutôt que de le faire directement dans la cellule.

Après tu indiques

De cette façon, on se garde une marge de manœuvre pour le futur

As tu une idée derrière la tête ? Car si c'est le cas je suis preneur !

Quelle est l'utilité des numéros de chapitre à chaque ligne d'un chapitre en colonne A ?

Bah c'est logique, l'utilité est....attends, je regarde dans le fichier de production actuel pour ne pas dire des bêtises.....

Bon après vérification du fonctionnement du fichier.... la colonne A est utilisé pour... RIEN !

C'est visiblement une relique du passé qui servait à identifier quelles lignes appartenaient à quels chapitres.

Du coup, peut être qu'il serait possible de se servir de cette colonne libre pour la partie logique (non modifiable par l'utilisateur'), et laisser les colonnes A et B libre de modification pour l'utilisateur ?

Oui c'est un beau projet, sur lequel je passe pas mal de temps, et sans ton aide j'aurais capitulé sur les nouvelles fonction !

Donc encore merci à toi pour le temps et l'énergie que tu mets dans ce projet !!

Rechercher des sujets similaires à "insertion chapitre dur"