Fusion "conditionnelle" de cellules

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

  • essai.xls
    17.5 KB · Affichages: 83
  • essai.xls
    17.5 KB · Affichages: 86
  • essai.xls
    17.5 KB · Affichages: 90
Dernière édition:

david84

XLDnaute Barbatruc
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+
 

bolem

XLDnaute Nouveau
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
 

david84

XLDnaute Barbatruc
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+
 

bolem

XLDnaute Nouveau
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
 

david84

XLDnaute Barbatruc
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+
 

bolem

XLDnaute Nouveau
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
 

david84

XLDnaute Barbatruc
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:rolleyes:), place manuellement dans le fichier le résultat attendu que nous puissions comprendre ton attente.
A+
 

bolem

XLDnaute Nouveau
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:rolleyes:), 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
 

bolem

XLDnaute Nouveau
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

  • essai2.xls
    37 KB · Affichages: 61
  • essai2.xls
    37 KB · Affichages: 75
  • essai2.xls
    37 KB · Affichages: 76

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 824
Membres
104 677
dernier inscrit
soufiane12