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

Excel Discussion :

VBA afficher une cellule filtrée automatiquement sur formulaire [XL-2013]


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé de formation
    Inscrit en
    Juillet 2016
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de formation
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juillet 2016
    Messages : 85
    Par défaut VBA afficher une cellule filtrée automatiquement sur formulaire
    Bonjour,

    J'ai crée un formulaire en VBA sur Excel Userform1. Le résultat s'affiche toujours en colonne A.
    Sur mon formulaire Userform1 j'ai crée un bouton Valider et une zone de texte pour affichage du résultat.
    J' ai fais ma macro pour qu'en cliquant sur Valider le résultat s'affiche sur la zone de texte de Userform1. Hélas je ne parviens pas à afficher le résultat. Pourriez-vous m'aider, je n'arrive pas à voir ou mon code est incomplet

    Private Sub CommandButton3_Click()
    Sheets("Feuil1").Activate
    UserForm1.CheckBox7.Value = False
    UserForm1.CheckBox9.Value = False
    UserForm1.CheckBox2.Value = False
    UserForm1.CheckBox10.Value = False
    UserForm1.CheckBox3.Value = False
    UserForm1.CheckBox11.Value = False
    UserForm1.CheckBox5.Value = False
    UserForm1.CheckBox13.Value = False
    UserForm1.CheckBox4.Value = False
    UserForm1.CheckBox12.Value = False
    UserForm1.CheckBox15.Value = False
    ActiveSheet.AutoFilterMode = False
    Dim l As Long
    Sheets("Feuil1").Activate
    Range("A1").Select
    For l = 2 To ActiveSheet.UsedRange.Rows.Count
    TextBox1_Change() = True
    Next
    End Sub

    En vous remerciant

  2. #2
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets("Feuil1").Activate
    Range("A1").Select
    For l = 2 To ActiveSheet.UsedRange.Rows.Count
    TextBox1_Change() = True
    Next
    Je ne vois pas la finalité de la boucle dans la mesure où I n'est pas utilisé à l'intérieur.

    Ensuite la ligne TextBox1_Change() = true doit moyennement marcher dans la mesure où tu essaye d'assigner une valeur à un Sub. Donc outre que ça ne doit rien afficher, ça doit provoquer une erreur.

    En nettoyant les select qui ne servent à rien on peut déjà partir sur :

    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
    Private Sub CommandButton3_Click()
    Dim l As Long
    Me.CheckBox2.Value = False
    Me.CheckBox3.Value = False
    Me.CheckBox4.Value = False
    Me.CheckBox5.Value = False
    Me.CheckBox7.Value = False
    Me.CheckBox9.Value = False
    Me.CheckBox10.Value = False
    Me.CheckBox11.Value = False
    Me.CheckBox12.Value = False
    Me.CheckBox13.Value = False
    Me.CheckBox15.Value = False
    With ThisWorkBook.Sheets("Feuil1").
       For l = 2 To ActiveSheet.UsedRange.Rows.Count
           Me.TextBox1.value =  Me.TextBox1.value & .cells(I,1).value
        Next
    End With
    End Sub
    Comme je n'ai pas compris ce que tu voulais faire, j'ai concaténé le contenu de la colonne A dans TextBox1 en attendant que tu (re)explique ton besoin.

    Il y a encore beaucoup à redire sur ce code mais déjà il devrait faire des choses ou pas loin...

  3. #3
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Oups... virer le poit et le activesheet oubliés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ThisWorkBook.Sheets("Feuil1")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     For l = 2 To .UsedRange.Rows.Count

  4. #4
    Membre confirmé
    Homme Profil pro
    Chargé de formation
    Inscrit en
    Juillet 2016
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de formation
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juillet 2016
    Messages : 85
    Par défaut
    Citation Envoyé par Tête de chat Voir le message
    Oups... virer le poit et le activesheet oubliés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ThisWorkBook.Sheets("Feuil1")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     For l = 2 To .UsedRange.Rows.Count
    Bonsoir Merci pour votre retour

    En effet, j'étais complétement à côté j'ai mélangé mes codes, ci-dessous le bon. Par contre le votre ne m'affiche rien.

    Private Sub CommandButton1_Click()
    Dim l As Long
    If CheckBox7 = False Then
    Range("G1").AutoFilter Field:=7, Criteria1:="-"
    End If
    If CheckBox9 = False Then
    Range("H1").AutoFilter Field:=8, Criteria1:="-"
    End If
    If CheckBox2 = False Then
    Range("I1").AutoFilter Field:=9, Criteria1:="-"
    End If
    If CheckBox10 = False Then
    Range("J1").AutoFilter Field:=10, Criteria1:="-"
    End If
    If CheckBox3 = False Then
    Range("K1").AutoFilter Field:=11, Criteria1:="-"
    End If
    If CheckBox11 = False Then
    Range("L1").AutoFilter Field:=12, Criteria1:="-"
    End If
    If CheckBox5 = False Then
    Range("M1").AutoFilter Field:=13, Criteria1:="-"
    End If
    If CheckBox13 = False Then
    Range("N1").AutoFilter Field:=14, Criteria1:="-"
    End If
    If CheckBox4 = False Then
    Range("O1").AutoFilter Field:=15, Criteria1:="-"
    End If
    If CheckBox12 = False Then
    Range("P1").AutoFilter Field:=16, Criteria1:="-"
    End If
    If CheckBox15 = False Then
    Range("Q1").AutoFilter Field:=17, Criteria1:="-"
    End If
    With ThisWorkbook.Sheets("Feuil1")
    For l = 2 To .UsedRange.Rows.Count
    Me.TextBox1.Value = Me.TextBox1.Value & .Cells(i, 1).Value
    Next
    End With
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Chargé de formation
    Inscrit en
    Juillet 2016
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de formation
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juillet 2016
    Messages : 85
    Par défaut
    Mon besoin :
    Mon formulaire génère des filtres sur une feuille Excel en fonction des cases que je coche
    A la fin de mes choix lorsque je clique sur valider, les cases non cochés sont filtré sur un seul critère spécifique ce qui permet de n'avoir qu'une seule ligne d'afficher.
    Sur la colonne A j'ai un code que je souhaite voir apparaitre dans ma zone de texte 1 sur mon formulaire
    Mon code
    Private Sub CommandButton1_Click()
    If CheckBox7 = False Then
    Range("G1").AutoFilter Field:=7, Criteria1:="-"
    End If
    Dim l As Long
    With ThisWorkbook.Sheets("Feuil1")
    Range("A1").Select
    For l = 2 To .UsedRange.Rows.Count
    UserForm1.TextBox1.Value = UserForm1.TextBox1.Value & .Cells(i, 1).Value
    Next
    End With
    End Sub

    En espérant avoir pu mieux m' expliquer

  6. #6
    Membre confirmé
    Homme Profil pro
    Chargé de formation
    Inscrit en
    Juillet 2016
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de formation
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juillet 2016
    Messages : 85
    Par défaut
    Citation Envoyé par sena1911 Voir le message
    Mon besoin :
    Mon formulaire génère des filtres sur une feuille Excel en fonction des cases que je coche
    A la fin de mes choix lorsque je clique sur valider, les cases non cochés sont filtré sur un seul critère spécifique ce qui permet de n'avoir qu'une seule ligne d'afficher.
    Sur la colonne A j'ai un code que je souhaite voir apparaitre dans ma zone de texte 1 sur mon formulaire
    Mon code
    Private Sub CommandButton1_Click()
    If CheckBox7 = False Then
    Range("G1").AutoFilter Field:=7, Criteria1:="-"
    End If
    Dim l As Long
    With ThisWorkbook.Sheets("Feuil1")
    Range("A1").Select
    For l = 2 To .UsedRange.Rows.Count
    UserForm1.TextBox1.Value = UserForm1.TextBox1.Value & .Cells(i, 1).Value
    Next
    End With
    End Sub

    En espérant avoir pu mieux m' expliquer
    J'ai tenté d'épurer et de simplifier l'algorithme en rajoutant l'action de copier le contenu de la text box1 dans le presse papier, mais j'ai une erreur inattendu que je n'arrive pas à comprendre


    If CheckBox15 = False Then
    Range("Q1").AutoFilter Field:=17, Criteria1:="-"
    End If
    Dim l As Long
    With ThisWorkbook.Sheets("Feuil1")
    Range("A1").Select
    For l = 2 To .UsedRange.Rows.Count
    Me.TextBox1.Value = Range("A1").Cells(i, 1).Value
    Next
    End With
    Public Function settextPutInClipboard(contenu)
    On Error Resume Next
    If contenu = "" Then Exit Function
    Dim Presspp As New MSForms.DataObject
    Set Pressp = New DataObject
    Presspp.SetText contenu
    Presspp.PutInClipboard

    End Function

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/06/2020, 15h14
  2. [XL-2010] VBA : Recopier une plage filtrée dans une Listbox de formulaire
    Par Pipeti dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/06/2015, 18h36
  3. [XL-2010] Lien hypothétique sur une cellule à filtre.
    Par Letudiant66000 dans le forum Excel
    Réponses: 1
    Dernier message: 08/03/2013, 16h41
  4. [XL-2003] pb de filtre automatique sur cellules fusionnées
    Par Bulbulle dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/09/2011, 16h19
  5. Probleme Filtre automatique sur une plange variable
    Par Lucorah dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2010, 10h23

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