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 :

Recherche de la présence d'une valeur => Si valeur trouvée alors ligne en couleur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut Recherche de la présence d'une valeur => Si valeur trouvée alors ligne en couleur
    Bonjour,
    J'ai trouvé que ce sujet se rapprochait le plus de ce que je cherche à faire.
    Je m'explique :
    J'ai dans le meme classeur :
    - 1 feuille contenant une liste d'identifiants
    - 1 feuille contenant un grand nombre de lignes dont certaines possèdent les identifiants de la 1ère feuille. Notons que dans cette 2ème feuille, le meme identifiant peut apparaitre sur plusieurs lignes.
    Je souhaiterais tester la présence de chaque identifiant de la feuille 1 dans le tableau de la feuille 2 et colorier en couleur les lignes matchées dans la feuille 2.
    Je n'ai jamais touché à VBA et suis completement perdue. J'ai trouvé un bout de code qui me parait simple mais qui ne fonctionne pas pour cause de block If manquant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub format_cellule()
        For Each Cell In Range("L4:L400")
            If Cell.Value Like "[I4:I3000]" Then Cell.Interior.ColorIndex = 3
            End If
        Next Cell
    End Sub
    Pourriez vous m'aider s'il vous plait ? J'en aurai besoin pour mon activité professionnelle.
    Merci par avance.

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut et bienvenue sur le forum.

    L'rreur de bloc If manquante est due a ces instructions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub format_cellule()
    For Each Cell In Range("L4:L400")
    If Cell.Value Like "[I4:I3000]" Then Cell.Interior.ColorIndex = 3
    End If
    Next Cell
    End Sub
    Si le code a exécuter est mis sur la meme ligne que Then, alors il ne faut aps de endif.

    je te propose d'écrire donc comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub format_cellule()
    For Each Cell In Range("L4:L400")
    If Cell.Value Like "[I4:I3000]" Then
       Cell.Interior.ColorIndex = 3
    End If
    Next Cell
    End Sub
    par contre je ne comprends pas ce que tu veux faire avec ce test car de cette manière il me semble que tu testes si le contenu des cellules de L4 à L400 valent En TEXTE quelquechose LIKE "[I4:I3000]" qui ne semble pas un pattern valide (as tu regardé dans l'aide à LIKE?) ?. je ne pense pas que cela fonctionne.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Bonjour,

    Merci pour votre réponse. En effet, je n'ai plus d'erreur une fois le End If supprimé.

    Mais vous avez raison, il semble que l'opérateur LIKE ne convienne pas à mon test. Comme je vous l'ai dit, j'ai trouvé ce code sur le net...
    Pour ma part je cherche, pour chaque cellule d'une colonne de la feuille 1 à trouver les lignes correspondantes dans les feuilles 2 et colorier ces lignes. Puis je souhaite tester la présence de la 2ème cellule de la feuille 1 etc...
    J'ai tenté d'acceder à l'aide de Excel mais celle-ci semble mal installée.
    Je joue de malchance.

    Connaissez vous l'opérateur à utiliser dans mon cas ?

    Je crois que les boucles de mon code me permettent de parcourir tous mes tests. non ?

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    cdrx2904

    moi c'est tu.... pas vous.

    Pour t'aider je dois savoir :
    1) Quelle est la colonne avec les cellules à chercher et dans quel sheet (Sheets(1) colonne(L)
    2) Ou cherches tu : Quel(s) sheets et quelles() colonnes(s) ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    D'accord,
    Alors voici les informations dont tu as besoin
    - les identifiants que je recherche sont dans la colonne G (à partir de la 3ème ligne) de la sheet1
    - les identifiants que je dois parcourir pour trouver mes petits sont dans la colonne I (à partir de la ligne 4) de la sheet2
    Il s'agit d'identifiant du type (EVENEMENT001). C'est du texte et des chiffres.
    Merci d'avance.

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Rebonjour,

    Simplement pour vous prévenir qu'une amie a réussi à résoudre mon problème.

    Voici le code de la macro qu'elle a utilisé :

    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
     
    Sub FindEvents()
    Dim i As Integer
    Dim j As Integer
     
    With ThisWorkbook.Sheets("sheet2")
     
    For i = 4 To .Cells(3, 1).End(xlDown).Row
        For j = 2 To Sheets("sheet1").Cells(1, 1).End(xlDown).Row
            If Sheets("sheet1").Cells(j, 1) = Cells(i, 9) Then
                .Range(.Cells(i, 1), .Cells(i, 10)).Select
                With Selection.Interior
                .ColorIndex = 38
                .Pattern = xlSolid
                End With
            End If
        Next j
    Next i
     
    End With
     
    End Sub
    Elle est parti exactement sur l'inverse de la démarche que j'envisageais.
    C'est à dire qu'elle a comparé chaque identifiant de la longue liste présente en sheet2 avec 1 identifiant de ma liste exhaustive (sheet1).
    Mon tableau exhaustif étant en colonne A à partir de la 2ème ligne en sheet1.
    Et la totalité des identifiantes étant en sheet2 dans la colonne I à partir de la 4ème ligne.

    Enfin ca fonctionne maintenant.

    Je vous remercie beaucoup de votre aide et de votre gentillesse. Peut etre à bientot, à moins que je ne m'inscrive à une formation Excel

  7. #7
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Voici.

    j'ai testé,
    cela semble marcher.

    Si tu ne comprends pas dis-le.

    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
     
    Sub format_cellule()
    Dim c As Range
    Dim cpt1, cpt2 As Double
    Dim n As Long
    Dim firstadress As Variant
     
    Application.ScreenUpdating = False
     
     
    For n = 3 To Sheets(1).Range("G65535").End(xlUp).Row
        With Worksheets(2).Range("I4:I" & Sheets(2).Range("I65535").End(xlUp).Row)
            Set c = .Find(Sheets(1).Cells(n, "G").value, LookIn:=xlValues)
            If Not c Is Nothing Then
            firstadress = c.Address
             Do
               c.Interior.ColorIndex = 3
               Set c = .FindNext(c)
             Loop While Not c Is Nothing And c.Address <> firstadress
            End If
        End With
    Next
     
    Application.ScreenUpdating = True
    End Sub
    Pense à cliquer sur

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/02/2014, 13h28
  2. [Tableaux] Tester la présence d'une valeur
    Par emmma dans le forum Langage
    Réponses: 6
    Dernier message: 20/06/2007, 11h50
  3. [XSLT] Tester la non présence d'une valeur dans un fichier
    Par arnauann dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/01/2007, 15h29
  4. comment vérifier la présence d'une valeur ds une chaîne ?
    Par lidouka dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/03/2006, 07h01
  5. Verification de présence d'une valeur [PHP-MySQL]
    Par 10-nice dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/03/2006, 10h59

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