Bug sur macro effacement de cellules

thomasdu43

XLDnaute Occasionnel
Bonjour,

Je vous joins un fichier sur lequel j'ai 2 demandes :
- régler le pb d'erreur à l'application de la macro
- pouvoir modifier le contenu de cette dernière afin que le contenu des cellules des colonnes G et H (lignes 51 à 83) redevienne par défaut si il a été modifié (je m'explique, j'ai joué sur la MFC de sorte que la coche noire devienne rouge et change de cellule en cas de suppression de celle-ci - un peu compliqué à expliquer mais facile à comprendre avec le fichier :D) et après action sur le bouton "Effacer contenu des cellules"

Merci de votre aide.

Cdt.
 

Pièces jointes

  • Test.xlsm
    103 KB · Affichages: 47
  • Test.xlsm
    103 KB · Affichages: 46

CHALET53

XLDnaute Barbatruc
Re : Bug sur macro effacement de cellules

Bonjour,
Bonjour,

Attention aux cellules fusionnées (VBA n'aiment pas les cellules fusionnées)

.Range( _
"B2:D2,F2:J2,B4:J4,B5:J5,B6:D6,F6:J6,B8:D10,F8:J10,C13:D17,E15:J17,E22:J22,E33:J33,I21,B45:C45,F96:J102,G106:J108,A110:J115,F118:J118,B120:C120,F120:J120" _
).ClearContents

Le reste : je ne vois pas
 

Iznogood1

XLDnaute Impliqué
Re : Bug sur macro effacement de cellules

Bonjour,

Pas sûr de comprendre.

Le bug vient en effet de tes références qui ne correspondent pas avec les cellules fusionnées :
Tu demandes d'effacer F2:I2 alors que tu as fusionnée F2:J2 -> plantage

Quand à la plage G51:H83, commet connaît-on les valeurs par défaut ?
 

job75

XLDnaute Barbatruc
Re : Bug sur macro effacement de cellules

Bonjour thomasdu43, CHALET53,

Attention aux cellules fusionnées (VBA n'aiment pas les cellules fusionnées)

Meuh non, simplement avec des cellules fusionnées au lieu de .Range(xxx).ClearContents utiliser

.Range(xxx) = "" ou .Range(xxx) = Empty

On peut alors ne prendre que la 1ère cellule des plages fusionnées.

Edit : salut Iznogood1

A+
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Bug sur macro effacement de cellules

bonsoir,

thomasdu43, tu n'as pas retenu la leçon du dernier fil !? pas de cellule fusionnée avec .ClearContents !!!
uniquement la première ! exemple B2 : D2 prende B2 c'est tout !
ensuite il faut tester si fusionnée ou pas avec .ClearContents ! voir code !

Code:
' Effacer_cellules_recueil Macro
Sub Effacer_cellules_recueil()
    Dim Ctl As Shape
    Application.EnableEvents = False
    With Worksheets("Recueil besoins")
    I = 0
    Do: I = I + 1
       R$ = Choose(I, "B2", "F2", "B4", "B5", "B6", "F6", "B8:D10", "F8:J10", "C13:D17", "E15:J17", "E22:J22", "E33", "I21", "B45", "F96:J102", "G106:J108", "A110:J115", "F118", "B120", "F120", "")
       If R$ = "" Then Exit Do
       If .Range(R$).MergeCells Then .Range(R$).MergeArea.ClearContents Else .Range(R$).ClearContents
    Loop
    For Each Ctl In .Shapes
        If Left(Ctl.Name, 9) = "Check Box" Then .Shapes(Ctl.Name).OLEFormat.Object.Value = 0
    Next Ctl
    End With
Application.EnableEvents = True
End Sub


sinon tu peux aussi laisser comme ça et remplacer .ClearContents par = ""
tout dépend de ce que tu souhaites faire !?

personnellement je ferais ainsi:
Code:
'Effacer_cellules_recueil Macro
Sub Effacer_cellules_recueil()
    Dim Ctl As Shape
    Application.EnableEvents = False
    With Worksheets("Recueil besoins")
     .Range("B2:D2,F2:I2,B4:J4,B5:J5,B6:D6,F6:I6,B8:D10,F8:J10,C13:D17,E15:J17,E22:J22,E33:J33,I21,B45:C45,F96:J102,G106:J108,A110:J115,F118:J118,B120:C120,F120") = ""
     For Each Ctl In .Shapes
      If Left(Ctl.Name, 9) = "Check Box" Then .Shapes(Ctl.Name).OLEFormat.Object.Value = 0
     Next Ctl
    End With
Application.EnableEvents = True
End Sub
 
Dernière édition:

thomasdu43

XLDnaute Occasionnel
Re : Bug sur macro effacement de cellules

Bonjour et merci.

Cependant, à l'ouverture du fichier, il est possible de lever la protection en cliquant sur "Oter la protection" sans pour autant avoir de demande de mot de passe.

Existe une possibilité pour remédier à ce problème.

Merci.

Nota : j'ai fait le choix de la seconde solution
 

Roland_M

XLDnaute Barbatruc
Re : Bug sur macro effacement de cellules

bonsoir

qu'entends tu par remédier à ça ?

qu'il n'y ai plus de mot de passe à demander ou en mettre un ?

si tu n'en veux plus tu le supprimes et tu enregistres !?
sinon tu entres un mot de passe !

je vois pas où est le problème !?
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 094
Messages
2 085 244
Membres
102 833
dernier inscrit
Hassna