Macro : insérer formule selon couleur de fond

babacool

XLDnaute Nouveau
Bonjour à tous,

Je m'en remets à vous car je cale depuis 2h à chercher un code VBA pour réaliser l'action suivante :

je souhaiterais insérer des formules en ligne 5 en fonction de la couleur de fond de la ligne 1. Les formules sont différentes selon la couleur de fond trouvée en ligne 1 (mais les formules sont les mêmes pour une même plage de couleur).

La difficulté est que les plages de couleur sont variables (actuellement dans l'exemple, j'ai mis 4 colonnes, mais cela pourrait devenir 10 ou 20 colonnes).

Merci par avance pour l'aide que vous pourrez m'apporter.
 

Pièces jointes

  • Exemple.xlsx
    7.4 KB · Affichages: 36
  • Exemple.xlsx
    7.4 KB · Affichages: 42
  • Exemple.xlsx
    7.4 KB · Affichages: 37

babacool

XLDnaute Nouveau
Re : Macro : insérer formule selon couleur de fond

JHA,

La couleur de fond est figée. Par exemple sur le ficher démo actuel, la plage A1 à D1 c'est du bleu. S'il faut par la suite insérer des colonnes, l'insertion s'effectuera à l'intérieur de la plage A1:D1, donc le bleu initial demeurera dans la colonne insérée.

Merci.
 

JHA

XLDnaute Barbatruc
Re : Macro : insérer formule selon couleur de fond

Bonjour à tous,

Ci joint un exemple de Jacques Boisgontier (Formation Excel VBA JB), vois si cela peut te servir.

je t'ai mis également les N° des code couleur dans l'onglet "Palette couleur"

JHA
 

Pièces jointes

  • Fonction_CompteCouleurFond.xls
    78 KB · Affichages: 40
  • Fonction_CompteCouleurFond.xls
    78 KB · Affichages: 43
  • Fonction_CompteCouleurFond.xls
    78 KB · Affichages: 44

job75

XLDnaute Barbatruc
Re : Macro : insérer formule selon couleur de fond

Bonjour babacool, salut JHA,

Il faut bien sûr établir d'abord un tableau de correspondance entre les couleurs et les formules.

Je l'ai fait dans la 1ère feuille.

Ensuite, pour la 2ème feuille, la macro est simple :

Code:
Sub Formules()
'Feuil1 et Feuil2 sont les CodeName des feuilles
Dim coul As Range, plage As Range, p As Range, c As Range
Set coul = Feuil1.[A1:A3]
Set plage = Intersect(Feuil2.[1:1], Feuil2.UsedRange)
For Each p In plage
  For Each c In coul
    If p.Interior.Color = c.Interior.Color Then
      p(5) = c(1, 2)
      Exit For
    End If
  Next
Next
End Sub
A+
 

Pièces jointes

  • Exemple(1).xlsm
    21.2 KB · Affichages: 48
  • Exemple(1).xlsm
    21.2 KB · Affichages: 47
  • Exemple(1).xlsm
    21.2 KB · Affichages: 44

job75

XLDnaute Barbatruc
Re : Macro : insérer formule selon couleur de fond

Re,

Avec de "vraies" formules dans le fichier (2) :

Code:
Sub Formules()
'Feuil1 et Feuil2 sont les CodeName des feuilles
Dim coul As Range, plage As Range, p As Range, c As Range
Set coul = Feuil1.[A1:A3]
Set plage = Intersect(Feuil2.[1:1], Feuil2.UsedRange)
For Each p In plage
  For Each c In coul
    If p.Interior.Color = c.Interior.Color Then
      p(5).FormulaR1C1 = c(1, 2).Value
      Exit For
    End If
  Next
Next
End Sub
Voir aussi le fichier (2 bis), l'entrée des formules est différente.

A+
 

Pièces jointes

  • Exemple(2).xlsm
    22.3 KB · Affichages: 38
  • Exemple(2 bis).xlsm
    21.5 KB · Affichages: 39
  • Exemple(2).xlsm
    22.3 KB · Affichages: 41
  • Exemple(2).xlsm
    22.3 KB · Affichages: 41

job75

XLDnaute Barbatruc
Re : Macro : insérer formule selon couleur de fond

Bonjour babacool, le forum,

On peut aussi faire exécuter le code par une macro Worksheet_Change :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Feuil1 est le CodeName de la feuille
Dim coul As Range, plage As Range, p As Range, c As Range
Set coul = Feuil1.[A1:A3]
Set plage = Intersect([1:1], Me.UsedRange)
Application.EnableEvents = False 'désactive les événements
For Each p In plage
  For Each c In coul
    If p.Interior.Color = c.Interior.Color Then
      p(5).FormulaR1C1 = c(1, 2).Value
      Exit For
    End If
  Next
Next
Application.EnableEvents = True
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Exemple(3).xlsm
    18.8 KB · Affichages: 41
  • Exemple(3).xlsm
    18.8 KB · Affichages: 38
  • Exemple(3).xlsm
    18.8 KB · Affichages: 40

Discussions similaires

Statistiques des forums

Discussions
312 749
Messages
2 091 622
Membres
105 009
dernier inscrit
aurelien76110