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 d'un code


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    agent de conditionnement
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : agent de conditionnement
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Points : 10
    Points
    10
    Par défaut simplification d'un code
    bonjour a tous,

    dans un formulaire j'ai crée un bouton me permettant de supprimer les données contenue dans plusieurs cellules ce qui me donne le code suivant

    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
    16
     
    Range("C12:C18,F12:F18,I12:I18,L12:L18,O12:O18").Select
        Selection.ClearContents
        Range("A3").Activate
        Range("F24: F30 , I24: I30 , L24: L30 , O24: O30").Select
        Selection.ClearContents
        Range("A3").Activate
        Range("F36: F42 , I36: I42 , L36: L42 , O36: O42 , R36: R42").Select
        Selection.ClearContents
        Range("A3").Activate
        Range("F48: F54 , I48: I54 , L48: L54 , O48: O54").Select
        Selection.ClearContents
        Range("A3").Activate
        Range("F60: F66 , I60: I66 , L60: L66 , O60: O66 , R60: R66").Select
        Selection.ClearContents
        Range("A3").Activate
    j'ai essayer de tout mettre ensemble ca ne marche pas et j'aimerais savoir comment je peut simplifier ce code

    merci

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    sans analyser tes plages, élimines les "Select"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Sheets("Feuil2") 'à changer par nom de feuille
      Application.Union(.Range("C12:C18,F12:F18,I12:I18,L12:L18,O12:O18"), _
      .Range("F24: F30 , I24: I30 , L24: L30 , O24: O30"), _
      .Range("F36: F42 , I36: I42 , L36: L42 , O36: O42 , R36: R42"), _
      .Range("F48: F54 , I48: I54 , L48: L54 , O48: O54"), _
      .Range("F60: F66 , I60: I66 , L60: L66 , O60: O66 , R60: R66")).ClearContents
    End With
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Bonjour

    Pas d'ordinateur sous la main, mais tu peux déjà éviter les select + sélection clear contents, en passant directement par range(xx).clearcontents.

    Tu peux également passer par une boucle avec un pas de 12
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For x = 12 to 60 step 12
    Range(cells(x,colonne), cells(x+6,colonne)).clearcontents
    NeXT x
    Soit tes colonnes sont toujours identiques et tu peux boucler sur les colonnes, soit tu peux mettre une conditions après le for pour filtrer les colonnes à effacer en fonction des lignes.

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    avec les conseils de Antha, autre solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim x As Integer, y As Integer, Tcol
    Tcol = Array("F", "I", "L", "O")
    With Sheets("Feuil2") 'à changer par nom de feuille
      For y = 12 To 60 Step 12
        For x = 0 To 3
          .Range(.Cells(y, Tcol(x)), .Cells(y + 6, Tcol(x))).ClearContents
        Next x
      Next y
      Application.Union(.Range("C12:C18"), .Range("R36: R42"), .Range("R60: R66")).ClearContents
    End With
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre à l'essai
    Homme Profil pro
    agent de conditionnement
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : agent de conditionnement
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    merci ca marche niquel j'avait tésté la premiere solution mais j'avais pas mis les . devant range et ca allait pas merci beaucoup

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

Discussions similaires

  1. [MySQL] Simplification d'un code php
    Par sff dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/08/2008, 14h35
  2. simplification d'un code
    Par lolo93 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/04/2008, 11h38
  3. Réponses: 2
    Dernier message: 30/05/2007, 15h04
  4. Simplification de mon code?
    Par totoc1001 dans le forum MATLAB
    Réponses: 6
    Dernier message: 31/01/2007, 16h50
  5. [VBA-E] Aide pour simplification de mon code.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2006, 11h34

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