Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ne pas supprimer la couleur des cellules

à l'exécution de la macro .XLSX

Sujet résolu
    31 juillet 2020 à 16:39:07

    Bonjour à tous,

    J'ai effectué une macro me permettant de remplacer les liens hypertextes de mes cellules.

    Problèmes, ces cellules avait un code couleur attribué et, à l’exécution de la macro, les couleur disparaissent. :(

    Auriez-vous une solution à me soumettre?

    D'avance merci pour votre aide :)

    • Partager sur Facebook
    • Partager sur Twitter
      17 août 2020 à 18:40:12

      remettre le code couleur dans la macro après le remplacement des cellules
      • Partager sur Facebook
      • Partager sur Twitter
        18 août 2020 à 15:41:22

        Merci umfred,

        Cependant, les couleurs ont étaient mises manuellement, iln'y a pas de règles définie

        • Partager sur Facebook
        • Partager sur Twitter
          18 août 2020 à 16:02:39

          Salut,

          Essaies d'enregistrer la couleur dans une variable "MaCouleur" de type Variant avant de changer le lien hypertexte:

          MaCouleur = MaCellule.Interior.Color

          Puis tu re-colories ta cellule après avoir modifié le lien:

          MaCellule.Interior.Color = MaCouleur


          A faire pour chaque cellule bien sûr

          • Partager sur Facebook
          • Partager sur Twitter
            18 août 2020 à 18:14:56

            comment fais tu le remplacement ? par un copier-coller, ou par une modification de la valeur de la cellule ? je pense qu'avec la seconde méthode, la couleur de la cellule ne devrait pas être modifiée
            • Partager sur Facebook
            • Partager sur Twitter
              19 août 2020 à 10:31:29

              umfred a écrit:

              comment fais tu le remplacement ? par un copier-coller, ou par une modification de la valeur de la cellule ? je pense qu'avec la seconde méthode, la couleur de la cellule ne devrait pas être modifiée


              Alors oui et non, j'ai déjà une eu une macro qui modifier les liens et pourtant cassait ma mise en forme conditionnelle.

              Cela venait du fait que j'itérais sur une plage 2D pour modifier mes liens (avec un Replace) mais que toutes mes cases n'avaient pas pour autant un lien. Comme dans mon code j'avais oublié de mettre une condition du style:

              If (c.Hyperlinks.Count > 0) Then ...

              Et du coup, le Replace d'un lien inexistant résultait en la casse de mise en forme:

              c.Hyperlinks(1).Address = Replace(chaine, motàremplacer, remplacerpar)
              c.Value = Replace(chaine, motàremplacer, remplacerpar)

              Au lieu de générer une erreur comme quoi Hyperlinks(1) est un index trop élevé comme il n'y en a pas, il essayait malgré tout de changer la case, et comme Replace renvoie une chaine de caractère, et ma mise en forme conditionnelle se basant sur des nombres, la deuxième ligne provoquait la casse de la mise en forme.

              (ça m'apprendra à copier trop vite le code provenant d'un forum haha)

              Mais bon après avoir rajouté le test, la modification se concentrait seulement sur les cases qui devaient être modifiées et j'ai plus eu d'erreur ;)

              En bref @KOFFELfabrice, fait attention à avoir un code bien robuste aussi, des fois ça vient d'autre part ;)

              -
              Edité par WexyR 19 août 2020 à 10:32:05

              • Partager sur Facebook
              • Partager sur Twitter
              Si je suis tête en l'air, c'est par habitude de viser le sommet
                19 août 2020 à 11:41:15

                Dans ton cas, @WexyR, la mise en forme n'était pas vraiment cassée, c'est qu'il n'y avait pas de mise en forme conditionnelle qui prennait en compte le contenu de la cellule (les mises en forme conditionnelles ne s'appliquaient donc pas au type de contenu de tes cellules)
                • Partager sur Facebook
                • Partager sur Twitter
                  19 août 2020 à 13:41:44

                  umfred a écrit:

                  Dans ton cas, @WexyR, la mise en forme n'était pas vraiment cassée, c'est qu'il n'y avait pas de mise en forme conditionnelle qui prennait en compte le contenu de la cellule (les mises en forme conditionnelles ne s'appliquaient donc pas au type de contenu de tes cellules)


                  oui voilà, exactement ;)

                  Je partage juste parce qu'au départ je pensais que c'était la modif des liens qui cassait, alors qu'en fait c'était du au changement de type pour la mise en forme conditionnelle. C'est parce que c'est possible de faire une erreur d’appréciation que je dis ça. Le comportement chez @KOFFELfabrice est bizarre pour les couleurs mises manuellement :/ car normalement modifier le lien ne touche pas à la couleur de la case (sauf dans le cas d'une copie avec PasteAll comme tu as dit), donc c'est peut-être aussi une erreur d'appréciation et ce comportement est provoqué par autre chose dans le code.

                  Peut-être que @KOFFELfabrice pourrait partager son code pour qu'on y jette une oeil?

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Si je suis tête en l'air, c'est par habitude de viser le sommet
                    21 août 2020 à 15:55:17

                    ET OUI @WexyR !!!

                    J'ai bien fait la même erreur que toi (petit copier de code sans le regarder)

                    Du coup j'avais plusieurs lignes qui ne servaient à rien et la coupable était:

                    Cell.Hyperlinks.Delete ...

                    Merci beaucoup (A tous) pour votre aide ;)

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Ne pas supprimer la couleur des cellules

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown