Macro permettant de remettre un document au bon format

Bonjour à tous,

J'ai une demande assez complexe à vous formuler (en tout cas à mes yeux)

C'est un document que nous présentons chaque semaine et qui fait sans cesse l'objet de nombreuses modifications.

Ces modifications à outrance font généralement sauter des formules de calculs et des bordures.

On se retrouve finalement très souvent avec un tableau en forme de gruyère dont les formules ont été écrasées par des valeurs, propageant ainsi des erreurs.

Est-il possible, via une macro, de remettre le tout en forme ?

Le tableau suit toujours une même logique, c'est à dire qu'il contient un "bloc" NOM Prénom, contenant chaque jour de la semaine. Il y a obligatoirement du vide entre chaque NOM Prénom (on peut considérer que c'est ce qui délimite nos blocs)

Pour chaque jour, il y a plusieurs lignes. (ça peut être de 4 à 12 lignes)

Sur ces lignes nous avons H début et H fin.

Ensuite, une colonne avec le nom du chantier.

Ensuite, une soustraction entre H fin et H début (afin de calculer le nombre d'heure réel)

Et ainsi de suite... jusqu'à la fin de la semaine où il est nécessaire de faire une somme des heures de la semaine (sur la dernière ligne)

Un exemple visuel sera plus simple à comprendre :

J'espère que c'est compréhensible

Merci par avance pour l'aide apportée.

Bien cordialement.

Bonjour

Un essai à tester. Te convient-il ?

Bye !

Bonjour gmb,

Si j'ai bien compris, il faut au préalable une mise en forme parfaite afin de dupliquer la feuille Originale (masquée) vers la feuille Planning général ?

Le problème, c'est qu'il n'est pas possible de simplement s'appuyer sur la mise en forme de la semaine précédente car justement toutes les données font l'objet d'une modification (heures, chantier etc), l'insertion de lignes également (pour l'entrée de nouveaux salariés)

Ou alors je n'ai pas compris le fonctionnement ?

Merci en tout cas !

'il n'est pas possible de simplement s'appuyer sur la mise en forme de la semaine précédente

Non, on ne s'appuie pas sur la feuille de la semaine précédente mais sur la feuille telle qu'elle est avant de la présenter pour modification.

Admettons :

Jour 1 : Mon document est fait, présenté ... La mise en forme est bonne. Le fichier s'appelle Planning 1.

Jour suivant : Je prépare les plannings de la semaine suivante. Je duplique Planning 1 et je le renomme Planning 2....

Jour 2 à 6 : Je fais pleins de modifications dessus, que ce soit de la modifications de données, insertion de lignes etc...

Jour 7 : J'ai terminé Planning 2 sauf que les modifications ont fait que mon tableau ne ressemble plus à rien, que je dois refaire les bordures et vérifier les formules de calcul.

A quel moment dois-je déclencher la macro ?

Oulà !

Je veux bien essayer de voir si tu m'envoies ton document de départ (planning 1) et ce qu'il devient au jour 7 après toutes tes modifications :lignes ajoutées, données modifiiées...

Maiis je ne te garantie rien...

Bye !

Bonsoir, une astuce.

1 - Démarrer l'enregistreur de macros

2 - Réecrire toutes vos formules

3 - Refaire toutes les mises en formes

4 - Arrêter l'enregistreur de macros

5 - Affecter la macro à un bouton

Le tour est joué.

Bonjour gmb,

Je comprend tout à fait cette réactionC'est une utilisation un peu étrange d'Excel mais c'est ainsi que ça se passe chez nous...

Voici un fichier de ce qui pourrait se passer en une semaine :

- 1 Salarié a été recruté (ILGO Josie)

- Des chantiers ont été enlevés à PALO Michael

- Des copier/coller dans tous les sens, ce qui a détruit les bordures et certaines formules de calcul.

J'ai mis un onglet "Résultat attendu"

___

Bonjour ISRI,

J'ai déjà fait une tentative dans ce sens. Sauf que, comme je l'expliquais, l'insertion de lignes (qui est inévitable) ne permet pas de verrouiller un type de modèle.

Dans l'idéal, ce serait d'appliquer ce genre de macro dans une boucle contenue entre chaque nom de famille (pour délimiter la zone).
Mais j'ignore totalement comment faire une boucle, ni même si c'est possible... d'où mon appel à l'aide

Merci beaucoup

Cdt

Bonjour

Dans le tableau souhaité, , je ne comprends pas certaines choses :

  • Pourquoi les données d’un premier chantier sont parfois sur la même ligne que les noms et prénoms et parfois sont décales d’une ligne ?
  • Pourquoi les chantiers sont parfois sur des lignes qui se suivent et parfois ils sont séparés par une ligne vide ?
  • Pourquoi entre le dernier chanter et les totaux, il y a un nombre variable de lignes vides ?

Si on ne fixe pas des règles précises, je ne pense pas qu’une macro puisse ‘’deviner’’ comment faire. Et moi non plus.

Bye !

Bonjour gmb,

Pour répondre à tes questions : il n'y a aucune logique sur les chantiers.

image

La seule logique est celle des "blocs" (en rouge) qui se définissent comme ceci :

- il y a toujours des cellules vides entre chaque nom de famille (colonne B)

- les noms de famille seront systématiquement le point de départ du "bloc" et seront toujours placés à la première ligne de ceux-ci.

- la dernière ligne du "bloc" fait toujours la somme des lignes du dessus (pour les colonnes G, K, O, S, W et AA)

C'est la seule règle précise que je peux te donner... Peux-tu faire quelque chose avec ça ?

Merci pour le temps accordé

Cordialement

Un autre essai

Bye !

Bonjour gmb,

Excuse-moi pour cette réponse tardive.

Ton travail est génial, le code est... trop compliqué pour que je le comprenne, mais le résultat est excellent ! Bravo.

Cependant j'ai remarqué un bug, quand je clique sur le bouton violet "mettre en forme", l'onglet résultat fait ressortir les chantiers 7 de DULARD sur la dernière ligne de CHOUBERT.

J'ai aussi un doute sur la viabilité à cause du temps de traitement, car sur l'exemple transmis il n'y avait que 4 salariés. Or dans la réalité ils sont bien plus nombreux.

Je ferai des essais mais j'ai bien peur que cela prenne 15 minutes à traiter

Autre soucis : les couleurs sur les chantiers disparaissent... et c'est assez important de les conserver.

_

Cela dit je comprend a peu près le fonctionnement : tu appliques un modèle (depuis l'onglet caché "Modèle") pour ensuite recréer une nouvelle feuille Excel.

Dans mon idée c'était plutôt une macro qui Sélectionne la plage (délimitée par les noms), d'y appliquer les bordures + formules (Heure de fin moins Heure début), + formule =Somme sur la dernière ligne.

L'ordre des chantiers ne posent pas de problèmes donc il n'était pas nécessaire de les séparer par une ligne vide.

En gros c'est une correction de "surface" que j'aurais souhaité et non pas une refonte complète de la feuille Excel.

En tout cas un grand MERCI pour cet essai Et c'est pas la première fois que tu m'aides sur ce forum !!

Cordialement

Bonjour

J'ai aussi un doute sur la viabilité à cause du temps de traitement,

Alors, inutile que j'aille plus loin car je ne saurai pas améliorer ça.

Bye !

Dommage !

Je vais chercher d'autres pistes et reviendrais donner des nouvelles, si j'en trouve

Merci quand même

Voilà je viens de passer une demi-heure à tenter quelque chose en ayant récupéré ce code avec des bidouillages.

1test-bordures.xlsm (63.40 Ko)

C'est buggé, puisque ça ne devrait pas mettre de bordures sur la première ligne du nom.

Mais ce serait l'idée..

J'ouvrirais un nouveau fil spécifiquement à la sélection de plage, si jamais je n'arrive pas à trouver la solution.

A+

Bonjour à tous,

Me revoilà !

Après 1 mois à me tirer les cheveux sur ces lignes de codes

Je partage le fichier final :

Très fier du résultat même si, pour certains, c'est fait de façon naïve

J'ai juste besoin d'un avis sur une ligne de code :

ActiveCell = Application.WorksheetFunction.Sum(Range(Cells(Liste + 1, colonne), Cells(Plage - 1, colonne)))

Cette ligne de code fait la somme d'une plage située au dessus de l'ActiveCell.

En fait ça me gonfle, car dans les cellules on ne voit que le résultat de la somme, et non la formule de calcul en elle même. Le=Somme("A2:A3") classique.

J'ai essayé de le faire avec "=SUM(R[-8]C:R[-1]C)" mais je ne comprend pas comment faire.

Quelqu'un aurait une solution pour afficher la formule ?

Merci beaucoup et bonne soirée

Cordialement

Bonjour,

J'ai finalement trouvé comment afficher la formule =Somme() :

ActiveCell.Formula = "=SUM(" & Range(Cells(Liste + 1, colonne), Cells(Plage - 1, colonne)).Address(False, False) & ")"

Sujet résolu
Bonne journée à tous

Rechercher des sujets similaires à "macro permettant remettre document bon format"