Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Détection des cellules fusionnées

10 réponses
Avatar
JLH974
Bonjour à tous
je vous soumets un problème que je n'arrive pas à résoudre, je sais que
votre sagacité EXCELlente sera d'un grand secours :-)
J'ai un tableau composé en grande partie de cellules fusionnées
verticalement et/ou horizontalement.
Je sais que la valeur qui sera inscrite dans la zone fusionnée sera celle de
la cellule la plus à gauche et la plus haute (du moins je crois que c'est
cela)
Mais comment, à partir de VBA, détecter si une cellule est fusionnée ou non
et si elle l'est avec quelles autres cellules?

Jean-Luc H

10 réponses

Avatar
JB
Bonjour

Set c = Range("B3")
If c.MergeCells Then MsgBox c.MergeArea.Address


JB
http://boisgontierjacques.free.fr/

On 13 avr, 07:44, "JLH974" wrote:
Bonjour à tous
je vous soumets un problème que je n'arrive pas à résoudre, je sais que
votre sagacité EXCELlente sera d'un grand secours :-)
J'ai un tableau composé en grande partie de cellules fusionnées
verticalement et/ou horizontalement.
Je sais que la valeur qui sera inscrite dans la zone fusionnée sera cel le de
la cellule la plus à gauche et la plus haute (du moins je crois que c'e st
cela)
Mais comment, à partir de VBA, détecter si une cellule est fusionné e ou non
et si elle l'est avec quelles autres cellules?

Jean-Luc H
Avatar
JLH974
Merci JB
Clair, rapide, efficace... EXCELlent

JLH974


"JB" a écrit dans le message de
news:
Bonjour

Set c = Range("B3")
If c.MergeCells Then MsgBox c.MergeArea.Address


JB
http://boisgontierjacques.free.fr/

On 13 avr, 07:44, "JLH974" wrote:
Bonjour à tous
je vous soumets un problème que je n'arrive pas à résoudre, je sais que
votre sagacité EXCELlente sera d'un grand secours :-)
J'ai un tableau composé en grande partie de cellules fusionnées
verticalement et/ou horizontalement.
Je sais que la valeur qui sera inscrite dans la zone fusionnée sera celle
de
la cellule la plus à gauche et la plus haute (du moins je crois que c'est
cela)
Mais comment, à partir de VBA, détecter si une cellule est fusionnée ou
non
et si elle l'est avec quelles autres cellules?

Jean-Luc H
Avatar
JC Duce
Bonjour,

Tu peux regarder du côté des propriétés MergeArea et MergeCells pour
retrouver les cellules fusionnées présentes dans la plage de ton tableau.


"JLH974" wrote:

Bonjour à tous
je vous soumets un problème que je n'arrive pas à résoudre, je sais que
votre sagacité EXCELlente sera d'un grand secours :-)
J'ai un tableau composé en grande partie de cellules fusionnées
verticalement et/ou horizontalement.
Je sais que la valeur qui sera inscrite dans la zone fusionnée sera celle de
la cellule la plus à gauche et la plus haute (du moins je crois que c'est
cela)
Mais comment, à partir de VBA, détecter si une cellule est fusionnée ou non
et si elle l'est avec quelles autres cellules?

Jean-Luc H


.

Avatar
JC Duce
Pour compléter ma réponse :

Tu nomme toute la plage concernant ton tableau ("plageTest" dans mon
exemple) puis tu execute le code ci-dessous :

------ Debut -----
Public Sub detecteFusion()
For Each cellule In Range("plageTest")
If Range(cellule.Address).MergeCells Then
MsgBox (cellule.Address)
End If
Next cellule
End Sub
------ Fin -----

Tu obtiendra en boite de dialogue les addresses des cellules fusionnées.

"JC Duce" wrote:

Bonjour,

Tu peux regarder du côté des propriétés MergeArea et MergeCells pour
retrouver les cellules fusionnées présentes dans la plage de ton tableau.


"JLH974" wrote:

