Coller formule selon mise en forme

Bonjour à tous,

Je me permets de revenir vers les experts excel pour le problème suivant: disons que j'ai 1000 cellules dans une feuille excel. Sur ces 1000, j'en ai 250 qui sont roses par exemple (code couleur: rouge 230, vert 185 et bleu 184). J'écris une formule dans l'une d'elle, et j'aimerais, par un clic, faire un "coller formule" dans toutes les cellules roses, sachant qu'évidemment, elles ne sont pas toutes contigües.

Voilà voilà en d'autres termes, cela m'évitera de sélectionner une centaine de plage une par une, avant de faire mon coller formule..

Je me disais que peut-être je pouvais faire une macro disant en gros:

  • sélectionner toutes les cellules dont le code couleur est (celui que j'ai précisé en haut),
  • coller la formule dans toutes les cellules séléctionées.

et puis après je crée un raccourci (un bouton ou ctrl qqchose) pour faire l'opération de collage.

Mais je suis nul en vba, malheureusement!

Merci de votre aide!

Bonjour,

Teste ceci :

Sub test()

    Dim Fe As Worksheet
    Dim Plage As Range
    Dim Cel As Range

    Set Fe = ActiveSheet

    'UsedRange afin d'être sûr de récupérer la dernière cellule colorée qui peut être vide
    Set Plage = Fe.UsedRange

    For Each Cel In Plage

        If Cel.Interior.Color = 12106214 Then
            'ici ta formule...
            Cel.Formula = "???"

        End If

    Next Cel

End Sub

Merci de ta réponse Theze!

Malheureusement, ca ne marche qu'a moitié, puisque c'est la formule ("SIERREUR(INDEX(Classeur1!Tableau3[Colonne5];EQUIV(D$3&$B6;Classeur1!Tableau3[Colonne1]&Classeur1!Tableau3[Colonne3];0));0)") qui s'affiche dans les cellules et non le résultat. J'ai essayé en rajoutant un "=" au début de la formule et ca ne marche pas (débogage).

En fait, si c'est possible, ce que je souhaiterai, ce serait de copier ma formule, puis d'exécuter ma macro une fois la formule copiée, afin de pouvoir l'appliquer avec n'importe quelle formule.

J'espère être clair, merci.. J'essaie aussi de mon côté!


Sub test()

    Dim Fe As Worksheet
    Dim Plage As Range
    Dim Cel As Range

    Set Fe = ActiveSheet

    'UsedRange afin d'être sûr de récupérer la dernière cellule colorée qui peut être vide
    Set Plage = Fe.UsedRange

    For Each Cel In Plage

        If Cel.Interior.Color = 14474739 Then

          Cel.Select
           Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

        End If

    Next Cel

End Sub

Avec ce code ca marche sauf que ca me fait une boucle inarretable...

Finalement ca marche avec ce code, merci Theze de ton aide! A bientôt!

Rechercher des sujets similaires à "coller formule mise forme"