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 :

Problème redondance de code [XL-2007]


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
    Octobre 2009
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 78
    Par défaut Problème redondance de code
    bonjour à tous
    peut on améliorer ce 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
    For Each Cellule In Range("d5:d6000")
            If Cellule Like "*Avant-vente*" Then Cellule(1, 0) = "Production Interne"
        Next Cellule
    For Each Cellule In Range("d5:d6000")
            If Cellule Like "*Documentation*" Then Cellule(1, 0) = "Production Interne"
        Next Cellule
        For Each Cellule In Range("d5:d6000")
            If Cellule Like "*Encadrement*" Then Cellule(1, 0) = "Production Interne"
        Next Cellule
        For Each Cellule In Range("d5:d6000")
            If Cellule Like "*Projet interne*" Then Cellule(1, 0) = "Production Interne"
        Next Cellule
        For Each Cellule In Range("d5:d6000")
            If Cellule Like "*Recette*" Then Cellule(1, 0) = "Production Interne"
        Next Cellule
        For Each Cellule In Range("d5:d6000")
            If Cellule Like "*Réunion*" Then Cellule(1, 0) = "Production Interne"
        Next Cellule
    merci d'avance

  2. #2
    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 luko6 le forum une boucle uniquement tu mets des conditions. condition or condition or ect...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Cellule In Range("d5:d6000")
    If Cellule Like "*Avant-vente*" or Cellule Like "*Documentation*" Then Cellule(1, 0) = "Production Interne"
    Next Cellule
    ps oubli pas les balises

  3. #3
    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 (et un salut à laetitia)
    ou tout simplement faire la somme des instr, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(Cellule, "Avant-vente") + InStr(Cellule, "Documentation") Then....
    Cedci étant dit, comme pour dans l'autre discussion :
    - traiter les différences de casse
    - faire attention à ce que ces chaînes sont des mots et non des parties éventuelles de mots (bien que pour celles-ci, le cas soit peu probable. Mais on ne sait jamais, notamment en cas de pluriel avec le mot Recette, par exemple. )

    Edit :
    Je voudrais maintenant simplement appeler ton attention sur le fait que ce genre de moulinette (que l'on met en général en oeuvre pour palier un oubli lors de la conception originelle) peut comporter certains risques, à peser avec beaucoup de calme et précautions (voir également ton autre discussion à propos d'un problème similaire).
    Ce qui est en général fait de manière raisonnée :
    - détermination des cas ne laissant aucun doute possible. Pour ces cas là ===>> traitement "automatique"
    - pour les autres cas (doute) : interrogation de l'utilisateur par un message lui montrant la saisie existante et l'action proposée. S'il en est d'accord ===>> action. Sinon : on lui propose l'abandon ou sa propre classification (une inputbox, dans ce dernier cas)
    Une autre manière de procéder est :
    - traitement automatique ne laissant aucun doute, sans appel par message
    - insertion d'un * dans la colonne de classification pour tous les autres cas (doute)
    - moulinette sur les autres cas (ceux ayant donné lieu à l'insertion d'un *) in fine, en interrogeant l'utilisateur au cas par cas, comme exposé dans la 1ère méthode.
    - et (bien entendu) : mécanisme "bloquant" tant qu'existe un seul * encore présent.
    Cette seconde manière est souvent moins pénalisante.
    Ceci est valable (pour ce type de moulinette) quel que soit le langage de développement (méthode et non code)

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 78
    Par défaut
    Merci et encore désolé pour les balises
    merci pour votre travail

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

Discussions similaires

  1. [HTML]Eviter les redondances de code
    Par Pfeffer dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 30/12/2005, 09h13
  2. Xsl problème d'affichage (code) [débutant]
    Par redsaint dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 01/06/2005, 17h02
  3. [XSL/JavaScript]problème d'intégration code JS dans le XSL
    Par Devil666 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/04/2005, 16h36
  4. Quel est le problème dans ce code ?
    Par Luther13 dans le forum C
    Réponses: 12
    Dernier message: 26/08/2003, 16h09

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