> Bonjour à tous
> je vous soumets un problème que je n'arrive pas à résoudre, je sais que
> votre sagacité EXCELlente sera d'un grand secours :-)
> J'ai un tableau composé en grande partie de cellules fusionnées
> verticalement et/ou horizontalement.
> Je sais que la valeur qui sera inscrite dans la zone fusionnée sera celle de
> la cellule la plus à gauche et la plus haute (du moins je crois que c'est
> cela)
> Mais comment, à partir de VBA, détecter si une cellule est fusionnée ou non
> et si elle l'est avec quelles autres cellules?
>
> Jean-Luc H
>
>
> .
>
Avatar
JLH974
Merci à tous pour vos contributions
Par contre, je rencontre un autre problème : L'adresse de la zone fusionnée
est fournie sous la forme que je déteste le plus au monde genre $A$52:$KL152
Avant que je ne réinvente une moulinette à transformer les coordonnées,
comment sortir plus simplement les 4 numéros de colonne et de ligne début et
fin de la zone?
Pour le début, je pense que les propriétés .Column et .Row de la .MergeArea
nous donnent les coordonnées de début de la zone, mais pour la fin comment
faire?

Jean-Luc




"JC Duce" a écrit dans le message de
news:
Pour compléter ma réponse :

Tu nomme toute la plage concernant ton tableau ("plageTest" dans mon
exemple) puis tu execute le code ci-dessous :

------ Debut -----
Public Sub detecteFusion()
For Each cellule In Range("plageTest")
If Range(cellule.Address).MergeCells Then
MsgBox (cellule.Address)
End If
Next cellule
End Sub
------ Fin -----

Tu obtiendra en boite de dialogue les addresses des cellules fusionnées.

"JC Duce" wrote:

Bonjour,

Tu peux regarder du côté des propriétés MergeArea et MergeCells pour
retrouver les cellules fusionnées présentes dans la plage de ton tableau.


"JLH974" wrote:

> Bonjour à tous
> je vous soumets un problème que je n'arrive pas à résoudre, je sais que
> votre sagacité EXCELlente sera d'un grand secours :-)
> J'ai un tableau composé en grande partie de cellules fusionnées
> verticalement et/ou horizontalement.
> Je sais que la valeur qui sera inscrite dans la zone fusionnée sera
> celle de
> la cellule la plus à gauche et la plus haute (du moins je crois que
> c'est
> cela)
> Mais comment, à partir de VBA, détecter si une cellule est fusionnée ou
> non
> et si elle l'est avec quelles autres cellules?
>
> Jean-Luc H
>
>
> .
>
Avatar
Daniel.C
Bonjour.
Remplace .Address par .Adress(0,0)
Pas vraiment compris ce que tu voulais d'autre ?
Cordialement.
Daniel

Merci à tous pour vos contributions
Par contre, je rencontre un autre problème : L'adresse de la zone fusionnée
est fournie sous la forme que je déteste le plus au monde genre $A$52:$KL152
Avant que je ne réinvente une moulinette à transformer les coordonnées,
comment sortir plus simplement les 4 numéros de colonne et de ligne début et
fin de la zone?
Pour le début, je pense que les propriétés .Column et .Row de la .MergeArea
nous donnent les coordonnées de début de la zone, mais pour la fin comment
faire?

Jean-Luc




"JC Duce" a écrit dans le message de
news:
Pour compléter ma réponse :

Tu nomme toute la plage concernant ton tableau ("plageTest" dans mon
exemple) puis tu execute le code ci-dessous :

------ Debut -----
Public Sub detecteFusion()
For Each cellule In Range("plageTest")
If Range(cellule.Address).MergeCells Then
MsgBox (cellule.Address)
End If
Next cellule
End Sub
------ Fin -----

Tu obtiendra en boite de dialogue les addresses des cellules fusionnées.

"JC Duce" wrote:

Bonjour,

Tu peux regarder du côté des propriétés MergeArea et MergeCells pour
retrouver les cellules fusionnées présentes dans la plage de ton tableau.


"JLH974" wrote:

> Bonjour à tous
> je vous soumets un problème que je n'arrive pas à résoudre, je sais que
> votre sagacité EXCELlente sera d'un grand secours :-)
> J'ai un tableau composé en grande partie de cellules fusionnées
> verticalement et/ou horizontalement.
> Je sais que la valeur qui sera inscrite dans la zone fusionnée sera
celle de
> la cellule la plus à gauche et la plus haute (du moins je crois que
c'est
> cela)
> Mais comment, à partir de VBA, détecter si une cellule est fusionnée ou
non
> et si elle l'est avec quelles autres cellules?
>
> Jean-Luc H
>
>
> .
>
Avatar
JLH974
Bonjour Daniel
En fait ce que j'aurais voulu cest avoir les coordonnées de la première
cellule (à gauche et en haut) et de la dernière cellule (à droite et en bas)
de la zone fusionnée
mais pas sous la forme avec des lettres (genre $A$12:&J$25) mais en
récupérant indépendamment les numéros de ligne et de colonne de ces deux
cellules
Pour la cellule de début, je sais, il suffit de prendre .MergeArea.Column et
MergeArea.Row mais pour la cellule de fin (en bas à droite) je ne sais pas
comment faire. Une idée?

