Effacer contenu de cellule

kyasteph

XLDnaute Occasionnel
Bonjour
j'ai une macro qui me permet de modifier le contenu des cellules de mon tableau en les effacant.
Cependant,je ne souhaite pas que par erreur de selection le contenu de certaines colonnes,en l'espece la colonne C
soit effacée car comportant des formules.

Comment faire pour y arriver?

je joins une piece jointe pour etre plus clair.

Veuillez m'aider s'il vous plait.
 

Pièces jointes

  • Test.xlsm
    102.6 KB · Affichages: 36
  • Test.xlsm
    102.6 KB · Affichages: 48
  • Test.xlsm
    102.6 KB · Affichages: 48

Papou-net

XLDnaute Barbatruc
Re : Effacer contenu de cellule

Bonjour kyasteph,

J'ai ajouté un test dans ton code (entre tirets) qui teste si une des cellules sélectionnées contient une formule.
Si c'est le cas, affiche un message (que tu peux modifier à ta guise) et annule l'effacement de la plage sélectionnée.
Ceci fonctionne pour toutes les formules rencontrées, et pas seulement en colonne C.

Code:
Sub VerifIntersection(Selection As Range)
Dim plage As Range
On Error Resume Next
Set Selection = Application.InputBox("Sélectionnez la cellule ou la plage à modifier :", Title:="  [Plage]", Type:=8)
On Error GoTo 0
'---------------------------------------------
For Each cel In Selection
  If cel.HasFormula = True Then
    MsgBox "Impossible d'effacer des formules! Veuillez resélectionner une plage", vbOKOnly + vbExclamation, "ANNULATION"
    Exit Sub
  End If
Next
'---------------------------------------------
ActiveWindow.DisplayHeadings = True
If MsgBox("Etes vous sur de vouloir effacé le contenu de ces cellules : " & Selection.Address & (" ? "), vbYesNo + vbQuestion) = vbNo Then
  ActiveWindow.DisplayHeadings = False
  Exit Sub
  Else
  If ActiveSheet.Name = "Fichier_Représentant" Then
    Set plage = Range("A6:B1010", "D6:I1010")
    If Selection.Row < 6 Or Selection.Row > 1010 Or Selection.Column > 9 Or Selection.Column = 3 Then
      MsgBox ("Erreur ! Sélection invalide ! Veuillez sélectionner une plage valide et recommencer"), vbYesNo = 1
      ActiveWindow.DisplayHeadings = False
      Else
      ActiveSheet.Unprotect
      Selection.ClearContents
      Selection.Locked = False
      MsgBox ("OPERATION effectuée avec succes !")
      ActiveWindow.DisplayHeadings = False
    End If
  End If
End If
End Sub

Peut-être serait-il plus simple d'appliquer la protection de ta feuille, car si quelqu'un efface des cellules manuellement, le problème restera entier. Dans ce cas, le code ajouté deviendrait inutile.

Cordialement.
 

Jack2

XLDnaute Occasionnel
Re : Effacer contenu de cellule

Bonjour tout le monde,

Avant de chercher comment fonctionne "Selection", un truc tout bête en attendant :
Code:
Dim Code as String

ActiveSheet.Unprotect
Code = Cells(Selection.Row, 3)
Selection.ClearContents
Cells(Selection.Row, 3) = Code
On sauve le contenu de Code_Rep avant l'effacement et on le remet après.

EDIT J'avais pas tout lu, je m'étais arrêté à colonne C

A+ Jack2
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 924
Membres
103 404
dernier inscrit
sultan87