Dupliquer tableau sur autre feuille avec modifications

Résolu
Bonjour,

Je souhaiterais a partir d'un tableau complet, en creer un deuxieme sur une autre feuille, mais en version simplifié. Tout cela automatisé/ a partir d'une macro
Ci-dessous les 2 tableau



Merci d'avance pour votre aide, je suis plutot debutant dans ce domaine !

24 réponses

Résumé de la discussion

Il s'agit d'automatiser, par macro, la création d'un deuxième tableau simplifié sur une autre feuille à partir d'un tableau complet, afin d'obtenir une version allégée prête à l'usage. Les échanges ciblent la gestion des titres et des zones couleur, le choix entre zone texte et cellule, et des manipulations comme l'insertion de lignes ou la suppression de colonnes via des commandes Excel. D'autres éléments évoquent le décalage des colonnes qui définissent les couleurs et l'en-tête identique, ainsi que des soucis pratiques comme des ajouts involontaires lors de l'enregistrement d'une macro.

Bobot (l’IA à votre service)
  1. Bonjour

    Plutôt qu'une image, envoies ton fichier au format excel 2003 si possible sur cjoint.com et joins le lien obtenu à ton prochain message. N'oublies pas un/des explications et exemples de résultat attendu

    Cdlmnt
    0
    1. Bonjour,

      Voici le lien
      https://www.cjoint.com/?0FbmxJBkuKn

      En faites je souhaiterais que l'onglet simplified se creer automatiquement a partir du premier onglet 'full' et que si jamais je modifiais l'onglet 'full' le 'simplified' se modifie automatiquement aussi.

      Merci beaucoup pour ton aide
      0
  2. J'avoue ne pas bien comprendre ton problème
    1. je souhaiterais que l'onglet simplified se créer automatiquement a partir du premier onglet 'full'
    Il est créé cet onglet full, pourquoi veux tu le créer par macro ?

    2. si jamais je modifiais l'onglet 'full' le 'simplified' se modifie automatiquement aussi
    Tu parles du contenu des cellules ou de la structure de l'onglet
    0
    1. 1- En faites l'onglet simplified sera supprimer par la suite, c'est un onglet template.
      Il faut que cet onglet simplified se genere a partir de l'onglet full.

      Concernant le 2, je parle du format des cellules ainsi que tu contenu.
      Si je souhaite ajouter une ligne dans le full, je voudrais que cette ligne s'insère aussi dans le simplified, suivant le meme format.
      0
  3. Bon,

    un début de réponse
    https://www.cjoint.com/?3Fbp3QxvUux

    Cdlmnt
    0
    1. Bonjour,

      Merci pour ce debut de reponse, c'est ce que je voulais, il ne me reste plus qu'a mettre en page, comment faire pour supprimer ou inserer des ligne dans la feuille simplified creé ? Puis-je les ajouter ces infos a ton code ?

      Merci
      0
  4. Bonjour

    Dans ta demande, il n'était question que de créer un feuille Simplified à partir de la feuille full
    Si tu veux ajouter des lignes ou des colonnes dans la feuille Simplified, de façon automatique, tu peux bien sûr le faire via le code de la macro KopieFF.

    Cdlmnt
    0
    1. Bonjour,

      Merci pour toute ton aide, c'est tres gentil.
      Je suis en train d'essayer de voir comment inserer ou supprimer des linges/colonnes.
      Or que j'ajoute Rows(10).Insert dans mon code ou que je le fasse en mode ''enregistrer macro', cela m'en insere a chaques fois 7. Connais tu la raison de ce problème ??

      Merci d'avance
      0
  5. Non, ça ne devrait insérer qu'une ligne
    Pour tester, ajoutes cette procédure à compléter pour programmer les modifications de la feuille Simplidied
    Lorsque tout sera OK, un Call MAJSimplified en fin de procédure KopieFF suffira alors à la lancer lors de la création de la feuille

    Public Sub MAJFSimplified()
    Dim li As Long
    With Sheets(FS)
    li = 10
    Rows(li).Insert
    End With
    End Sub

    Attention. Le fait d'avoir des cellules fusionnées va très certainement créer pas mal de problèmes. Les cellules fusionnées ne sont jamais une bonne solution lorsqu'on doit agir dessus, que ce soit depuis la feuille ou depuis vba

    Bon courage
    0
    1. J'ai essaye de tout defusionner mais apparament le probleme ne viens pas de la...
      Lorsceque je rentre la formule que vous m'avez donné plus haut de cette facon :

      cofinFS = Sheets(FS).Cells(lititFS, Columns.Count).End(xlToLeft).Column
      For co = cofinFS To cosupFS Step -1
      Sheets(FS).Columns(co).Delete
      Public Sub MAJFSimplified()
      Dim li As Long
      With Sheets(FS)
      li = 10
      Rows(li).Insert
      End With
      End Sub
      Next co
      Application.ScreenUpdating = True
      End Sub

      Un message d erreur apparait lorsque j'essaye de lancer la macro : Expected end Sub, savez vous pourquoi ?

      Merci beaucoup
      0
  6. Pour ajouter une ligne il te faut lancer séparément (pour le moment) la procédure
    Lorsque tout sera OK, un Call MAJSimplified en fin de procédure KopieFF avant End Sub, suffira alors à la lancer lors de la création de la feuille
    0
    1. La fin de procodure KopieFF donne ceci donc :

      Application.ScreenUpdating = True
      Call MAJSimplified
      End Sub

      Message d'erreur ; Sub or function not defined
      Avec --> Public Sub KopieFF() en surbrillance

      Les soucis que j'ai doivent vous paraitre simple, mais je debute excusez moi.
      De plus commet faire pour inserer plusieur lignes a la suite ? De cette facon ?

      Public Sub MAJFSimplified()
      Dim li As Long
      With Sheets(FS)
      li = 10
      li = 11
      li = ....
      Rows(li).Insert

      Merci,
      0
  7. 1. Désolé,
    > La déclaration de la procédure
    Public Sub MAJFSimplified()
    > L'appel, depuis KopieFF : il manquait un "F"
    Call MAJFSimplified
    2.
    Public Sub MAJFSimplified()
    Dim li As Long
    With Sheets(FS)
    li = 10
    .Rows(li).Insert
    li = 21
    .Rows(li).Insert

    ...
    Mais c'était un exemple, j'ai mis le n° de ligne dans une variable, histoire de simplifier la suite des instructions concernant cette ligne
    Peux tu préciser un peu plus ce que tu souhaites faire dans cette feuille Simplified

    Cdlmnt
    0
    1. En faites ce n'est pas complique a expliquer.
      https://www.cjoint.com/c/EFejVpKRlQv

      Voici le document complet.
      Comme vous l'avez bien fait precedemment, il faut generer l'onglet simplified a partir du full.
      La difficulte est que cette onglet generé doit respecter le format de l'onglet simplified que vous trouverez sur ce fichier. ( suppressions de collones, insertions de lignes pour creer des espaces pour les graphiques ... )

      Voyez vous ce que je veux dire ?

      Merci
      0
  8. Une question. Est ce que la structure de la feuille Full peut changer (nombre de lignes, nombre de colonnes, etc ...)
    0
    1. Oui, cela est possible :)
      0
    2. Mais le format restera le meme
      0
  9. 1. Oui, cela est possible :)
    Ce n'est pas une réponse. C'est oui ou c'est non
    Si c'est oui, le problème est nettement plus simple. On crée une feuille Simplified "modèle" vide. Il suffira alors, à la demande, de la copier et de la remplir avec les données de la feuille full.
    0
    1. Oui alors :)

      Oui mais justement le but etant de ne pas avoir a recopier les donnees de la full sur la simplified, est-ce possible ? J'aimerais a l avenir, n'avoir qu'a modifier la full, et que la simplified suive :)
      0
  10. J'aimerais a l avenir, n'avoir qu'a modifier la full, et que la simplified suive
    1. Si les cellules de la simplidfied contiennent des formules se référant à la full, les modifications vont suivre
    Il faudrait en savoir un peu plus sur le scénario envisagé.
    2. Une autre question. Est ce que la structure de la feuille Simplified reste la même (nombre de lignes, de colonnes, etc ...)
    0
    1. 1 La simplified ne contiendra pas de formules se referant a la full

      2 La structure de la feuille simplified doit suivre le meme structure que la full
      ( sauf comme vous pouvez le voir ds le doc envoye precedemment , collones en moins, lignnes en plus pour faire de la place pour les graphiques ... )
      Comme vous pouvez le voir la simplified est la meme que la full avec des colones en moins et des espaces entre les differentes zones de couleurs .
      0
  11. OK, on va y aller

    3. Est ce que l'en tête de la full reste la même (7 lignes exactement)
    0
    1. Comme vous pouvez le voir dans le doc que je vous ai envoyé, non car il faut inserer les titres des chaques zones de couleurs, donc nous passons a 8 :)
      0
  12. Je parle de la feuille full où il y a actuellement 3 "lignes" RSI, R&F, ASP
    ce qui donne 7 lignes d'en tête
    est ce que ce sera toujours 7 lignes
    0
    1. Pour les titres des zones de couleurs, feuille simplified, par exemple :
      RSI Department.
      Est il indispensable de les mettre dans une zone texte plutôt que dans une cellule, ça complique as mal le code
      0
      1. Pardon, oui l'en tete de la full restera la meme.
        Oui vous pouvez mettre dans une cellule ce n'est pas un soucis, et si c'est plus simple pour vous tant mieux :).

        Merci !
        0
    2. Pour le moment, la MAJFSimplified est séparée de KopieFF
      https://www.cjoint.com/c/EFeovfWVTo1
      A tester
      0
      1. Merci bien,

        En revanche qund je fait ctrl+m un message d'erreur apparait:

        Unable to set the text property of the characters class, concernant la ligne - >

        Selection.Characters.Text = Sheets(FF).Cells(liTitreFF, 1) & " Department"
        0
    3. Je ne comprends pas, chez moi, ça fonctionne
      Essaies avec ceci, titres dans cellule au lieu de textbox
      https://www.cjoint.com/c/EFepIoeydz1

      RQ. Dans l'editeur vba/Options/references as tu une microsoft excel 10.0 ou autre Library cochée ?
      Si tu ne l'as pas, tu vas la chercher dans la liste et la cocher
      0
      1. Pardon
        Une microsoft Office (10.0 chez moi) Object Library
        0
      2. Bonjour !

        Cela fonctionne, en revanche, si la feuille n'existe pas ( erreur out of range ) et si on repète l'opération, la feuille ne se supprime pas pour etre remplacer par une nouvelle, cela accumule les insertions de lignes et colones.
        0
      3. Je suis en train d'utiliser votre premier code, il a l'air de mieux fonctionner,

        Public Sub MAJFSimplified()
        Dim li As Long
        With Sheets(FS)
        li = 51
        .Rows(li).Insert
        li = 52
        .Rows(li).Insert

        A la suite de cela, quelle est la formule que je peux rajouter pour supprimer des colones, lignes ? merci
        0
      4. Bonjour

        1. Je t'ai dit plus haut que
        1.1. La procedure MAJFSimplified
        Je l'ai séparé de la proccédure KopieFF pour faciliter sa mise au point. Donc, elle ne devait être exécutée (pour le moment) que sur une feuille Simplified1 existante.
        1.2. Lorsqu'elle sera au point, c'est la procédure KopieFF qui va se charger de la faire fonctionner, sur une nouvelle feuille Simplified1

        2. Le fichier intégrant l'appel de MAJFSimplified dans KopieFF
        https://www.cjoint.com/c/EFfjLi3DjN1

        Cdlmnt
        0
      5. Oui merci,

        J'ai bien compris tout ca.

        Comme je vous le disais a la suite de ceci ;

        Public Sub MAJFSimplified()
        Dim li As Long
        With Sheets(FS)
        li = 51
        .Rows(li).Insert
        li = 52
        .Rows(li).Insert

        je souhaites mettres d'autres formules concernant cette feuille, pour supprimer des lignes et des collones.
        Pouvez vous me dire quelles sont les phrases type

        li = 52
        .Rows(li).Insert

        a rentrer a la suite pour effectuer ces suppressions de lignes et coloones
        co = A
        .col(co).supp

        dans le style ?
        0
    4. Bon,

      Pour insérer, redimensionner, colorier, remplir avec du texte une ligne ou une colonne, tu as tout ce qu'il faut dans les deux procédures, ou bien dans les diverses propositions que je t'ai faites plus haut.
      Les as tu lues ?
      Pour ma part, je ne pense pas pouvoir faire quelque chose de plus pour toi.

      Bonne fin de journée
      0
      1. Oui bien sur que je les ai lues, je vous demaidais juste comment supprimer une colone avec un code de ce type
        li = 52
        .Rows(li).Insert

        car je ne m'y retrouve pas forcement.
        Mais je vais chercher.

        Merci bien !
        0
      2. @mikamadeusjai utilise Columns("E:G").Delete Shift:=xlToLeft

        Merci :)
        0
      3. Bonjour,

        J'ai une utime question a vous poser si vous le permettez ?
        Dans votre code vous avez inserer deux lignes blanches entres les differentes couleurs. Ce qui est parfait .

        Mais comment faire pour que ces lignes apparraissent avec un format totalement vierge ( et non pas avec les cadres du reste du format)

        Merci beaucoup,

        Bonnje journée
        0
    5. Tu ajoutes au code les deux lignes soulignées

           ' insertion de deux lignes blanches de hauteur HLiKPI (400)
      .Rows(li).Insert
      .Rows(li).Borders.LineStyle = xlNone
      .Rows(li).RowHeight = HliKPI
      .Range(.Cells(li, 1), .Cells(li, co)).Interior.ColorIndex = Blanc
      li = li + 1
      .Rows(li).Insert
      .Rows(li).Borders.LineStyle = xlNone
      ' departement suivant
      li = li + 1
      Next liTitreFF


      Bonne fin de journée
      0
      1. Bonjour,

        C'est parfait, merci beaucoup.
        J'a une derniere question, je penses que cela ira tres vite.

        J'ai tres legerement modifié ce fichier ( un colone supplementaire en A ) et essaye d'appliquer le code a nouveau mais il ne fonctionne pas. Vous trouverez ce fichier sur le lien pas OK.
        Un erreur apparait dans le code et destructure l'onglet simplified ( vous pouvez le voir la ligne concerné dans le codeen dessous ''<------'' ainsi qu'un lien avec le code complet)

        Pouvez vous m'aider a faire marcher mon code sur le nouveau fichier (pas ok) ?

        .Cells(li, 1).Value = Sheets(FF).Cells(liTitreFF, 1) & " Department"
        .Cells(li, 1).Font.Size = 60
        .Cells(li, 1).Font.FontStyle = "Gras"
        .Cells(li, 1).HorizontalAlignment = xlGeneral
        .Cells(li, 1).VerticalAlignment = xlCenter
        ' recherche ligne changement de couleur
        li = li + 1
        coul = .Cells(li, 2).Interior.ColorIndex
        While .Cells(li, 2).Interior.ColorIndex = coul <-------
        li = li + 1
        Wend

        ok : https://www.cjoint.com/c/EFtpbblYh1v
        Pas ok : https://www.cjoint.com/c/EFtpbBroLZv

        Code complet : https://www.cjoint.com/c/EFtpcEfGbGv

        Merci beaucoup !!
        0
    6. Si j'ai compris, il suffit de décaler la colonne qui détermine la couleur

           li = li + 1
      coul = .Cells(li, 3).Interior.ColorIndex
      While .Cells(li, 3).Interior.ColorIndex = coul
      li = li + 1
      Wend

      Cdlmnt
      0
      1. Bonjour,

        Merci , mais qu'importe le numero que je met la seconde ligne :
        While .Cells(li, 7).Interior.ColorIndex = coul

        Reste jaune ... avez vous une autre solution ?

        La premiere ligne :
        coul = .Cells(li, 3).Interior.ColorIndex

        ne bug pas apparament, cela ne viendrais pas uniquement de la seconde ?

        Avez vous pu consulter le fichier ou le code bug ?

        Merci beaucoup pour votre aide precieuse.
        0
    7. Merci , mais qu'importe le numero que je met la seconde ligne :
      While .Cells(li, 7).Interior.ColorIndex = coul
      Reste jaune ... avez vous une autre solution ?

      ?? il fallait mettre 3 comme numéro de colonne (post #43)

      J'ai ajouté la constante coProductnameFS = 3
      et changé le 3 en coproductnamefS dans le code, comme ça, si tu modifies la structure, il te suffira d'intervenir uniquement pour changer la valeur de la constante
      http://www.cjoint.com/c/EFxodK1IRdg
      qu'est ce qui ne va pas dans la feuille Simplified1 ?
      0
      1. Ah et bien merci beaucoup cela marche maintenant.
        Tout est parfait, j'avais des problemes avec la suppression de collones car c'etait decalé, mais j'ai reussi a me debrouiller seul avec la commande
        Columns("F:H").Delete Shift:=xlToLeft
        Columns("H:R").Delete Shift:=xlToLeft

        Maintenant tout fonctione c'est un veritable plaisir.
        Dernier details minime je suppose, quand il y a changement de couleur, il manque des bordures.
        Savez vous juste comment encadrer chaque zones de couleurs par une cadre epais ?

        voici le liens vers le code complet:

        https://www.cjoint.com/c/EFxoXwbElEv

        Merci beaucoup !!!!!!!!!!
        0
    • 1
    • 2