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 :

Rajouter une condition dans un input box


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 116
    Par défaut Rajouter une condition dans un input box
    Bonjour,

    J'ai crée un programme grâce auquel je peux colorer des cellules en fonction de ce que je mets dans un input Box.
    Je m'explique : j'ai des noms (exemple : nom-5) dans ma colonne B. Lorsque j'entre par ex "nom-5" dans mon input, tout ce qu'il y avant se met en orange (nom-1 jusqu'à nom-5) et tout ce qu'il y a après en bleu (voir code). Par contre je suis bloqué pour la suite... J'aimerai ajouter une condition qui fait que lorsque je rentre dans mon input box par exemple "nom-5-/-7", toutes mes cellules avant nom-5 se mettent en orange ainsi que de nom-7 jusqu'à la fin, mais que nom-6 se mette en bleu. Je suis vraiment bloqué je ne vois pas vraiment comment faire ...

    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
    Sub COLOR_CASE()
        Dim DernLigne As Long
        Dim DernLigne1 As Long
        Dim ligne As Integer
        Dim valeur As String
        DernLigne = Range("B1048576").End(xlUp).Row
        valeur = InputBox("Veuillez entrer votre nom")
        If valeur <> "" Then
            For j = 1 To DernLigne
                If Range("B" & j).Value = valeur Then
                    ligne = j + 1
                    Exit For
                End If
            Next j
        End If
        For i = 1 To ligne
        Range("B" & i).Select
             With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 49407
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        Next i
        For i = ligne To DernLigne
            Range("B" & i).Select
            With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 12611584
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        Next i
    End Sub

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Personnellement, j'écrirais les 2 occurrences sur 2 cellules différentes.
    Soit directement sur la feuille de travail, soit )à partir d'un formulaire.

    Cela dit, il est vrai que l'on peut découper le résultat de ton Input Box par la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Split(lavaleurdelinputbox, "/")
    .

    Pour simplification, et par précaution, je laisserais 5 et 7 puis effectuerais une concaténation avec "nom-".

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 116
    Par défaut
    Merci pour ta réponse.
    Cependant je ne vois pas comment l'intégrer à mon programme ...
    Il faut que je créer une autre variable qui prend cette fonction split ?

  4. #4
    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 re
    re j
    e peux comprendre pourquoi tu n'y arrive pas a l'integrer
    relis cette phrase je te cite
    lorsque je rentre dans mon input box par exemple "nom-5-/-7", toutes mes cellules avant nom-5 se mettent en orange ainsi que de nom-7 jusqu'à la fin, mais
    tu peux t'expliquer
    par ce que moi je comprends
    si je met 5 c'est de 1 a 5 si je met 5 / 7 c'est tout en orange

    maintenant il faut savoir
    tes (nom-5,nom-7,etc..) sont il contigues ou pas
    par ce que si c'est pas le cas un simple filtre te selectionne tes cellule et avec specialcells tu applique ta couleur

    il faut etre plus precis dans ta demande
    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

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 116
    Par défaut
    Oui excuse moi.
    En fait j'ai une colonne qui contient des noms (nom-1 dans la première cellule jusqu'à nom-n dans la n-ième cellule).
    Dans mon code précédent, si j'entre dans mon input box "nom-n", mes cellules de nom-1 jusqu'à nom-n s'affichent en orange et les cellules de nom-n+1 jusqu'à la dernière cellule en bleue.
    Par exemple si j'entre "nom-5", les cellules de nom-1 à nom-5 s'affichent en orange et de nom-6 jusqu'à la fin en bleu. En tout cas ça marche.
    Ce que souhaite faire maintenant, c'est de rajouter une condition qui ferait en sorte que si j'entre dans mon input box "nom-n-/-n+2", les cellules de nom-1 jusqu'à nom-n, ainsi que celles de nom-n+2 jusqu'à la dernière s'affichent en orange. Par contre la cellule qui est comprise entre nom-n et nom-n+2 s'affiche en bleu.
    Par exemple, si je mets dans mon inputbox "nom-5-/-7", les cellules de nom-1 jusqu'à nom-5 et de nom-7 à la dernière s'affichent en orange. Par contre la cellule nom-6 s'affiche en bleu.
    Merci

  6. #6
    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 re
    re

    ok mais a tu envisagé toutes les possibilités

    imagine que "nom-5" n'y est pas mais que "nom-7" y est

    que fait on avec "nom-7" ????????

    on met en orange de 7 a la fin et de 1 a 6 en bleu

    OU !!!!
    de 1 a 7 en orange et le reste en bleu

    de meme que si 7 n'y est pas mais que 5 oui ; tout ce qui suit doit etre en bleu ?????



    bref si je me contente de ton exposé

    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 test()
        Dim x$, c1 As Range, c2 As Range, nums As Variant
        x = InputBox("entrez un/deux numeros")
        If x <> vbNullString And x Like "*#/#*" Then    ' si on annule pas et que la chaine tapée correspond a un chiffre + "/" + un chiffre
     
            nums = Split(x, "/")
     
            With Sheets(1).Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
     
                'on met tout en bleu au depart
                .Parent.Range(.Cells(1, 1), .Cells(.Cells.Count)).Interior.Color = RGB(0, 150, 255)
                'on cherche le 1°chiffre nom-+ nums(0)
                Set c1 = .Find("nom-" & nums(0), lookat:=xlWhole)
                'on cherche le 2d chiffre nom-+ nums(1)
                Set c2 = .Find("nom-" & nums(1), lookat:=xlWhole)
                'si c1 n'est pas rien
                If Not c1 Is Nothing Then .Parent.Range(Cells(1, 1), c1).Interior.Color = RGB(255, 200, 50) Else mess = mess & "la cellule contenant  ""nom-" & nums(0) & """  n'existe pas !!" & vbCrLf
                'si c2 n'est pas rien
                If Not c2 Is Nothing Then .Parent.Range(c2, .Cells(.Cells.Count)).Interior.Color = RGB(255, 200, 50) Else mess = mess & "la cellule contenant ""nom-" & nums(1) & """  n'existe pas !!" & vbCrLf
     
                If mess <> "" Then MsgBox mess
            End With
        Else
            MsgBox "la chaine tapée ne correspond pas a la chainne attendue!!!!"
        End If
    End Sub
    selon ta consideration pour ma premiere question du 1° chiffre absent le code peut considerablement etre différent
    je ne sais pas si tu avais envisagé ces possibilité de variantes au quel cas demande
    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

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

Discussions similaires

  1. Rajouter une condition dans une requête imbriquée.
    Par Luern dans le forum Langage SQL
    Réponses: 8
    Dernier message: 20/09/2013, 12h05
  2. Réponses: 0
    Dernier message: 25/04/2013, 17h46
  3. rajouter une condition dans un calcul
    Par ouflala dans le forum IHM
    Réponses: 3
    Dernier message: 24/07/2007, 08h51
  4. [Tableaux] Rajouter une condition dans un test
    Par kevinf dans le forum Langage
    Réponses: 11
    Dernier message: 08/11/2006, 16h03

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