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 :

Répétions code vba Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    vba
    Inscrit en
    Septembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : vba
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 2
    Par défaut Répétions code vba Excel
    Bonjour,
    Je souhaite savoir s'il y a un moyen d'éviter les répétions de mon code, car je dois avoir une cinquantaine de "if...then" et si les conditions s'avèrent vraies, les 3 premières lignes de code doivent toujours s'inscrire. Je voudrais donc savoir si je peux faire référence aux lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(4).Range("A4").Value = Range("AE" & y) 
    Sheets(4).Range("B4").Value = Range("B" & y) 
    Sheets(4).Range("C4").Value = Range("C" & y)
    une seule fois afin d'éviter de devoir les répéter constamment.
    Voici un extrait de mon code :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    For y = Sheets(2).Range("A1").End(xlDown).Row To 2 Step -1 
    If Round((Range("AF" & y).Value + Range("AG" & y).Value), 2) <> Round((Range("AH" & y).Value), 2) Then 
    Sheets(4).Range("A4").Value = Range("AE" & y) 
    Sheets(4).Range("B4").Value = Range("B" & y) 
    Sheets(4).Range("C4").Value = Range("C" & y) 
    Sheets(4).Range("D4").Value = "Rouge" 
    End If 
    If Range("E" & y) = "Soleil" Then 
    If Range("AG" & y).Value <> 0 Then 
    Sheets(4).Range("A4").Value = Range("AE" & y) 
    Sheets(4).Range("B4").Value = Range("B" & y) 
    Sheets(4).Range("C4").Value = Range("C" & y) 
    Sheets(4).Range("D4").Value = "Jaune" 
    End If 
    End If 
    If Range("E" & y) = "Ciel" Then 
    If Len(Range("AD" & y)) < 5 Then 
    Sheets(4).Range("A4").Value = Range("AE" & y) 
    Sheets(4).Range("B4").Value = Range("B" & y) 
    Sheets(4).Range("C4").Value = Range("C" & y) 
    Sheets(4).Range("D4").Value = "Bleu" 
    End If 
    End If 
    Merci!

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tu as deux solutions simples (il y en a d'autres !)

    1) Tu crées une procédure qui va effectuer uniquement le traitement sur les trois cellules

    Au lieu d'écrire à chaque fois les trois lignes de code dans tes If/End If, tu appelles la procédure

    2) Tu utilises une variable booléenne que tu passes à True si la condition est vérifiée. A la fin de tout tes If (juste avant de refaire une boucle) tu testes la valeur de la variable, si elle est à True alors tu fais le traitement sur les 3 cellules

    à noter que tu peux mélanger les deux solutions : écrire une procédure pour remplir les 3 cellules ET utiliser une variable booléenne pour gérer le traitement ou non de ces trois cellules


    Difficile d'aller plus loin avec juste un morceau de ton code .... sachant que chaque If réalise un test différent (parfois c'est des différences sur valeurs arrondies, parfois c'est la longueur de ce qui est dans la cellule, parfois c'est la valeur numérique d'une cellule etc...).

    Il serait possible de radicalement simplifier tout ces tests ça se trouve .... impossible de le savoir

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans ta boucle ça ça ne change pas pas besoin de les copier plusieur fois!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(4).Range("A4").Value = Range("AE" & y)
    Sheets(4).Range("B4").Value = Range("B" & y)
    Sheets(4).Range("C4").Value = Range("C" & y)
    à mon sens tu peux regrouper tes if avec un AND!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("E" & y) = "Ciel" And Len(Range("AD" & y)) < 5 Then Sheets(4).Range("D4").Value = "Bleu"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For y = Sheets(2).Range("A1").End(xlDown).Row To 2 Step -1
     
    Sheets(4).Range("A4").Value = Range("AE" & y)
    Sheets(4).Range("B4").Value = Range("B" & y)
    Sheets(4).Range("C4").Value = Range("C" & y)
    If Round((Range("AF" & y).Value + Range("AG" & y).Value), 2) <> Round((Range("AH" & y).Value), 2) Then Sheets(4).Range("D4").Value = "Rouge"
    If Range("E" & y) = "Soleil" And Range("AG" & y).Value <> 0 Then Sheets(4).Range("D4").Value = "Jaune"
    If Range("E" & y) = "Ciel" And Len(Range("AD" & y)) < 5 Then Sheets(4).Range("D4").Value = "Bleu"
    Dernière modification par Invité ; 14/09/2016 à 09h31.

Discussions similaires

  1. [debutant] comment transposer mon code vba excel en access
    Par eclipse012 dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/02/2008, 08h23
  2. Aide pour code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/02/2008, 09h33
  3. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15
  4. Code VBA excel form et modules
    Par Cptnikita dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2007, 10h15
  5. Problème avec un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2007, 16h43

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