Jean-Luc


"Daniel.C" a écrit dans le message de
news:%23sk%
Bonjour.
Remplace .Address par .Adress(0,0)
Pas vraiment compris ce que tu voulais d'autre ?
Cordialement.
Daniel

Merci à tous pour vos contributions
Par contre, je rencontre un autre problème : L'adresse de la zone
fusionnée est fournie sous la forme que je déteste le plus au monde genre
$A$52:$KL152
Avant que je ne réinvente une moulinette à transformer les coordonnées,
comment sortir plus simplement les 4 numéros de colonne et de ligne début
et fin de la zone?
Pour le début, je pense que les propriétés .Column et .Row de la
.MergeArea nous donnent les coordonnées de début de la zone, mais pour la
fin comment faire?

Jean-Luc




"JC Duce" a écrit dans le message de
news:
Pour compléter ma réponse :

Tu nomme toute la plage concernant ton tableau ("plageTest" dans mon
exemple) puis tu execute le code ci-dessous :

------ Debut -----
Public Sub detecteFusion()
For Each cellule In Range("plageTest")
If Range(cellule.Address).MergeCells Then
MsgBox (cellule.Address)
End If
Next cellule
End Sub
------ Fin -----

Tu obtiendra en boite de dialogue les addresses des cellules fusionnées.

"JC Duce" wrote:

Bonjour,

Tu peux regarder du côté des propriétés MergeArea et MergeCells pour
retrouver les cellules fusionnées présentes dans la plage de ton
tableau.


"JLH974" wrote:

> Bonjour à tous
> je vous soumets un problème que je n'arrive pas à résoudre, je sais
> que
> votre sagacité EXCELlente sera d'un grand secours :-)
> J'ai un tableau composé en grande partie de cellules fusionnées
> verticalement et/ou horizontalement.
> Je sais que la valeur qui sera inscrite dans la zone fusionnée sera
celle de
> la cellule la plus à gauche et la plus haute (du moins je crois que
c'est
> cela)
> Mais comment, à partir de VBA, détecter si une cellule est fusionnée
> ou
non
> et si elle l'est avec quelles autres cellules?
>
> Jean-Luc H
>
>
> .
>








Avatar
michdenis
Bonjour,

Un exemple : en supposant que la cellule C8 est fusionnée :

'--------------------------------
Sub test()
Dim Ligne As Long, Colonne As Integer,Adresse as String
With Range("C8").MergeArea
Ligne = .Item(Range("C8").MergeArea.Count).Row
Colonne = .Item(Range("C8").MergeArea.Count).Column
adresse = Cells(Ligne, Colonne).Address
End With
End Sub
'--------------------------------



"JLH974" a écrit dans le message de groupe de
discussion : 4bc453f4$0$2986$
Bonjour Daniel
En fait ce que j'aurais voulu cest avoir les coordonnées de la première
cellule (à gauche et en haut) et de la dernière cellule (à droite et en bas)
de la zone fusionnée
mais pas sous la forme avec des lettres (genre $A$12:&J$25) mais en
récupérant indépendamment les numéros de ligne et de colonne de ces deux
cellules
Pour la cellule de début, je sais, il suffit de prendre .MergeArea.Column et
MergeArea.Row mais pour la cellule de fin (en bas à droite) je ne sais pas
comment faire. Une idée?

Jean-Luc


"Daniel.C" a écrit dans le message de
news:%23sk%
Bonjour.
Remplace .Address par .Adress(0,0)
Pas vraiment compris ce que tu voulais d'autre ?
Cordialement.
Daniel

Merci à tous pour vos contributions
Par contre, je rencontre un autre problème : L'adresse de la zone
fusionnée est fournie sous la forme que je déteste le plus au monde genre
$A$52:$KL152
Avant que je ne réinvente une moulinette à transformer les coordonnées,
comment sortir plus simplement les 4 numéros de colonne et de ligne début
et fin de la zone?
Pour le début, je pense que les propriétés .Column et .Row de la
.MergeArea nous donnent les coordonnées de début de la zone, mais pour la
fin comment faire?

Jean-Luc




