Macro servant à effacer une valeur

Bonjour

Je suis nouveau sur le forum et j'ai lu pas mal de coup de pouce que vous avez pu donner. J'ai besoin de votre aide aujourd'hui sur une macro servant à "nettoyer" mon fichier. Pour cela quand je met une croix (x) dans la case contrôle d'une de mes feuilles de classeur (voir pièce jointe) j'aimerai que quand j’exécute une macro cela s'efface automatiquement. Etant un néophyte, j'ai fait ma petite cuisine, mais quand je charge toutes mes cellules à "nettoyer" avec ma macro actuelle c'est excessivement long.

D'où ma question: Auriez-vous une solution pour alléger ma macro et la rendre plus rapide.

Je vous remercie par avance du temps que vous m'accorderez.

Merci

je vous ai mis un lien pour récupérer le fichier car celui-ci est trop volumineux

Lien: https://www.dropbox.com/s/m7vkac8uqt2d9yl/effacervaleur.xls?dl=0

Bonjour Remi, bonjour le forum,

Peut-être comme ça :

Sub Macro1()
Dim O As Worksheet

For Each O In Sheets
    If Not O.Name = "lisez-moi" And Not O.Name = "Reglage" Then
        O.Range("M13:M56").ClearContents
        O.Range("V13:V56").ClearContents
    End If
Next O
End Sub

Bonjour ThauThème,

Dans un premier temps merci pour ta réactivité au niveau de ta réponse. En lisant ton code je me suis aperçu que j'avais oublié quelques impératifs afin d'aller au but de ma macro. En effet, ce que je cherche c'est que lorsque j'ai une croix en m13 dans la feuille PA par exemple, cela m'efface les données de a13, e13, i13 jusqu'à m13 même. Pareil pour chaque ligne jusqu'à m56 et ce sur toutes les feuilles hormis, réglage car le lisez-moi en fait ne correspond plus à cette version.

Je te transmet le lien à jour.

Merci encore

lien https://www.dropbox.com/s/m7vkac8uqt2d9yl/effacervaleur.xls?dl=0

Bonjour Rémi, bonjour le forum,

Du coup ça sera un peu plus long...

Sub Macro1()
Dim O As Worksheet
Dim I As Byte
Dim PL As Range

For Each O In Sheets
    If Not O.Name = "Reglage" Then
        For I = 13 To 56
            If UCase(O.Cells(I, 13).Value) = "X" Then
                Set PL = Application.Union(O.Cells(I, 1), O.Cells(I, 5), O.Range(O.Cells(I, 9), O.Cells(I, 13)))
                PL.ClearContents
            End If
    End If
Next O
End Sub

Bonjour ThauThème,

On se rapproche de ce que je recherche je pense en lisant ton code, cependant je prends une erreur (end if sans bloc). pour tout avouer je ne comprends pas cette erreur.

Merci encore

Bonjour Rémi, bonjour le forum,

Oui en effet désolé. Il manquait un Next I...

Sub Macro1()
Dim O As Worksheet
Dim I As Byte
Dim PL As Range

For Each O In Sheets
    If Not O.Name = "Reglage" Then
        For I = 13 To 56
            If UCase(O.Cells(I, 13).Value) = "X" Then
                Set PL = Application.Union(O.Cells(I, 1), O.Cells(I, 5), O.Range(O.Cells(I, 9), O.Cells(I, 13)))
                PL.ClearContents
            End If
        Next I
    End If
Next O
End Sub

Merci, merci, merci tu viens de me faire gagner un nombre incalculable de minutes lors de l'exécution de ma macro.

Moralité : faut que je bosse les boucles.

Bonne journée :)

Bonjour Rémi, bonjour le forum,

Rémi65 a écrit :

Moralité : faut que je bosse les boucles.

C'est ce que dit aussi mon coiffeur... Bonne journée à toi aussi.

Rechercher des sujets similaires à "macro servant effacer valeur"