Dupliquer tableau sur autre feuille avec modifications

Résolu
mikamadeus Messages postés 44 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
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

  • 1
  • 2
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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bon,

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

    Cdlmnt
    0
    1. mikamadeus Messages postés 44 Statut Membre
       
      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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Je qu'on ne s'est pas bien compris
    https://www.cjoint.com/c/EFdoVdMHJv1
    0
    1. mikamadeus Messages postés 44 Statut Membre
       
      Merci pour l'update du code, mais aucune ligne n'est ajouté. Cela marche chez vous ?
      0
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
  10. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Une question. Est ce que la structure de la feuille Full peut changer (nombre de lignes, nombre de colonnes, etc ...)
    0
    1. mikamadeus Messages postés 44 Statut Membre
       
      Oui, cela est possible :)
      0
    2. mikamadeus Messages postés 44 Statut Membre
       
      Mais le format restera le meme
      0
  11. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
  12. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
  13. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
  14. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  15. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
  16. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Pour le moment, la MAJFSimplified est séparée de KopieFF
    https://www.cjoint.com/c/EFeovfWVTo1
    A tester
    0
    1. mikamadeus Messages postés 44 Statut Membre
       
      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
  17. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. ccm81 Messages postés 11033 Statut Membre 2 434
       
      Pardon
      Une microsoft Office (10.0 chez moi) Object Library
      0
    2. mikamadeus Messages postés 44 Statut Membre
       
      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. mikamadeus Messages postés 44 Statut Membre
       
      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. ccm81 Messages postés 11033 Statut Membre 2 434
       
      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. mikamadeus Messages postés 44 Statut Membre
       
      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
  18. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
      1. mikamadeus Messages postés 44 Statut Membre > mikamadeus Messages postés 44 Statut Membre
         
        jai utilise Columns("E:G").Delete Shift:=xlToLeft

        Merci :)
        0
    2. mikamadeus Messages postés 44 Statut Membre
       
      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
  19. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
  20. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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
  21. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mikamadeus Messages postés 44 Statut Membre
       
      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