Fusionner cellules et afficher message en fonction des critères
Bonjour à tous,
Je viens avec plaisir sur ce forum car on m'a dit que l'on a toujours des super retours !
Je cherche à automatiser un reporting et j'aurais besoin de votre aide.
J'ai un tableau dans lequel je souhaite fusionner des cellules et affichier un message specifique (collones K:J), en fonction des valeurs que j'aurais préalablement cochées dans une cellule (colonne E) de la même feuille .
Peut-on le faire de manière automatisée? Sachant que dans les cellules que je shouhaite fusionner j'ai déjà appliqué une validation de données (Pour info, je suis sur excel 2016 en anglais).
Je joins un exemple. Je voudrais fusionner et avoir un message personalisé dans les cellules des colonnes K:S si j'ai un "Yes" dans la collone E.
Merci d'avance pour votre aide!
A très vite j'espère
Bonjour,
Votre demande est un peu confuse,
- Quelles cellules voulez-vous fusionner ? J:K ou K:S
-Je ne vois nulle part de validation de données
De plus , votre tableau est un tableau structuré, donc vous ne pouvez pas fusionner des cellules d'une même ligne, il faut reconvertir votre tableau en plage et dans ce cas, vous perdez tout le bénéfice du tableau structuré.
L'idéal serait que vous renvoyez votre tableau avec un exemple du résultat attendu, ce qui permettrait d'y voir plus clair sur l'objectif à atteindre.
Cdlt
Bonjour Arturo,
Merci bcp de votre retour.
En fait je cherche à fusionner les cellules K:S.
Ce que je voulais dire avec la validation de données est que dans certains cellules (K, L, M, O) il y a des listes
déroulantes.
Ci-joint l'exemple du résultat attendu (ligne 6). J'ai aussi reconverti le tableau en plage :)
Merci encore de votre aide, c'est très gentil!
Votre exemple n'est pas suffisamment commenté, on fusionne les cellules de "K à S" si en "E" il y a "Yes",
-Oui mais, que fait-on des données présentes dans ces cellules ?
Exemple ligne 13, où pratiquement toutes les cellules comprises entre K et S sont remplies !
********************************************************************
Je ne vois toujours pas de listes déroulantes.
********************************************************************
Sinon le code pour fusionner les cellules d'une ligne comportant "Yes" en colonne "E".
Sub Fusion_Cellules()
Dim DerLig As Long, i As Long
Application.ScreenUpdating = False
DerLig = Range("A" & Rows.Count).End(xlUp).Row
If DerLig > 5 Then
For i = 6 To DerLig
If Cells(i, "E") = "Yes" Then
With Range(Cells(i, "K"), Cells(i, "S"))
.Merge
.Value = "Do not complete - Enter this opportunity directly into the system"
.Font.ColorIndex = 3
.Font.Bold = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End If
Next i
End If
End SubTout à fait. Dans l'exemple que je vous ai envoyé j'ai dû effacer les données et les listes déroulantes car je ne savais pas comment faire. Mon objectif est de faire disparaitre les données existantes (listes), fusionner les cellules et avoir un message à la place. Est-ce que cela est possible avec le code que vous avez partagé?
Merci encore!
Arturo,
Je viens d'utiliser le code et ça marche parfaitement. Par contre, savez-vous comment je peux faire si je veux que cela s'applique que quand il y a "Yes" dans la colonne E? C'est-à-dire, je voudrais que les cellules reviennent aux conditions précédentes si je change le "Yes" pour un "No" ou si j'efface la valeur dans la colonne E.
Bonjour,
Ce que vous demandez (retour aux anciennes valeurs), nécessite de sauvegarder les valeurs avant de fusionner. C'est ce que j'ai fait, à chaque fois que l'on rencontre "Yes" dans la colonne "E", la plage de cellules de K à S est recopiée en "V" à "AD", ainsi si vous revenez à "No" l'opération inverse sera effectuée et vous retrouverez l'état initial.
J'ai supprimé les mises en formes conditionnelles, elles sont remplacées par le code qui analyse le contenu de la colonne "M" et applique les couleurs correspondantes.
La macro analyse toute la feuille, elle est lancée en cliquant sur le bouton "Click here to check the status of column E"
le code
Option Compare Text
Sub Fusionner()
Dim DerLig As Long, i As Long
DerLig = Range("A" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If DerLig > 5 Then
For i = 6 To DerLig
If Cells(i, "E") = "Yes" Then
'on vérifie si la plage de cellule n'est pas déjà fusionnée
If Range(Cells(i, "K"), Cells(i, "S")).MergeCells = False Then
'sauvegarde des données dans la plage de cellules de V à AD
Range(Cells(i, "K"), Cells(i, "S")).Copy Cells(i, "V")
'Fusion des cellules
With Range(Cells(i, "K"), Cells(i, "S"))
.Merge
.Value = "Do not complete - Enter this opportunity directly into the system"
.Font.ColorIndex = 3
.Font.Bold = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End If
Else 'si E = "No" ou vide
'récupération des données si la plage de cellules avait été fusionnée auparavant
If Range(Cells(i, "K"), Cells(i, "S")).MergeCells Then
Range(Cells(i, "K"), Cells(i, "S")).UnMerge
Range(Cells(i, "V"), Cells(i, "AD")).Copy Cells(i, "K")
Range(Cells(i, "V"), Cells(i, "AD")).ClearContents
End If
End If
'Application d'une couleur de fond de cellule en fonction du contenu de la colonne "M"
Select Case Cells(i, "M")
Case Is = "Cancelled by ING", "Cancelled by client"
Range(Cells(i, "B"), Cells(i, "S")).Interior.Color = RGB(216, 216, 216) 'gris
Case Is = "Closed lost"
Range(Cells(i, "B"), Cells(i, "S")).Interior.Color = RGB(255, 175, 175) 'rouge
Case Is = "Closed won"
Range(Cells(i, "B"), Cells(i, "S")).Interior.Color = RGB(197, 224, 178) 'vert
Case Is = "Implementation", "Documentation", "Mandating", "Pitching"
Range(Cells(i, "B"), Cells(i, "S")).Interior.Color = RGB(255, 243, 203) 'jaune
Case Else
Range(Cells(i, "B"), Cells(i, "S")).Interior.ColorIndex = xlNone
End Select
Next i
End If
End Suble fichier
Cdlt