Fusion "conditionnelle" de cellules

  • Initiateur de la discussion Initiateur de la discussion bolem
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bolem

XLDnaute Nouveau
Bonjour


Suivant le choix d'un paramètre (avec une liste déroulante), j'aimerai que certaines cellules deviennent fusionnées ou centrées sur plusieurs colonnes.
est ce possible d'aller au delà de formats proposées dans les MFC ?

merci d'avance

Olivier

PS désolé pour le double envoi
 

Pièces jointes

Dernière édition:
Re : Fusion "conditionnelle" de cellules

Bonjour,
Clic droit sur l'objet=>affecter une macro :
Code:
Sub test()
Range("D13:I13").UnMerge
If [C13] = 1 Then
    With Range("D13:I13")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .MergeCells = True
    End With
End If
End Sub
A+
 
Re : Fusion "conditionnelle" de cellules

Merci
et avec d'anciens posts, j'ai pu éviter de te poser la question suivante : revenir en non fusionné si on change le choix:
Sub test()
Range("D13:I13").UnMerge
If [C13] = 1 Then
With Range("D13:I13")
.Value = ""
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = True
End With
Else
With Range("D13:I13")
.Value = ""
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = False
End With
End If
End Sub
 
Re : Fusion "conditionnelle" de cellules

Merci
et avec d'anciens posts, j'ai pu éviter de te poser la question suivante : revenir en non fusionné si on change le choix:
Sub test()
Range("D13:I13").UnMerge
If [C13] = 1 Then
With Range("D13:I13")
.Value = ""
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = True
End With
Else
With Range("D13:I13")
.Value = ""
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = False
End With
End If
End Sub
Pas besoin : la macro fournie prévoit ce cas puisque qu'elle commence par défusionner les cellules avant de tester si la cellule E13=1.
Donc si le choix diffère de 1, la plage de cellule n'est pas fusionnée.
Code:
Sub test()
Range("D13:I13").UnMerge 'enlève la fusion des cellules
If [C13] = 1 Then
    With Range("D13:I13")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .MergeCells = True
    End With
End If
End Sub

A+
 
Re : Fusion "conditionnelle" de cellules

oups j'ai quand même une question... un peu hors sujet de ce post (désolé)
comment donner une valeur à la case fusionnée ou aux cases "défusionnées".
La valeur peut être une formule...
j'imaginais quelque chose comme cela :
With Range("D13:d13")
.Value = "toto"
End With
comment faire pour mettre (ou remettre) une formule à l'intérieur :
initialement je voulais avoir en d12: =choisir(c13;"référence";"alimentation";"pif")
en e12 =choisir(c13;"";"droguerie";"paf") ...

merci encore
 
Re : Fusion "conditionnelle" de cellules

Re
oups j'ai quand même une question... un peu hors sujet de ce post (désolé)
comment donner une valeur à la case fusionnée ou aux cases "défusionnées".
La valeur peut être une formule...
j'imaginais quelque chose comme cela :
With Range("D13:d13")
.Value = "toto"
End With
comment faire pour mettre (ou remettre) une formule à l'intérieur :
initialement je voulais avoir en d12: =choisir(c13;"référence";"alimentation";"pif")
en e12 =choisir(c13;"";"droguerie";"paf") ...

Pas compris...tu peux nommer chaque cellule ainsi que la zone D13:I13 et te servir de ces noms dans tes formules mais je ne sais pas si j'ai répondu à ta question.
A+
 
Re : Fusion "conditionnelle" de cellules

Désolé si ce n'était pas clair (ce n'est pas mon fort)
Si tu prends le fichier initial.
EN changeant la liste déroulante, les cases de la ligne 12 changent (de d12 à i 12, il y a une formule avec "choisir".)
SI c13 = 1, grâce à toi elles seront fusionnées et prendront (en fait prendra) la valeur " référence"
Si c13 = 2, elles ne seront pas fusionnés (tjrs grâce à toi ;-) et devront prendre les valeurs "alimentation", "droguerie", "bricolage"...
j'aimerai pouvoir remettre ces formules dans la macro...

et comme valeur, la "formule" suivante plante dans la macro
With Range("D13:d13")
.Value = "=CHOISIR($C$13;$E$28;$F$28;$G$28;$H$28;$I$28;$J$28;$K$28;$L$28)"
End With
 
Re : Fusion "conditionnelle" de cellules

Re

désolé mais je ne comprends pas où tu veux en venir.
EN changeant la liste déroulante, les cases de la ligne 12 changent (de d12 à i 12, il y a une formule avec "choisir".)
SI c13 = 1, grâce à toi elles seront fusionnées et prendront (en fait prendra) la valeur " référence"
Si c13 = 2, elles ne seront pas fusionnés (tjrs grâce à toi ;-) et devront prendre les valeurs "alimentation", "droguerie", "bricolage"...
Ok
j'aimerai pouvoir remettre ces formules dans la macro...
Pourquoi puisqu'elles sont dans la feuille ?
et comme valeur, la "formule" suivante plante dans la macro
With Range("D13:d13")
.Value = "=CHOISIR($C$13;$E$28;$F$28;$G$28;$H$28;$I$28;$J$2 8;$K$28;$L$28)"
End With
Pourquoi
Range("D13:d13")
?
Pour utiliser une formule dans une macro, le plus simple est de lancer l'enregistreur de macros, de rentrer et valider ta formule. Tu arrêtes l'enregistreur et tu peux ainsi récupérer le code pour l'incorporer dans ta macro.
Tu peux aussi utiliser les fonction VBA. Pour CHOISIR, c'est Application.WorksheetFunction.Choose

Essaie de ton côté.
Si tu n'y arrives pas (en ayant persévéré tout de même🙄), place manuellement dans le fichier le résultat attendu que nous puissions comprendre ton attente.
A+
 
Re : Fusion "conditionnelle" de cellules

Re

désolé mais je ne comprends pas où tu veux en venir.

Ok

Pourquoi puisqu'elles sont dans la feuille ?

Juste un petit mot pour expliquer et ce soir chez moi je chercherai...

Elles sont dans la feuille pour le moment mais une fois que j'aurais mis les fusion sur toutes les cases qui m'intéressent... elles vont disparaitre:
Si C13 = 1, les cellules d12 à i12 seront fusionnées et prendra la valeur "référence"
si on revient sur le choix de c13, les formules présentes actuellement dans les cases d12 à i12 auront disparu

Re
Pourquoi ?
Pour utiliser une formule dans une macro, le plus simple est de lancer l'enregistreur de macros, de rentrer et valider ta formule. Tu arrêtes l'enregistreur et tu peux ainsi récupérer le code pour l'incorporer dans ta macro.
Tu peux aussi utiliser les fonction VBA. Pour CHOISIR, c'est Application.WorksheetFunction.Choose

Essaie de ton côté.
Si tu n'y arrives pas (en ayant persévéré tout de même🙄), place manuellement dans le fichier le résultat attendu que nous puissions comprendre ton attente.
A+

Je vais essayer ce soir pour la partie enregistrement de macro... pour le vba, c'est apriori nettement au dessus de mes moyens (je peux essayer de trouver des exemples de comment utiliser WorksheetFunction.Choose)

Olivier
 
Re : Fusion "conditionnelle" de cellules

Bonjour

avec retard, quelques nouvelles. avec l'enregistrement des macro, j'ai réussi à faire ce que je voulais (peut-être que je sous estimais cette fonction) et Tout semble marcher

merci encore

pour info le fichier avec mes modifs

Olivier
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
21
Affichages
5 K
Retour