Copier la couleur d'une cellule avec fonction si?
Bonjour,
J'aimerais pouvoir faire ceci:
Dans une feuille certaines cellules sont remplies et avec un fond coloré, d'autres non .
Dans une seconde feuille, j'aimerais pouvoir copier (avec la couleur de cellule!) les cellules de la première feuille si celles ci sont remplies .
J'arrive avec la fonction si et estvide à copier le contenu des cellules remplies mais pas leur couleur de fond
Une piste?
merci!
Bonjour Eole,
A l'heure actuelle, Google Sheets ne dispose pas d'une fonction intégrée permettant de copier la couleur d'une cellule à l'aide d'une formule. Les formules de Google Sheets travaillent avec les valeurs et les données, mais pas avec la mise en forme.
Cependant, vous pouvez le faire en utilisant des scripts Google Apps, un exemple de code qui pourrait accomplir cette tâche :
function copyCellColors() {
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Feuille 1"); // nom de la feuille source
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Feuille 2"); // nom de la feuille cible
var range = sourceSheet.getDataRange(); // plage de cellules à copier
var values = range.getValues(); // obtenir les valeurs
var colors = range.getBackgrounds(); // obtenir les couleurs
for(var i = 0; i < values.length; i++) {
for(var j = 0; j < values[i].length; j++) {
if(values[i][j] !== "") { // si la cellule n'est pas vide
targetSheet.getRange(i+1, j+1).setValue(values[i][j]); // copier la valeur
targetSheet.getRange(i+1, j+1).setBackground(colors[i][j]); // copier la couleur
}
}
}
}
Ce script copie les valeurs et les couleurs des cellules non vides de la "Feuille 1" vers la "Feuille 2". Vous devez exécuter ce script chaque fois que vous voulez mettre à jour les données dans la "Feuille 2". Ce script ne fonctionne que pour les cellules non vides. Si une cellule dans la feuille source est vide, aucune couleur n'est copiée.
Re,
Si vous voulez réaliser ça en vba, vous pouvez tester en utilisant ce code :
Sub CopyCellColors()
Dim SourceSheet As Worksheet
Dim TargetSheet As Worksheet
Dim c As Range
Dim SourceRange As Range
Dim TargetRange As Range
Set SourceSheet = ThisWorkbook.Sheets("Feuille1") 'nom de la feuille source
Set TargetSheet = ThisWorkbook.Sheets("Feuille2") 'nom de la feuille cible
'définir la plage de cellules dans la feuille source
Set SourceRange = SourceSheet.Range("A1:C10") 'à adapter à votre besoin
'boucler à travers chaque cellule dans la plage
For Each c In SourceRange
'si la cellule n'est pas vide, copier la valeur et la couleur
If c.Value <> "" Then
'définir la cellule correspondante dans la feuille cible
Set TargetRange = TargetSheet.Range(c.Address)
TargetRange.Value = c.Value
TargetRange.Interior.Color = c.Interior.Color
End If
Next c
End Sub
Cette macro copiera les valeurs et les couleurs des cellules de "Feuille1" à "Feuille2" pour les cellules qui ne sont pas vides. Vous devez adapter le nom des feuilles et la plage de cellules dans la feuille source (SourceRange
) à vos besoins. J'espère que cela vous aidera.
Bonjour
Merci pour le script, je vais essayer en mettant un declancheur à l'ouverture!
Bonne soirée
Rebonjour,
Est ce que c'est possible que cela ne copie que les cellules d'une certaine couleur?