"JC Duce" a écrit dans le message de
news:
Pour compléter ma réponse :

Tu nomme toute la plage concernant ton tableau ("plageTest" dans mon
exemple) puis tu execute le code ci-dessous :

------ Debut -----
Public Sub detecteFusion()
For Each cellule In Range("plageTest")
If Range(cellule.Address).MergeCells Then
MsgBox (cellule.Address)
End If
Next cellule
End Sub
------ Fin -----

Tu obtiendra en boite de dialogue les addresses des cellules fusionnées.

"JC Duce" wrote:

Bonjour,

Tu peux regarder du côté des propriétés MergeArea et MergeCells pour
retrouver les cellules fusionnées présentes dans la plage de ton
tableau.


"JLH974" wrote:

> Bonjour à tous
> je vous soumets un problème que je n'arrive pas à résoudre, je sais
> que
> votre sagacité EXCELlente sera d'un grand secours :-)
> J'ai un tableau composé en grande partie de cellules fusionnées
> verticalement et/ou horizontalement.
> Je sais que la valeur qui sera inscrite dans la zone fusionnée sera
celle de
> la cellule la plus à gauche et la plus haute (du moins je crois que
c'est
> cela)
> Mais comment, à partir de VBA, détecter si une cellule est fusionnée
> ou
non
> et si elle l'est avec quelles autres cellules?
>
> Jean-Luc H
>
>
> .
>








Avatar
JC Duce
Pour la cellule de fin :

Ligne = Rows(c.MergeArea.Rows.Count + c.MergeArea.Row - 1).Row
Colonne = Columns(c.MergeArea.Columns.Count + c.MergeArea.Column - 1).Column



"JLH974" wrote:

Bonjour Daniel
En fait ce que j'aurais voulu cest avoir les coordonnées de la première
cellule (à gauche et en haut) et de la dernière cellule (à droite et en bas)
de la zone fusionnée
mais pas sous la forme avec des lettres (genre $A$12:&J$25) mais en
récupérant indépendamment les numéros de ligne et de colonne de ces deux
cellules
Pour la cellule de début, je sais, il suffit de prendre .MergeArea.Column et
MergeArea.Row mais pour la cellule de fin (en bas à droite) je ne sais pas
comment faire. Une idée?

Jean-Luc


"Daniel.C" a écrit dans le message de
news:%23sk%
> Bonjour.
> Remplace .Address par .Adress(0,0)
> Pas vraiment compris ce que tu voulais d'autre ?
> Cordialement.
> Daniel
>
>> Merci à tous pour vos contributions
>> Par contre, je rencontre un autre problème : L'adresse de la zone
>> fusionnée est fournie sous la forme que je déteste le plus au monde genre
>> $A$52:$KL152
>> Avant que je ne réinvente une moulinette à transformer les coordonnées,
>> comment sortir plus simplement les 4 numéros de colonne et de ligne début
>> et fin de la zone?
>> Pour le début, je pense que les propriétés .Column et .Row de la
>> .MergeArea nous donnent les coordonnées de début de la zone, mais pour la
>> fin comment faire?
>>
>> Jean-Luc
>>
>>
>>
>>
>> "JC Duce" a écrit dans le message de
>> news:
>>> Pour compléter ma réponse :
>>>
>>> Tu nomme toute la plage concernant ton tableau ("plageTest" dans mon
>>> exemple) puis tu execute le code ci-dessous :
>>>
>>> ------ Debut -----
>>> Public Sub detecteFusion()
>>> For Each cellule In Range("plageTest")
>>> If Range(cellule.Address).MergeCells Then
>>> MsgBox (cellule.Address)
>>> End If
>>> Next cellule
>>> End Sub
>>> ------ Fin -----
>>>
>>> Tu obtiendra en boite de dialogue les addresses des cellules fusionnées.
>>>
>>> "JC Duce" wrote:
>>>
>>>> Bonjour,
>>>>
>>>> Tu peux regarder du côté des propriétés MergeArea et MergeCells pour
>>>> retrouver les cellules fusionnées présentes dans la plage de ton
>>>> tableau.
>>>>
>>>>
>>>> "JLH974" wrote:
>>>>
>>>> > Bonjour à tous
>>>> > je vous soumets un problème que je n'arrive pas à résoudre, je sais
>>>> > que
>>>> > votre sagacité EXCELlente sera d'un grand secours :-)
>>>> > J'ai un tableau composé en grande partie de cellules fusionnées
>>>> > verticalement et/ou horizontalement.
>>>> > Je sais que la valeur qui sera inscrite dans la zone fusionnée sera
>>>> celle de
>>>> > la cellule la plus à gauche et la plus haute (du moins je crois que
>>>> c'est
>>>> > cela)
>>>> > Mais comment, à partir de VBA, détecter si une cellule est fusionnée
>>>> > ou
>>>> non
>>>> > et si elle l'est avec quelles autres cellules?
>>>> >
>>>> > Jean-Luc H
>>>> >
>>>> >
>>>> > .
>>>> >
>
>

