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 :

Mise en forme divers variable [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Par défaut Mise en forme divers variable
    Bonjour,

    J'ai essayé de chercher sur internet pour m'aider à résoudre mon problème mais je coince un peu. Peut être que je n'ai pas utiliser les bon mots clés et je me permets de vous demander votre aide. Je m'explique :
    J'ai plusieurs variables que je souhaite mettre en forme. Si aucune trouvée alors ça passe à la suite du traitement. Actuellement ma macro boucle sur la première variable et ne sort jamais de ma macro ^^'

    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
    Dim MotCle1, i1 As Byte, C1 As Range
        'On définit les mots clés
        MotCle1 = Array("320730*", "3208*", "3301*", "3303*", "330430*", "330530*", "330590*", "3307*", "3403*", "3405*", "3506*", "3809*", "3810*", "3814*")
        'On effectue la recherche de chaque mot clé dans la colonne F de la sheet1
        For i1 = 0 To UBound(MotCle1) + 1
            Do
                Set C1 = Worksheets("DONNEES").Columns(1).Find(MotCle1(i1), LookIn:=xlValues, LookAt:=xlPart)
                'Si le mot clé est trouvé
                If Not C1 Is Nothing Then
                        With C1.Interior
                        .Pattern = xlSolid
                        .PatternColorIndex = xlAutomatic
                        .Color = 65535
                        .TintAndShade = 0
                        .PatternTintAndShade = 0
                        End With
                        C1.Font.Bold = True
                        'GoTo SUITETRAITEMENT
                End If
            Loop While Not C1 Is Nothing
        Next i1
    Dans mon tableau, feuille 1, colonne 1 il trouve par exemple le chiffre "32073090". Il me le mettra en gras, mais ne passe pas au second critère "3208*" pour le mettre en gras également. Il boucle uniquement sur le premier critère "320730*". Mon autre problème est que s'il trouve un chiffre qui contient le critère "320730" dont le début est différent alors il me le mettra aussi en gras (exemple : 85320730 sera en gras). Alors que je souhaite mettre en forme uniquement les chiffres commençant par "320730".

    Pourriez-vous m'aider ?

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Regarde l'aide sur Find/ FindNext, tu as un exemple parlant et identique au tien.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Pour compléter ce que suggère mercatog ( ), si tu lances plusieurs fois Find avec les même paramètres, il va chaque fois trouver la même chose. Il ne va pas rechercher la valeur suivante.

    Fais tourner ton programme en pas-à-pas en regardant dans la liste des variables locales ce que tu obtiens pour C1 à chaque tour et tu comprendras.

  4. #4
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Par défaut
    Je suis un peu plus qu'un débutant, mais j'ai encore un peu de mal avec le langage vba. Comment je fais pour regarder dans la liste des variables locales ?

    J'ai utilisé le code de l'aide vba et j'ai lancer la macro vba étape par étape avec le code ci-dessous :
    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
    Sub testsurbrillance()
     
    MotCle1 = Array("320730*", "3208*", "3301*", "3303*", "330430*", "330530*", "330590*", "3307*", "3403*", "3405*", "3506*", "3809*", "3810*", "3814*")
    With Worksheets("DONNEES").Range("A2:A" & Worksheets("DONNEES").Range("A2").End(xlDown).Row)
         Set C = .Find(What:=MotCle1, LookIn:=xlValues)
         If Not C Is Nothing Then
            firstAddress = C.Address
            Do
                        With C.Interior
                        .Pattern = xlSolid
                        .PatternColorIndex = xlAutomatic
                        .Color = 65535
                        .TintAndShade = 0
                        .PatternTintAndShade = 0
                        End With
                        C.Font.Bold = True
                Set C = .FindNext(C)
            If C Is Nothing Then
                GoTo DoneFinding
            End If
            Loop While C.Address <> firstAddress
          End If
    DoneFinding:
    End With
     
    End Sub
    Mon problème reste le même et doit venir de ma condition "MotCle1" avec Array ou il boucle uniquement sur la première valeur qu'il trouve. En l'occurrence dans mon tableau il trouve la valeur 32073090 (qui est juste après la valeur 32089000) et met en surbrillance toutes les valeurs 32073090 mais pas la 32089000.

    Ce que je voudrais :
    1 - chercher la valeur "320730*" dans la cellule A2 jusqu’à la dernière
    2 - une fois être revenu au début, passer au second mot clé "3208*". Ainsi de suite jusqu'à revenir au premier motcle "320730*" et sortir de la boucle.

    Bien sûr et ça coule de source (pour moi) je vous remercie pour le temps que vous passer à m'expliquer et m'aider

    PS j'ai rajouter une pièce jointe avec le tableau en question.survrillance vba.xlsm

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    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
    Sub testsurbrillance()
    Dim MotCle1
    Dim c As Range
    Dim i As Integer
    Dim firstAddress As String
     
    MotCle1 = Array("320730*", "3208*", "3301*", "3303*", "330430*", "330530*", "330590*", "3307*", "3403*", "3405*", "3506*", "3809*", "3810*", "3814*")
    With Worksheets("DONNEES")
        With .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
            For i = 0 To UBound(MotCle1)
                Set c = .Find(What:=MotCle1(i), LookIn:=xlValues, lookat:=xlPart)
                If Not c Is Nothing Then
                    firstAddress = c.Address
                    Do
                        c.Interior.Color = 65535
                        c.Font.Bold = True
                        Set c = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> firstAddress
                End If
            Next i
        End With
    End With
     
    End Sub

  6. #6
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Par défaut
    mercatog tu es au top ! Je devais surement chercher trop compliquer...

    Par contre mon second bug est toujours présent concernant la mise en surbrillance de mot clé non désiré. La mise en surbrillance doit s'appliquer uniquement au valeur commencent par celle définit dans le MotCle1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MotCle1 = Array("320730*", "3208*", "3301*", "3303*", "330430*", "330530*", "330590*", "3307*", "3403*", "3405*", "3506*", "3809*", "3810*", "3814*")
    Malheureusement celui ci met en surbrillance toutes les valeurs contenant une partie du MotClé1.
    Exemple : j'ai les valeurs en colonne 1
    32089000
    85330190
    32073090
    Ca devrait me mettre uniquement en surbrillance le 32089000 et 32073090. Cependant le 85330190 est aussi en surbrillance car il contient 3301. Que-dois je faire pour résoudre le problème ?

    MAJ : j'ai résolu mon problème avec LookAt:=xlWhole au lieu de LookAt:=xlPart :-)

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par NJdu68 Voir le message
    Comment je fais pour regarder dans la liste des variables locales ?
    Dans le VBE : Menu Affichage > Fenêtre Variables Locales

  8. #8
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Dans le VBE : Menu Affichage > Fenêtre Variables Locales
    Merci pour l'info :-) ça m'aidera un peu plus pour mes prochaines programmation :-)

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

Discussions similaires

  1. mise en forme de variables avec R
    Par MathR dans le forum R
    Réponses: 2
    Dernier message: 28/05/2014, 11h11
  2. Conseils : Mise en forme et Impression de variables
    Par megamario dans le forum VB.NET
    Réponses: 8
    Dernier message: 24/11/2011, 10h35
  3. [RichTEXTBox] Mise en forme Variable.
    Par GarsDuCalvados dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/04/2008, 23h07
  4. [VBA]Mise en forme conditionnelle variable
    Par emilie31 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/04/2007, 13h44
  5. Mise en forme conditionnelle variable
    Par emilie31 dans le forum IHM
    Réponses: 2
    Dernier message: 21/03/2007, 11h35

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