Récupérer la taille d'un Merge sous Excell VBA ?

Résolu
cs_cobra2008 Messages postés 25 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 27 août 2010 - 26 août 2010 à 14:17
cs_cobra2008 Messages postés 25 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 27 août 2010 - 27 août 2010 à 08:52
Bonjour,

pour une application j'ai besoin de savoir si certaine cellules sont mergées en ligne et de savoir la taille du merge.

J'ai réussi à savoir si oui ou non les cellules étaient mergé mais si j'ai des merges différent qui se suivent (par exemple sur la colonne B les lignes 2 à 4 sont mergées et les lignes 5 à 8 selon 2 merges. Ma fonction elle trouve les cellules 2 à 8 mergées), ma fonction ne marche plus. en fait il faudrait que je puisse récupérer la taille exacte des cellules mergées

merci d'avances



voici mon code :
Private Sub CommandButton1_Click()
Dim etat As Variant
Dim i As Integer
Dim sRange As String
Dim iLigneSave As Integer
Dim bTrouveMerge As Boolean
Dim iCouleur As Integer
Dim iLigne As Integer
Dim iColonne As Integer
Dim iLastColonne As Integer

etat = False
iLigneSave = 0
iLigne = 1
bTrouveMerge = False
iCouleur = COULEUR_GRISE
iLastColonne = Range("IV1").End(xlToLeft).Column

For iLigne = 1 To Range("A65536").End(xlUp).Row
For iColonne = 1 To Range("IV1").End(xlToLeft).Column
etat = ThisWorkbook.Sheets("Feuil1").Cells(iLigne, iColonne).MergeCells
If (etat = True) Then
i = iLigne - 1
While (etat = True)
i = i + 1
etat = ThisWorkbook.Sheets("Feuil1").Cells(i, iColonne).MergeCells
Wend
If (i > iLigneSave) Then
iLigneSave = i - 1
End If
bTrouveMerge = True
End If
Next iColonne
If (iCouleur = COULEUR_GRISE) Then
iCouleur = COULEUR_BLEU
Else
iCouleur = COULEUR_GRISE
End If
If (bTrouveMerge = True) Then
bTrouveMerge = False
sRange = "A" + CStr(iLigne) + ":" + TransFormColumnNumberToColumnChar(iLastColonne) + CStr(iLigneSave)
iLigne = iLigneSave
Else
sRange = "A" + CStr(iLigne) + ":" + TransFormColumnNumberToColumnChar(iLastColonne) + CStr(iLigne)
End If
Call SetCouleur(ThisWorkbook.Name, "Feuil1", sRange, iCouleur)
Next iLigne
End Sub

2 réponses

CTAC Messages postés 133 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 8 juin 2012 5
26 août 2010 à 18:08
Bonjour,

ThisWorkbook.Sheets("Feuil1").Cells(iLigne, iColonne).MergeArea.Address

renvoie l'adresse de la cellule ou de la plage si la cellule est fusionnée.

ctac
3
cs_cobra2008 Messages postés 25 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 27 août 2010
27 août 2010 à 08:52
merci.
cela fonctionne.
0
Rejoignez-nous