.

Avatar
JLH974
Merci JC (et merci à tous)
Je viens de redémarrer mon projet grâce à vous

JLH974



"JC Duce" a écrit dans le message de
news:
Pour la cellule de fin :

Ligne = Rows(c.MergeArea.Rows.Count + c.MergeArea.Row - 1).Row
Colonne = Columns(c.MergeArea.Columns.Count + c.MergeArea.Column -
1).Column



"JLH974" wrote:

Bonjour Daniel
En fait ce que j'aurais voulu cest avoir les coordonnées de la première
cellule (à gauche et en haut) et de la dernière cellule (à droite et en
bas)
de la zone fusionnée
mais pas sous la forme avec des lettres (genre $A$12:&J$25) mais en
récupérant indépendamment les numéros de ligne et de colonne de ces deux
cellules
Pour la cellule de début, je sais, il suffit de prendre .MergeArea.Column
et
MergeArea.Row mais pour la cellule de fin (en bas à droite) je ne sais
pas
comment faire. Une idée?

Jean-Luc


"Daniel.C" a écrit dans le message de
news:%23sk%
> Bonjour.
> Remplace .Address par .Adress(0,0)
> Pas vraiment compris ce que tu voulais d'autre ?
> Cordialement.
> Daniel
>
>> Merci à tous pour vos contributions
>> Par contre, je rencontre un autre problème : L'adresse de la zone
>> fusionnée est fournie sous la forme que je déteste le plus au monde
>> genre
>> $A$52:$KL152
>> Avant que je ne réinvente une moulinette à transformer les
>> coordonnées,
>> comment sortir plus simplement les 4 numéros de colonne et de ligne
>> début
>> et fin de la zone?
>> Pour le début, je pense que les propriétés .Column et .Row de la
>> .MergeArea nous donnent les coordonnées de début de la zone, mais pour
>> la
>> fin comment faire?
>>
>> Jean-Luc
>>
>>
>>
>>
>> "JC Duce" a écrit dans le message
>> de
>> news:
>>> Pour compléter ma réponse :
>>>
>>> Tu nomme toute la plage concernant ton tableau ("plageTest" dans mon
>>> exemple) puis tu execute le code ci-dessous :
>>>
>>> ------ Debut -----
>>> Public Sub detecteFusion()
>>> For Each cellule In Range("plageTest")
>>> If Range(cellule.Address).MergeCells Then
>>> MsgBox (cellule.Address)
>>> End If
>>> Next cellule
>>> End Sub
>>> ------ Fin -----
>>>
>>> Tu obtiendra en boite de dialogue les addresses des cellules
>>> fusionnées.
>>>
>>> "JC Duce" wrote:
>>>
>>>> Bonjour,
>>>>
>>>> Tu peux regarder du côté des propriétés MergeArea et MergeCells pour
>>>> retrouver les cellules fusionnées présentes dans la plage de ton
>>>> tableau.
>>>>
>>>>
>>>> "JLH974" wrote:
>>>>
>>>> > Bonjour à tous
>>>> > je vous soumets un problème que je n'arrive pas à résoudre, je
>>>> > sais
>>>> > que
>>>> > votre sagacité EXCELlente sera d'un grand secours :-)
>>>> > J'ai un tableau composé en grande partie de cellules fusionnées
>>>> > verticalement et/ou horizontalement.
>>>> > Je sais que la valeur qui sera inscrite dans la zone fusionnée
>>>> > sera
>>>> celle de
>>>> > la cellule la plus à gauche et la plus haute (du moins je crois
>>>> > que
>>>> c'est
>>>> > cela)
>>>> > Mais comment, à partir de VBA, détecter si une cellule est
>>>> > fusionnée
>>>> > ou
>>>> non
>>>> > et si elle l'est avec quelles autres cellules?
>>>> >
>>>> > Jean-Luc H
>>>> >
>>>> >
>>>> > .
>>>> >
>
>

.