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 :

alléger mon code redondant


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 145
    Par défaut alléger mon code redondant
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Sub test()
     
    Dim i As Integer, verif As Integer, plage1 As String
    Dim LaDerniere As Integer
     
     
    With Worksheets("CUR ASTREINTE")
       LaDerniere = .Range("A" & .Rows.Count).End(xlUp).Row
       verif = 0
       For i = 1 To LaDerniere
             If .Cells(i, 1) = "cccc" Then
                verif = verif + 1
                If verif = 1 Then
                   plage1 = .Range("a" & i).Address
                   Else
                   plage1 = plage1 & "," & .Range("A" & i).Address
                End If
             End If
       Next i
      If Not Range(plage1) Is Nothing Then Range(plage1).Select
      Range(plage1).Interior.ColorIndex = 3
     
    End With
     
    End Sub
     
    Sub test2()
     
    Dim i As Integer, verif As Integer, plage1 As String
    Dim LaDerniere As Integer
     
     
    With Worksheets("CUR ASTREINTE")
       LaDerniere = .Range("A" & .Rows.Count).End(xlUp).Row
       verif = 0
       For i = 1 To LaDerniere
             If .Cells(i, 1) = "dddd" Then
                verif = verif + 1
                If verif = 1 Then
                   plage1 = .Range("a" & i).Address
                   Else
                   plage1 = plage1 & "," & .Range("A" & i).Address
                End If
             End If
       Next i
      If Not Range(plage1) Is Nothing Then Range(plage1).Select
      Range(plage1).Interior.ColorIndex = 4
     
    End With
     
    End Sub
    Sub test3()
     
    Dim i As Integer, verif As Integer, plage1 As String
    Dim LaDerniere As Integer
     
     
    With Worksheets("CUR ASTREINTE")
       LaDerniere = .Range("A" & .Rows.Count).End(xlUp).Row
       verif = 0
       For i = 1 To LaDerniere
             If .Cells(i, 1) = "eeee" Then
                verif = verif + 1
                If verif = 1 Then
                   plage1 = .Range("a" & i).Address
                   Else
                   plage1 = plage1 & "," & .Range("A" & i).Address
                End If
             End If
       Next i
      If Not Range(plage1) Is Nothing Then Range(plage1).Select
      Range(plage1).Interior.ColorIndex = 5
     
    End With
     
    End Sub

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Par défaut
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub mafonction(strtext as string,intCOlorIndex)
     
    Dim i As Integer, verif As Integer, plage1 As String
    Dim LaDerniere As Integer
     
     
    With Worksheets("CUR ASTREINTE")
       LaDerniere = .Range("A" & .Rows.Count).End(xlUp).Row
       verif = 0
       For i = 1 To LaDerniere
             If .Cells(i, 1) = strtext  Then
                verif = verif + 1
                If verif = 1 Then
                   plage1 = .Range("a" & i).Address
                   Else
                   plage1 = plage1 & "," & .Range("A" & i).Address
                End If
             End If
       Next i
      If Not Range(plage1) Is Nothing Then Range(plage1).Select
      Range(plage1).Interior.ColorIndex =intCOlorIndex
     
    End With
     
    End Sub
     
     
     
    Sub text1()   
    mafonction("aaaaa",2)
    end sub
     
    Sub test2()
        mafonction("dddd",3)
     
    End Sub
    Sub test2()
        mafonction("eeee",5)
     
    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 145
    Par défaut
    merci c'est cool c'est plus gérable maintenant

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut
    Juste pour info tu peux aussi faire comme ca

    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
    Sub mafonction(strtext as string,intCOlorIndex)
     
    Dim plage1 As String
    Dim TheCel as Range 
     
    Plage1="" 'Normalement c inutile, les variable chaine sont initialisé a "" lors de leur déclaration
    With Worksheets("CUR ASTREINTE")
       For each theCel in .range("A1",.Range("A" & .Rows.Count).End(xlUp))        If thecel = strtext  Then
           if plage1 <> "" then plage1 = plage1 & ","    
              plage1 = plage1 & thecel.Address
           End If
       Next
       If Not Range(plage1) Is Nothing Then
           Range(plage1).Select
           Range(plage1).Interior.ColorIndex =intCOlorIndex
       end if
     
    End With
     
    End Sub
    L'utilisation de For Each allège un peu le code.
    Et Verif n'est pas utile puisque tu peu utiliser la valeur de plage1 pour savoir su c'est la 1ere cellule a jouté.
    Je n'ai pas excel sous la main, j'ai modifié le code a la volé tu auras peut etre quelques erreur de syntaxe a reprendre.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. Intégrer une variable pour alléger mon code ?
    Par castelcerf dans le forum jQuery
    Réponses: 3
    Dernier message: 06/10/2010, 12h52
  2. aide pour alléger mon code simple mais long
    Par tuco_benedicto dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/03/2010, 20h52
  3. [SQL + VB.NET] Alléger mon code pour un accès plus rapide
    Par Miles Raymond dans le forum VB.NET
    Réponses: 8
    Dernier message: 15/10/2007, 23h09
  4. Mon code n'est pas interprété !
    Par korriganez dans le forum Langage
    Réponses: 3
    Dernier message: 31/05/2006, 15h46
  5. [langage] algo de bissection dans mon code
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 19/01/2004, 18h35

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