Fusionner cellules sous condition
Bonjour à tous,
j'ai fait quelques recherches sur le forum sans succès concernant mon soucis:
je suis sous Excel 14.0.0 (2011 Mac) et je souhaite utiliser mon tableur comme planning.
Chaque case représente 15 minutes et je souhaite automatiser d'une part la mise en forme mais aussi la fusion des 2 cellules en dessous de ma cellule de saisie.
Si on considère la colonne B, chaque ligne représente 1/4 heure, donc B1=11h00, B2=11h15, B3=11h30, B4=11h45, etc.
| / | A | B |
| 1 | 11h00 | ... |
| 2 | 11h15 | ... |
| 3 | 11h30 | ... |
| 4 | 11h45 | ... |
| 5 | 12h00 | ... |
Si je saisie une info (texte) dans B1, je souhaite que B1, B2 et B3 se fusionnent et changent de couleur, mais si C B3 qui est sélectionné, ce sera B3, B4 et B5.
Pour ce qui est de la couleur, j'ai effectué une mise en forme conditionnelle, donc no soucy, mais la fusion des 3 autres ....????
Merci pour votre aide.
Si cela est important je précise que mon Excel est en anglais sur mon Ordi du boulot
Bertrand
Bonsoir,
Essaie avec ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Not Target.MergeCells And Target.Cells(1, 1).Value <> "" _
And Target.Count = 1 Then
With Target.Resize(3)
.Merge
.VerticalAlignment = xlCenter
End With
ElseIf Target.Cells(1, 1).Value = "" Then
Target.UnMerge
End If
End If
End SubA coller dans le module de la feuille concernée.
Cordialement.
Bonjour,
j'ai tenté le coup mais il me dit (lors du test de la macro) End Sub expected, mais il y en a déjà assez pour moi (j'ai essayé avec un End Sub de moins aussi):
Sub FUSION()
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Not Target.MergeCells And Target.Cells(1, 1).Value <> "" _
And Target.Count = 1 Then
With Target.Resize(3)
.Merge
.VerticalAlignment = xlCenter
End With
ElseIf Target.Cells(1, 1).Value = "" Then
Target.UnMerge
End If
End If
End Sub
End Sub
Sais-tu ce qu'est une macro ? Et particulièrement une macro évènementielle ?
Je te fournis une macro complète. Il n'y a rien à ajouter ni retrancher.
C'est une évènementielle, qui ne fonctionnera que insérée dans un module de feuille : donc sur l'onglet de la feuille sur laquelle tu veux que la procédure s'applique, tu fais un clic droit, et tu choisis dans le menu contextuel : Visualiser le code. Ce qui t'amènera dans l'éditeur VBA sur le Module dévolu à la feuille.
Tu copies la macro et tu la colles telle quelle dans ce module : elle faite pour fonctionner là et pas ailleurs, et sous ce nom et pas un autre.
Elle va réagir à tout changement de valeur de cellule dans la feuille, et s'exécuter lorsqu'un changement intervient en colonne B.
Si la cellule concernée contient une valeur et n'est pas fusionnée, elle va la fusionner avec les 2 cellules suivantes (qui devront ne pas être fusionnée, sinon elle fusionnera avec la fusion existante), et centrer l'alignement vertical.
Si la cellule (le groupe dans ce cas) est déjà fusionnée, elle laisse la fusion.
Si la cellule ne contient pas de valeur (tu l'as effacée), si elle est fusionnée, elle défusionne.
C'est ce découlait de ta demande.
Merci,
j'ai eu du mal à trouver le "visualiseur de code" sous mon Excel Mac 2011 (sans soucis sur Excel PC 2003) :
pour info si vous êtes dans mon cas (Mac 2011),
1- faire apparaitre la barre "developer" en cliquant sur la roue dentée à droite de la barre verte (Ribbon) et choisir "Ribbon preferences" et cocher "developer" dans la liste avant de valider.
2- sélectionner tt la feuille avec la case en haut à gauche
3- dans les choix de la barre "developer", cliquer sur "editor" et puis clique droit sur la feuille concernée.
à ce stade vous pourrez créer la VBA donnée plus haut (merci MFerrand) et c'est nickel
Bon, sous Excel 2003, il m'a suffit d'un clique droit sur l'onglet et hop.... (effectivement c'est plus simple).
Bertrand
Pas de "Visualiser le code" dans le menu contextuel au clic droit sous MAC ?
Il ne semble pas, pas sur mon poste en tout cas
Bonjour,
Je suis sur Excel 2016 FR pour Mac et j'ai la même question que Greezoon, mais avec deux conditions supplémentaires.
J'ai dois faire un planning avec également des plages de 15 minutes mais parfois regroupée en 45 minutes et d'autres de 60 minutes et sur trois jours différents (1 colonne par jour B=mardi, C=mercredi, D= vendredi). Comment ajouter la première condition dans l'éditeur VBA? Je n'y comprends pas grand chose en macro, j'ai essayé de chercher par moi-même, j'ai compris comment faire les trois colonnes et comment fusionner en 3 ou 4, mais ça me fait soit l'un soit l'autre. C'est-à-dire soit 45 minutes soit 60 minutes et je ne trouve pas comment faire dans une même colonne l'un ou l'autre.
Je vous joins un petit fichier représentant un exemple de résultat que je souhaiterais obtenir.
Merci beaucoup pour votre aide!
Leana