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 :

Simplifier un code [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut Simplifier un code
    Bonjour a tous et toutes, forum bonjour,

    Voila je voudrai bien SVP si possible simplifier ce code qui est un peu long
    ce code est senser colorier les mois de l'année avec la condition suivante

    Si a partir de la Colonne F2 le mot Janvier est trouver alors mettre fond en couleur 33
    et ainsi de suite pour les autres mois, tous en respectant la case.


    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
    Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim Nbl As Integer: Dim i As Integer 
    Nbl = Sheets("Feuil1").[F65536].End(xlUp).Row 
    For i = 2 To Nbl 
     
    If Range("F" & i) Like "*Janvier*" Then 
    Range("F" & i).Interior.ColorIndex = 33 
    End If 
     
    If Range("F" & i) Like "*Février*" Then 
    Range("F" & i).Interior.ColorIndex = 34 
    End If 
     
    If Range("F" & i) Like "*Mars*" Then 
    Range("F" & i).Interior.ColorIndex = 33 
    End If 
     
    If Range("F" & i) Like "*Avril*" Then 
    Range("F" & i).Interior.ColorIndex = 34 
    End If 
     
    If Range("F" & i) Like "*Mai*" Then 
    Range("F" & i).Interior.ColorIndex = 33 
    End If 
     
    If Range("F" & i) Like "*Juin*" Then 
    Range("F" & i).Interior.ColorIndex = 34 
    End If 
     
    If Range("F" & i) Like "*Juillet*" Then 
    Range("F" & i).Interior.ColorIndex = 33 
    End If 
     
    If Range("F" & i) Like "*Août*" Then 
    Range("F" & i).Interior.ColorIndex = 34 
    End If 
     
    If Range("F" & i) Like "*Septembre*" Then 
    Range("F" & i).Interior.ColorIndex = 33 
    End If 
     
    If Range("F" & i) Like "*Octobre*" Then 
    Range("F" & i).Interior.ColorIndex = 34 
    End If 
     
    If Range("F" & i) Like "*Novembre*" Then 
    Range("F" & i).Interior.ColorIndex = 33 
    End If 
     
    If Range("F" & i) Like "*Décembre*" Then 
    Range("F" & i).Interior.ColorIndex = 34 
    End If 
     
    Next i 
    End sub
    Merci de votre temps et Bonne fin d'apres midi

    Raymond

  2. #2
    Membre chevronné Avatar de MARCELBENH
    Profil pro
    DSI
    Inscrit en
    Avril 2009
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : DSI

    Informations forums :
    Inscription : Avril 2009
    Messages : 464
    Par défaut Première piste
    Bonjour,

    tu peux déja utiliser l'expression select case pour éviter de faire des if les uns derrière les autres
    cdlt

  3. #3
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour eliot.raymond MARCELBENH le forum peut être passer par un array???
    autrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    For i = 2 To Sheets("Feuil1").[F65536].End(xlUp).Row
    If Range("F" & i) Like "*Janvier*" Or Range("F" & i) Like "*Mars*" Or Range("F" & i) Like "*Mai*" _
    Or Range("F" & i) Like "*Juillet*" Or Range("F" & i) Like "*Septembre*" Or Range("F" & i) Like "*Novembre*" Then
    Range("F" & i).Interior.ColorIndex = 33
    End If
    If Range("F" & i) Like "*Février*" Or Range("F" & i) Like "*Avril*" Or Range("F" & i) Like "*Juin*" _
    Or Range("F" & i) Like "*Août*" Or Range("F" & i) Like "*Octobre*" Or Range("F" & i) Like "*Décembre*" Then
    Range("F" & i).Interior.ColorIndex = 34
    End If: Next i
    End Sub

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour à tous,

    J'ai écrit ceci à main levée.
    Essaye-le :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dim  i as integer, j as integer
    For i = 2 To Sheets("Feuil1").[F65536].End(xlUp).Row
      For j = 0 To 11
        If LCase(Range("F" & i)) Like "*" & Format("1/" & j + 1 & "/2000", "mmmm") & "*" Then
          Range("F" & i).Interior.ColorIndex = IIf(j And 1, 34, 33): Exit For
        End If
       Next j
    Next i
    Edit : j'ai vu une erreur et l'ai corrigée.

  5. #5
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Bonsoir ucfoutu, forum

    Merci pour la réponse et le code ca fonctionne bien, tu es un chef.

    Serai t'il possible un petit commentaire sur le code car j'avoue que je patauge un peu et j'aimerai tant qu'a faire, comprendre, soif de savoir.

    C'est bon pour la formation, sinon si tu ne peux pas, ou pas le temps dit moi et je mettrai RESOLU

    En tout cas merci beaucoup

    bonne soirée a toi

    Raymond

  6. #6
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    bonsoir Laetitia forum

    Merci pour le code il marche également, j'ai adopter celui de Mr ucfoutu qui est plus approprier a mon code, mais rien n'ai perdu je l'ai imprimer et sauvegarder, je vais m'en servir pour du coup faire une modif.

    Merci a toi c'est gentil et aussi a Mr marcelbenh

    bonne soirée a vous tous mes remerciements

    Raymond

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par eliot.raymond Voir le message
    Serai t'il possible un petit commentaire sur le code car j'avoue que je patauge un peu et j'aimerai tant qu'a faire, comprendre, soif de savoir.
    Oh... rien de complexe :
    - je boucle sur les douze mois de l'année 2000 et extrait (par la fonction format, le nom en toutes lettres du mois)
    - je regarde ensuite si ma cellule (par Like) contient ce mot. Pour éviter toute erreur, je compare avec le contenu de ma cellule passé en minuscules ( LCase).
    - si c'est le cas, je :
    ---- regarde si i est impair ou non (i and 1) et attribue à ma couleur la valeur 33 ou 34, selon le cas ( par mon iif)

    --- et sors de ma boucle i pour traiter la cellule suivante.

    Tout celà n'est qu'un jeu de l'esprit, rien de plus...

  8. #8
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    bonsoir ucfoutu, forum

    Merci pour les commentaires toujours bon a savoir, je vais regarder de près afin de bien enregistrer dans ma petite tète..


    Enfin j'ai bricoler un peu dessus depuis un moment et pas de soucis.

    Que dire dommage pour toi que la St Parfait soit passé hihihihi.

    Bonne soirée a toi et encore merci

    Raymond

  9. #9
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour le fil le forum l' ami ucfoutu super ton code impressionnant

    passe une bonne journée bisous leti a+

  10. #10
    Membre chevronné Avatar de MARCELBENH
    Profil pro
    DSI
    Inscrit en
    Avril 2009
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : DSI

    Informations forums :
    Inscription : Avril 2009
    Messages : 464
    Par défaut Bien vu
    Effectivement,

    ton code me paraît bien fait, bravo.
    Je pense aussi que mon select case avec des or aurait pu fonctionner
    mais encore bravo tu es allé au fond du problème
    cdlt

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

Discussions similaires

  1. [E-00] Utilisation d'un auxilliaire pour simplifier le code
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 21/11/2008, 17h31
  2. Simplifier le code
    Par Msieurduss dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 10h07
  3. Réponses: 4
    Dernier message: 10/05/2008, 12h31
  4. Simplifier mon code "Majuscule/Minuscule"
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2008, 17h05
  5. 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

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