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 :

erreur sur me.controls [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2020
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2020
    Messages : 129
    Points : 73
    Points
    73
    Par défaut erreur sur me.controls
    Bonjour j'ai créé un userform dans lequel j'ai 4 champs (textbox et combobox) que je peux remplir, ou pas.
    Selon les info saisies, le code suivant (recopié sur le forum) doit me remonter une liste de résultats.
    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
    37
    38
    39
    40
    41
    Private Sub Search_Click()
      Dim Ind As Integer, DLig As Long, Lig As Long
      Dim TabCrit() As String, NbCrit As Integer, NbFind As Integer
      ' Tableau des champs pas rapport au sens des colonnes
      TabCrit = Split("texte,type_matière,forme,diametre", ",")
     
      ' Effacer la ListBox avant
      Me.ListBox1.Clear
      ' Avec la feuille
      With Sheets("BDD_MP")
        ' Mémoriser la dernière ligne remplie du tableau
        DLig = .Range("B" & Rows.Count).End(xlUp).Row
        ' Pour chaque ligne
        For Lig = 2 To DLig
          ' Mettre le nombre de critères et le nombre de valeurs trouvées à ZERO
          NbCrit = 0: NbFind = 0
          ' Pour chaque critère
          For Ind = 0 To 4
            ' Si le critère de recherche a été renseigné
            If Me.Controls(TabCrit(Ind)) <> "" Then
              NbCrit = NbCrit + 1
              ' Si le critère ressemble au contenu de la cellule
              If UCase(.Cells(Lig, 2 + Ind)) Like UCase("*" & Me.Controls(TabCrit(Ind)) & "*") Then
                ' Comptabiliser le nombre de valeurs correspondantes
                NbFind = NbFind + 1
              End If
            End If
          Next Ind
          ' Si le nombre de critères rempli = le nombre de valeurs trouvées
          If NbCrit = NbFind Then
            ' Ajouter l'item
            Me.ListBox1.AddItem .Cells(Lig, 2)
            ' Pour chaque colonne
            'For Ind = 1 To 7
              ' Ajouter les valeurs correspondantes
            '  Me.ListBox1.List(Me.ListBox1.ListCount - 1, Ind) = .Cells(Lig, 2 + Ind)
            'Next Ind
          End If
        Next Lig
      End With
    End Sub
    ça marche très bien sur le fichier téléchargé en modèle, mais chez moi ça coince sur la ligne 20 avec le message erreur d'exécution 9 : l'indice n'appartient pas à la sélection.
    Par rapport au code d'origine, j'ai juste changé la définition de la table TabCrit, ligne 3, pour faire appel à mes propres champs (texte, type_matière...), et en ligne 10, précisé mon onglet "BDD_MP"
    En ligne 20, il est sensé tester si le 1er critère (qu'il va cherché dans la table TabCrit) est vide.
    Je ne vois pas ce qui cloche, ce que je n'aurai pas copié du code d'origine.

    Quelqu'un aurait une piste?

    Merci d'avance
    Benoit

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2020
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2020
    Messages : 129
    Points : 73
    Points
    73
    Par défaut
    A force de farfouiller, j'ai fini par placer une msgbox qui m'a montré que je ne bloquait pas sur le 1er tour de ma boucle For, mais sur le dernier !
    Comme j'ai 4 champs, il fallait mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Pour chaque critère
          For Ind = 0 To 3
    et non pas 0 to 4. Il cherchait un 5ème champ et ne le trouvait pas...

    Bonne après midi à tous

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

Discussions similaires

  1. Erreur sur "Add Variable" sur control activex
    Par sylvain.cool dans le forum Visual Studio
    Réponses: 1
    Dernier message: 17/10/2013, 16h21
  2. Faire un controle avec message d'erreur sur date
    Par manue514 dans le forum Débuter
    Réponses: 8
    Dernier message: 04/05/2009, 17h08
  3. Erreur sur une exression reguliere de controle de date
    Par Job dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/06/2008, 09h45
  4. Erreur sur click dans un controle Onglet
    Par jetlagger dans le forum IHM
    Réponses: 6
    Dernier message: 17/04/2007, 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