EXCEL 2007 - Recolorier image par macro

Anonyme
2012-05-27T14:07:10+00:00

Bonjour,

Je voudrais, à l'aide d'une macro, pouvoir recolorier une image avec une couleur de mon choix tel que l'on peut le faire en passant par le menu Format -> Recolorier -> Autres Variations.

L'enregistreur de macro ne fonctionnant pas pour les Shapes avec Excel 2007, je désirerai connaitre le code permettant de le faire.

Pour passer en ton de gris j'utilise actuellement : PictureFormat.ColorType = msoPictureGrayscale. Mais ColorType n'offre que peu de possibilités et je souhaite pouvoir utiliser n'importe quelle couleur.

Si une personne possédant Excel 2010 pouvait me dépanner en enregistrant la macro je lui en serai très reconnaissant.

Merci d'avance

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

31 réponses

  1. Anonyme
    2012-05-28T16:36:54+00:00

    Pour cette ligne de code :

    .TransparencyColor = Couleur

    Il est possible d'utiliser les constances "couleur" d'Excel.
    VbWhite, VbBlack, vbGreen, VBred, VBBlue, VBYellow, Vbcyan, VbMagenta

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2012-05-28T16:32:30+00:00

    Re

    Je réitère ce que je veux faire :
    Recolorier une image par macro, de la même manière que l'on peut le faire en passant par les menu Format -> Recolorier -> Autres Variations.

    Il me semble que dans ce cas ce sont les effets.
    Il m'est arrivé de voir changer quelque chose, mais pas systématiquement.
    Pas d'erreur par contre.
    Voici le début du code :
    Sub PictureEffectSample()
    Dim s As Shape
    Set myDocument = Worksheets(1)
    Set s = ActiveWorkbook.Worksheets(1).Shapes(1)
    s.Select

    With s.Fill.PictureEffects
      .Insert(msoEffectWatercolorSponge).EffectParameters(1).Value = 0
      .Insert(msoEffectSaturation).EffectParameters(1).Value = 1.5
    Réflexion faite, je me demande s'il ne faut pas ajouter l'effet, puis en définir la valeur ?

    En attendant la solution miraculeuse j'ai collé une Forme devant l'image de jour (passée en ton de gris)  et appliqué un bleu nuit avec de la transparence, mais cela n'a évidement pas du tout le même rendu qu'en recoloriant directement l'image. On dégrade forcément le contraste et la netteté.

    Dans cet ordre d'idée :
    Sur une feuille cachée, faites autant d'images que vous voulez en utilisant le ruban, puis recopiez la bonne image à l'endroit souhaité.
    Reste à bien identifier les images par leur index.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2012-05-28T16:31:24+00:00

    Selon moi, il n'y a que ces propriétés qui peuvent affecter la couleur
    d'une image obligatoirement de type ".BMP". Regarde l'aide sur la
    propriété "TransparencyColor".

    L'enregistreur de macro d'Excel 2010 ne donne aucun code pour les manipulations
    faites à l'écran.

    Je suppose que l'on peut ajouter les propriétés dont il était question précédemment
    dans les messages antérieurs

    Dim K As MsoPictureColorType
    K = msoPictureGrayscale     '  OU msoPictureAutomatic

    '--------------------------------------
    Sub Test()
    Dim Sh As Shape, Couleur As Long

    Couleur = RGB(0, 0, 255)
    Sh = Worksheets(2).Shapes(1)

    With Sh
       With .PictureFormat
           .TransparentBackground = True
           .TransparencyColor = Couleur
       End With
       .Fill.Visible = False
    End With
    End Sub
    '--------------------------------------

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2012-05-28T15:28:02+00:00

    Re,

    Oui, bien sûr c'est ok avec msoPictureGrayscale et pour rétablir msoPictureAutomatic  (comme indiqué dans mon précédent post). Mais cela ne me suffit pas !!! (HI)

    Je réitère ce que je veux faire :

    Recolorier une image par macro, de la même manière que l'on peut le faire en passant par les menu Format -> Recolorier -> Autres Variations.

    En attendant la solution miraculeuse j'ai collé une Forme devant l'image de jour (passée en ton de gris)  et appliqué un bleu nuit avec de la transparence, mais cela n'a évidement pas du tout le même rendu qu'en recoloriant directement l'image. On dégrade forcément le contraste et la netteté.

    Je suis avec Excel 2007 et l'enregistreur de macro ne fonctionne pas pour les Shapes (merci Microsoft). Puisque tu as Excel 2010, je te serai infiniment reconnaissant de bien vouloir faire la manip avec l'enregistreur si celui-ci l'accepte.

    Je n'ai pas l'habitude de demander du code tout fait, en général c'est plutôt moi qui en donne en VB6, mais là je suis vraiment coincé. J'avais d'ailleurs déjà fait cette application en VB6 et là il était très facile de recolorier par code un bitmap.

    Cordialement,

    Jean-Claude

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Anonyme
    2012-05-28T15:04:31+00:00

    Et qu'est-ce qui ne fonctionne pas ?

    J'ai inséré dans la feuil2 une image se situant dans le répertoire suivant sous Windows 7

    C:\Program Files (x86)\Microsoft Office\CLIPART\PUB60COR

    l'image choisie : "J0101867.BMP"

    Le code suivant s'exécute correctement (Excel 2010)

    '--------------------------
    Sub test()

    Dim Sh As Shape

    Dim K As MsoPictureColorType
    K = msoPictureGrayscale     '  OU msoPictureAutomatic

    Set Sh = Feuil2.Shapes(1)

    With Sh
       .PictureFormat.ColorType = K
    End With

    End Sub
    '--------------------------

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire