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 :

Problème d'execution de script vba avec combobox


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut Problème d'execution de script vba avec combobox
    Bonjour,

    je ne sais si ce sujet a déjà été abordé mais je n'ai rien trouvé dans les forums.

    J'ai écris un sript simple suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub ComboBox1_Change()
    Sheets("Immatricule").Select
    Columns("c").Select
    Selection.AutoFilter Field:=1, Criteria1:=ComboBox1.Value
    Range("A2:O40").Select
        Selection.Copy    
        Sheets("Feuil13").Select
        Range("AA1").Select
        ActiveSheet.Paste
        Sheets("Immatricule").Select
        Rows("1:1").Select
        Application.CutCopyMode = False
        Selection.AutoFilter
    si je l'insère dans un 'combobox' le message suivant apparait : "erreur d'execution 1004 : La methode autofilter de la classe range a échoué"

    En revanche cela fonctionne sans problème avec un 'commandbutton'.

    Quelle différence y a til entre une liste deroulante et un bouton de commande ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Désolé mais ton code est horrible.

    Est-ce que ça ne fonctionne pas mieux comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub ComboBox1_Change()
     
      With Worksheets("Immatricule")
     
        If .FilterMode = True Then .AutoFilterMode = False
        .UsedRange.AutoFilter Field:=1, Criteria1:=ComboBox1.Value
        .Range("A2:O40").Copy Worksheets("Feuil13").Range("AA1")
        Application.CutCopyMode = False
        .AutoFilterMode = False
     
      End With
     
    End Sub
    La colonne qui sert de tri dans ce cas est la colonne A.
    La zone à filtrer est la zone utilisée dans la feuille Excel. Il faut peut être préciser cette zone dans ton cas.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    merci de prendre le temps de me répondre,

    avec ce code ( g remplacé 1 par 3 car le filtre s'effectue en colonne c) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox1_Change() 
      With Worksheets("Immatricule") 
        If FilterMode = True Then .AutoFilterMode = False
        UsedRange.AutoFilter Field:=3, Criteria1:=ComboBox1.Value
        Range("A2:O40").Copy
        Worksheets("Feuil13").Range ("AA1")
        Application.CutCopyMode = False
        AutoFilterMode = False 
      End With 
    End Sub
    j'ai un autre message d'erreur "objet requis"

    neanmoins même si g conscience que mon code est degueulasse il fonctionnait avec un bouton de commande mais pas avec une liste déroulante

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pourquoi tu as enlevé les '.' ?

    Le code pour filtrer en fonction de la colonne 3 est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ComboBox1_Change()
     
      With Worksheets("Immatricule")
        If .FilterMode = True Then .AutoFilterMode = False
        .UsedRange.AutoFilter Field:=3, Criteria1:=ComboBox1.Value
        .Range("A2:O40").Copy Worksheets("Feuil13").Range("AA1")
        Application.CutCopyMode = False
        .AutoFilterMode = False
      End With
     
    End Sub

  5. #5
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    l'objet requis était les points a priori, le message d'erreur reste toujours le même "erreur 1004 : la methode autofilter de la classe range a échoué"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ComboBox1_Change()
     
      With Worksheets("Immatricule")
     
        If FilterMode = True Then .AutoFilterMode = False
        .UsedRange.AutoFilter Field:=3, Criteria1:=ComboBox1.Value
        .Range("A2:O40").Copy Worksheets("Feuil13").Range("AA1")
        ActiveSheet.Paste
        Application.CutCopyMode = False
        .AutoFilterMode = False
     
      End With
     
    End Sub

  6. #6
    Invité
    Invité(e)
    Par défaut
    Mets ton fichier en PJ sans données confidentielles

  7. #7
    Invité
    Invité(e)
    Par défaut Bonjour test ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ComboBox1_Change()
      With Worksheets("Immatricule")
        .AutoFilterMode = False
        .Cells(1, 1).AutoFilter
        'If .FilterMode = True Then .FilterMode = False
        .UsedRange.AutoFilter Field:=3, Criteria1:=ComboBox1.Value
        .Range("A2:O40").Copy Worksheets("Feuil13").Range("AA1")
        .Application.CutCopyMode = False
        .AutoFilterMode = False
      End With
    End Sub

  8. #8
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    Bonjour, j'obtiens toujours le meme message d'erreur, voici mon fichier son extension est xlsm :
    Fichiers attachés Fichiers attachés

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Annibal3 Voir le message
    Bonjour, j'obtiens toujours le meme message d'erreur, voici mon fichier son extension est xlsm :
    Premièrement tu as dupliqué les appels à la méthode 'ComboBox1_Change()' (module standard et module de feuille).
    Ensuite la source de ton 'ComboBox1' dépend de la feuille qui est triée. Ça ne peut pas fonctionner.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    la source de ton contrôle est la colonne A:A, donc quand tu filtre ton tableau tu modifie la ComboBox1 donc tu déclenche ComboBox1_Change() d'ou l'erreur.
    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
    Private Sub ComboBox1_Change()
    Static N As Boolean
    If N = False Then
    N = True
      With Worksheets("Immatricule")
        .AutoFilterMode = False
         .Cells(1, 1).AutoFilter
        'If .FilterMode = True Then .FilterMode = False
        .UsedRange.AutoFilter Field:=3, Criteria1:=ComboBox1.Value
        .Range("A2:O40").Copy Worksheets("Feuil13").Range("AA1")
        .Application.CutCopyMode = False
        .AutoFilterMode = False
      End With
      N = False
    End If
    End Sub

  11. #11
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    merci beaucoup c'est impécable.

    J'espère ne pas vous avoir fait perdre trop de temps.

    Bonne journée

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

Discussions similaires

  1. Executer un script TSL avec PERL
    Par Hoopsy dans le forum Langage
    Réponses: 8
    Dernier message: 09/11/2008, 20h50
  2. Réponses: 7
    Dernier message: 16/10/2008, 17h19
  3. Cron: executer un script php avec framework
    Par thibaut06 dans le forum Administration système
    Réponses: 2
    Dernier message: 01/05/2008, 14h55
  4. Réponses: 2
    Dernier message: 31/07/2007, 14h27
  5. XMLRAD2006 : Problème d'execution des scripts JScript
    Par m-matthieu dans le forum XMLRAD
    Réponses: 11
    Dernier message: 04/07/2006, 11h54

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