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 :

Amelioration d un code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 28
    Par défaut Amelioration d un code
    Bonjour j ai ecrit un code devant renvoye un mot si ce dernier est trouve dans la cellule selectionne.
    Tout d abord le code ne marche pas pour le second if alors au il marche pour le premier. Je ne comprends pas pourquoi?
    Ensuite serait il possible de le simplifier?
    Merci d avance

    Voici 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
    Sub text2()
     
    Dim c As Range
    For Each c In Range("B2,B4")
     
        If Not c.Find("Weekend") Is Nothing Then
            Cells(c.Row, 1).Value = "Weekend"
        End If
     
        If Not c.Find("Day Ahead") Is Nothing Then
            Cells(c.Row, 1).Value = "Day Ahead"
        End If
     
    Next
    End Sub

  2. #2
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    essai plutôt avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each c In Range("B2:B4")
    pour ne pas exclure "b3"

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonsoir

    tout d'abord il y a un amalgame de boucle qui n'est pas cohérente

    tu utilise une boucle "for each"
    et tu utilise une boucle find (fonction native en vba)

    on ne procede pas comme ca

    si su utilise for each

    on ne met pas c.find on met c tout court

    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub text2()
     Dim c As Range
    For Each c In Range("B2:B4")
         If  c.value="Weekend"= Then
            Cells(c.Row, 1).Value = "Weekend"
        End If
     'et pareil ici 
        If  c.value="Day Ahead" Then
            Cells(c.Row, 1).Value = "Day Ahead"
        End If
    Next
    End Sub
    maintenant si tu utilise la methode find
    'et ici on precise dans quel sheet on travail
    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
    Sub text2()
    With Worksheets(1).Range("b2:b4")
        Set c = .Find(="Weekend", lookin:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.offset(0,1) = "Weekend"
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
     
     
    With Worksheets(1).Range("b2:b4")
        Set c = .Find(="Day Ahead", lookin:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.offset(0,1) = "Day Ahead"
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
     
     
     
     
    end sub
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Popup menu : ameliorations de mon code
    Par drxel dans le forum Débuter
    Réponses: 6
    Dernier message: 04/09/2012, 09h55
  2. [VBA-E] Amelioration dun code
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 28
    Dernier message: 06/06/2007, 13h51
  3. amelioration de code
    Par deubelte dans le forum C++
    Réponses: 17
    Dernier message: 21/01/2007, 21h19
  4. amelioration de code
    Par deubelte dans le forum C++
    Réponses: 18
    Dernier message: 27/12/2006, 14h31

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