IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Simplification code effacer


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Mécanicien avion
    Inscrit en
    Février 2018
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Mécanicien avion

    Informations forums :
    Inscription : Février 2018
    Messages : 193
    Par défaut Simplification code effacer
    Bonjour à tous,

    J'ai fais une macros pour effacer des cellules quand une case est vide dans ma plage F4:F27.
    J'aurais voulu savoir s'il était possible de simplifier ?
    De plus, est il possible de le rendre plus rapide dans son exécution ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Effacer()
        Dim i As Integer
     
        For i = 4 To 27
            If Cells(i, 6).Value = "" Then
                Cells(i, 6).Offset(0, 4).ClearContents
                Cells(i, 6).Offset(0, 5).ClearContents
                Cells(i, 6).Offset(0, 6).ClearContents
                Cells(i, 6).Offset(0, 7).ClearContents
            End If
        Next i
     
    End Sub

    Merci pour votre aide et bonne soirée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Essaie ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Dim cl
      On Error Resume Next 
      For Each cl In Range("F4:F27").SpecialCells(xlCellTypeBlanks)
         cl.Offset(0, 4).Resize(1, 4).ClearContents
      Next
    Dernière modification par Invité ; 05/06/2025 à 10h48.

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    De plus, est il possible de le rendre plus rapide dans son exécution ?
    Il est recommandé d'arrêter l'affichage écran au début de l'exécution et réactiver à la fin avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Application.ScreenUpdating = False
     
    'ton code
     
    .
    .
    Application.ScreenUpdating = true
    end sub
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur :ccool: et quand la discussion est résolue, penser à cliquer sur le bouton :resolu:

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    Bonjour

    Il est recommandé d'arrêter l'affichage écran au début de l'exécution et réactiver à la fin avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Application.ScreenUpdating = False
     
    'ton code
     
    .
    .
    Application.ScreenUpdating = true
    end sub
    Heu ...
    Ca, c'est sous conditions:
    1. Si le besoin de performances se fait sentir (bien souvent: inutile).
    2. En fin de développement, une fois que le comportement désiré a été obtenu / testé.

    Premature optimisation is the root of all evils in software development (or at least, most of it).
    D.Knuth

  5. #5
    Membre confirmé
    Homme Profil pro
    Mécanicien avion
    Inscrit en
    Février 2018
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Mécanicien avion

    Informations forums :
    Inscription : Février 2018
    Messages : 193
    Par défaut
    Voici le code que j'ai fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub BoutonEffacer()
        Dim i As Integer
     
        Application.ScreenUpdating = False
     
        For i = 4 To 27
            If Cells(i, 6).Value = "" Then
                Cells(i, 6).Offset(0, 3).Resize(1, 2).ClearContents
                Cells(i, 6).Offset(0, 6).Resize(1, 4).ClearContents
            End If
        Next i
     
        Application.ScreenUpdating = True
     
    End Sub
    Merci a tous pour votre aide.

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Ou si tu veux appliquer ClearContents d'un seul coup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      Dim cl, Rg As Range
      On Error Resume Next
      For Each cl In Range("F4:F27").SpecialCells(xlCellTypeBlanks)
         If Rg Is Nothing Then
            Set Rg = cl.Offset(0, 4).Resize(1, 4)
         Else
            Set Rg = Union(Rg, cl.Offset(0, 4).Resize(1, 4))
         End If
      Next
      Rg = ClearContents
    [/QUOTE]

    Attention, ce n'est pas Rg = ClearContents mais Rg.ClearContents

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci pour la correction, c'était une erreur de ma part

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Simplification code VBA
    Par jackborogar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/04/2012, 10h55
  2. [AC-2003] Simplification code débutant
    Par cycnus89 dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/02/2011, 18h12
  3. [AC-2007] Simplification code choix multicritères
    Par christophe31 dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/03/2010, 09h18
  4. [XL-2003] Simplification code VBA généré par enregistreur de macro
    Par altra dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/08/2009, 11h47
  5. [XSLT] Erreur partielle - Simplification Code ?
    Par Sam 069 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 13/04/2007, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo