Effacement de données dans plage de données hétérogènes

didcac

XLDnaute Occasionnel
Bonsoir à tous,
Je souhaite effacer des données dans un immense tableau où coexistent des cellules protégées et non protégées. Après avoir activé la protection de la feuille, j'ai essayé d'effacer les données évidemment non protégées, mais le simple fait d'inclure dans la sélection à la fois des cellules protégées et non protégées pose problème.
J'ai le classique message qui me rappelle que des cellules sont protégées etc etc.
Comment contourner cette difficultés, sachant que mon but est de faire cette opération d'effacement global en une fois (car il y a énormément de cellules en alternance protégées/non protégées) et non pas procéder "plage par plage".
Merci de vos conseils compétents.
 

sigismond

XLDnaute Occasionnel
Re : Effacement de données dans plage de données hétérogènes

Bonsoir à tous, et à toi didcac

Si j'ai bien compris(ce qui n'est pas très évident en l'absence de fichier)
- tu as un vaste champ rempli de données
- tu as besoin d'effacer certaines cellules sans toucher aux autres
- tu essayes de faire marcher l'astuce suivante :
- tu protèges les cellules que tu veux garder
- tu actives la protection générale de la feuille
- tu sélectionnes toute la plage
- tu essayes d'effacer en espérant que seules les cellules non protégées s'effaceront
Ton astuce ne marche pas car il refuse d'effacer un champ qui englobe des cellules protégées.

ce que je pourrais proposer est de créer un objet Range correspondant à toutes tes cellules disjointes, à effacer(celles qui sont déprotégées)
le moment venu tu fais Range.delete

Pour créer un objet Range avec des cellules disjointes : lire les infos dans l'aide VBA
Cherche Range, Collection puis tout en bas méthode Union.

Le code pourrait ressembler à ça :

VB:
sub Range_Multi_A_Effacer()
dim r1 as range, r2 as range, r3 as range, multi as range
     set r1 = Range("A7")
     set r2 = Range("B4")
     set r3 = Range("D2")
     set multi = Union(r1, r2, r3)
     multi.delete
end sub

Passez tous de bonnes fêtes,

Sigismond
 

Banzai64

XLDnaute Accro
Re : Effacement de données dans plage de données hétérogènes

Bonjour

A défaut de trouver mieux (Ce qui ne saurait tarder)

VB:
Sub Efface()
Dim Cel As Range
  Application.ScreenUpdating = False
  On Error Resume Next
  For Each Cel In Range("C3:O45")  ' A adapter
    Cel.ClearContents
  Next Cel
End Sub
 

wilfried_42

XLDnaute Barbatruc
Re : Effacement de données dans plage de données hétérogènes

Bonjour didcac, sigismond, pierrot :)

essaye ceci :
Code:
Sub essai()
    Dim c As Range
    On Error Resume Next
    For Each c In Range("A1:D10")
        c.Clear
    Next
    On Error GoTo 0
End Sub


oups salut banzaï le temps de faire un essai et je plagie
 

didcac

XLDnaute Occasionnel
Re : Effacement de données dans plage de données hétérogènes

Bonjour à tous,
Oui, la situation décrite par Sigismond au départ est parfaitement résumée...
Je n'ai pas trouvé dans l'aide VBA de ce Site : Range, Collection, Union...
En fait, si je comprends bien le fil de l'explication, il faudra donc que je crée une macro avec les lignes de commande que vous spécifiez ?
Merci.
NB : je suis sur MAC.
 

Discussions similaires

Statistiques des forums

Discussions
312 297
Messages
2 086 972
Membres
103 412
dernier inscrit
antoire