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 de cellules en fonction d'une textbox [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Par défaut Mise en forme de cellules en fonction d'une textbox
    Bonjour à tous,
    Dans ma Feuille, j'ai une macro qui colore des lignes en fonction du texte inscrit dans la textbox1.
    Dans mon Workbook, j'ai une macro qui efface les textbox à la fermeture du fichier.

    Mon objectif est de pouvoir rechercher un nom dans un tableau et le visualiser facilement.
    Je bloque sur ces 2 points :
    => Comment réinitialiser la mise en forme à la fermeture du fichier? actuellement, lorsque je ferme mon fichier les lignes restent colorées en vert. Et lorsque je rouvre le fichier, j'ai une erreur 1004.
    => Comment ajouter un filtre sur ma sélection? mon tableau comporte des centaines de lignes, je souhaite ne visualiser que les lignes contenant le texte recherché.

    Merci par avance pour votre aide!

    Le code de la feuille :
    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
    Option Compare Text
    'RECHERCHER UNE LIGNE EN FONCTION DU NOM
    Private Sub TextBox1_Change()
     
        Application.ScreenUpdating = False
        L = Sheets("zzz").Range("a65536").End(xlUp).Row + 1
     
        If TextBox1 = "" Then
            For Ligne = 10 To L
            Rows(Ligne).Interior.ColorIndex = 0 'fond transparent
            Next
        End If
     
        If TextBox1 <> "" Then
            For Ligne = 10 To L
                If Cells(Ligne, 4) Like "*" & TextBox1 & "*" Then
                    Rows(Ligne).Interior.ColorIndex = 43 'fond vert
                    Else: Rows(Ligne).Interior.ColorIndex = 0
                End If
            Next
        End If
     
    End Sub
    Le code du workbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_Open()
    Sheets("zzz").TextBox1.Text = ""
    Sheets("zzz").TextBox2.Text = ""
    End Sub

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Deb, bonjour le forum,

    Si la ligne 9 de ton tableau contient les étiquettes, je te propose d'utiliser le filtre automatique avec les code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub TextBox1_Change()
    ActiveSheet.Range("A9").AutoFilter field:=4, Criteria1:="*" & TextBox1.Value & "*"
    If TextBox1.Value = "" And Sheets("zzz").AutoFilterMode = True Then Sheets("zzz").Range("A9").AutoFilter
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
    Sheets("zzz").TextBox1.Value = ""
    End Sub
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Sheets("zzz").AutoFilterMode = True Then Sheets("zzz").AutoFilter
    ThisWorkbook.Save
    End Sub

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Par défaut
    Bonjour Thautheme, bonjour à tous,
    Merci beaucoup de t'être penché sur ma question!
    Ce code fonctionne... 1 fois. Mais si j'efface ma textbox et que je remets du texte, il y a un bug : la ligne d'étiquettes disparait.
    D'autre part, le code supprime les filtres, or je souhaite les conserver (en mettant "Sélectionner tout").

    Mais grâce à ton code, j'ai découvert la fonction AutoFilter ! Et j'ai pu rechercher plus efficacement des bouts de code sur l'excellent site de Jacques Boisgontier (http://boisgontierjacques.free.fr/pa...FiltreAuto.htm). Voici donc ce que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'RECHERCHER UNE LIGNE EN FONCTION DU NOM
    Private Sub TextBox1_Change()
     Sheets("zzz").Protect Contents:=True, UserInterfaceOnly:=True
     nom = "*" & Replace(Me.TextBox1, " ", "*") & "*"
     ActiveSheet.Range("$a$9:$bl$1000").AutoFilter Field:=4, Criteria1:=nom
    End Sub
    Et j'ai rajouté une msgbox pour empêcher de fermer le fichier avec un filtre activé (sinon, tout plante...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        If MsgBox("Avez-vous annulé tous les filtres ?", 36, "Confirmation") = vbNo Then
            Cancel = True
        End If
     
        If Sheets("zzz").TextBox1.Value <> "" Then
        MsgBox ("Annulez le filtre avant de fermer le document !")
        Cancel = True
        End If
    Pour le moment, cela répond à ma demande ;-)
    Encore merci.

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

Discussions similaires

  1. [XL-2003] Colorer plage de cellules en fonction d'une textbox
    Par Vrancky dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/06/2014, 10h41
  2. [XL-2013] Mise en forme de cellules en fonction de leur valeur (contenu dans un tableau )
    Par pedro2792 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/01/2014, 14h03
  3. Réponses: 1
    Dernier message: 25/01/2011, 14h52
  4. fonction pour la mise en forme de cellule
    Par alexkickstand dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/09/2007, 23h39
  5. [POI] difficultés dans la mise en forme des cellules
    Par corbier32 dans le forum Documents
    Réponses: 2
    Dernier message: 03/05/2006, 09h48

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