!!! Nettoyage de cellules fusionnées !!!

F

fabrice

Guest
Bonjour tout le monde ;=)

J'ai un petit problème qui peu paraitre ridicule mais je bloque dessus!!

Voilà, je cherche à nettoyer des cellules mais certaines sont fusionnées.
J'ai essayé la méthode suivante mais elle me vaut un joli message d'erreur !! ;=)

With Worksheets("log")
Range("c2,g2,f3,g3,b7:c7").ClearContents
End With

Pour info, la cellule c2 est fusionnée jusqu'à la e2 et la g2 jusqu'a la j2.

Est-ce que quelqu'un aurait une solution à mon problème???

Merci de votre aide
FAb
 
M

michel_M

Guest
En fait, tu es tombé sur une super- v… (au choix) d’excel-VBA


Par défaut l’objet range concerne une cellule ayant une adresse (x, y)


Lorsque tu vas nettoyer avec clearcontents, excel ne reconnaît pas une cellule fusionnée (range est dans ce cas de plusieurs cellulles) et envoie un message d’erreur 1004


Il faut donc traiter l’erreur et déclarer un objet range du format de ta cellule et donner range en propriété

Maintenant, ca va si tes cellules fusionnées sont de même taille mais sinon, il te faut recommencer un nouveau traitement « on error resume next » l’emplacement goto 0 est à déterminer soigneusement…

Ci dessous un listing où les cellules fusionnées étaient les mêmes (2 cell verticales)

Bon courage
Michel.. Béziers


Sub gommer()

Dim code As Range
Dim erreur As Integer

'ActiveSheet.Unprotect
Application.ScreenUpdating = False

For Each cell In Range("zone")
' on n'agit que si la donnée est numérique et qu'il ny a pas de formules
If Application.IsNumber(cell) And cell.HasFormula = False Then
On Error Resume Next
cell.ClearContents
erreur = Err.Number
On Error GoTo 0
If erreur = 1004 Then
' propriété "fusionnée" de la cellule
Set code = cell.MergeArea
If cell.MergeCells Then
'forme de la fusion (2 cellules verticales) de la propriété range
code.Range(Cells(1, 1), Cells(2, 1)).ClearContents
End If
' a voir si risque de ralentissement
Set code = Nothing
End If
End If
Next

Range("K9").Select
'Application.ScreenUpdating = True
'ActiveSheet.Protect


End Sub


Dans ton cas (ma zone était grande et ne devait être effacer que des cellules de saisies) tu pourrais faire un nettoyage des cellules uniques puis attaquer à la ligne « set code
 
J

Jon

Guest
bonjour

remplace ".clearcontents" par .value=""
cela marchera


une remarque, si tu ne mets pas le "." devant range, l'instruction s'appliquera aux cellules de la feuille active et non pas à celles de la feuille "Log"


bye
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 352
Messages
2 087 516
Membres
103 572
dernier inscrit
hamzahaha