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 :

compréhension code avec ubound


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 180
    Par défaut compréhension code avec ubound
    Bonjour à tous,
    J'aimerais comprendre le code allant avec le résultat d'une combobox qui affiche dans une liste du formulaire les lignes ou il y a le mot dans la colonne F en onglet.
    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
     
    Private Sub ComboBox1_Change()
    Dim ColRecherche As Byte
    Dim cle, n
    Dim i As Integer, k As Integer
      ColRecherche = 6 'mots clés
      cle = "*" & ComboBox1.Value & "*": n = 0
     
      Dim Tbl()
      For i = 1 To UBound(tblBD)
        If tblBD(i, ColRecherche) Like cle Then
           n = n + 1: ReDim Preserve Tbl(1 To UBound(tblBD, 2), 1 To n)
           For k = 1 To UBound(tblBD, 2): Tbl(k, n) = tblBD(i, k): Next k
        End If
      Next i
      If n > 0 Then Me.ListBox1.Column = Tbl Else Me.ListBox1.Clear
    End Sub
    D'abord il n'y a qu'une colonne en propriétés de la listbox1, pkoi ne pas en fixer le nombre à 5
    il y a 2 Tableaux Tbl() et tbl(BD) à quoi ils correspondent.
    et ensuite n c'est le nombre de colonnes ?
    tichtuch-test1.xlsm

    Merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 186
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    il y a 2 Tableaux Tbl() et tbl(BD) à quoi ils correspondent.
    Je me pose la même question en ce qui concerne tblBD car sa déclaration n'est pas faite dans la procédure publiée et en ce qui concerne Tbl, cette variable tableau est alimentée dynamiquement si l'instruction tblBD(i, ColRecherche) Like cle renvoie VRAI

    Si vous voulez en savoir plus sur le sujet, je ne peux que vous conseiller la lecture de ce tutoriel Utiliser les variables tableaux en VBA Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 260
    Par défaut
    Hello Philippe,
    en fait tblBD est défini dans le formulaire en global et il représente les valeurs de l'unique tableau (Tab_1) du classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tblBD = [Tab_1].Value
    tblBD est initialisé pendant l'initialisation du formulaire.
    Ami calmant, J.P

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, dans une des macros du code tu trouves la réponse à 2 de tes questions.
    Tu constateras que ListBox1 a bien 5 colonnes et tblBD correspond en fait à Tab_1 qui désigne ton tableau de données en Feuil1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub InitListBox()
        tblBD = [Tab_1].Value
        Me.ListBox1.List = tblBD
        Me.ListBox1.ColumnCount = 5
        Me.ListBox1.ColumnWidths = "40;180;100;80;20"
    End Sub
    Ensuite, tbl est un tableau temporaire dans lequel sont stockés les résultats de la recherche de mot clé pour les copier vers la ListBox1.
    La variable n est utilisée pour suivre le nombre de lignes qui correspondent au critère de recherche. À chaque fois qu'une correspondance est trouvée, n est incrémentée et le tableau Tbl() est redimensionné pour stocker les données de cette ligne spécifique.

  5. #5
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 180
    Par défaut
    Bonjour à tous,
    Merci à tous et franc pour la dernière réponse.
    Je suis le cours sur les variables tableaux, avant d'arriver au redim preserve.
    Je suis au II-C. Les tableaux multidimensionnels,
    C'est quoi une dimension, à part ligne et colonne je vois pas.
    Et comment je fais pour attacher un exemple avec la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ExempleTableau_MultiDimensionnel()
        Dim i As Integer, j As Integer
        'Définit le tableau à 2 dimensions ainsi que leur taille.
        Dim VarTab(1 To 3, 1 To 6) As String   
        For i = 1 To UBound(VarTab, 1) 'boucle sur la 1ere dimension
            For j = 1 To UBound(VarTab, 2) 'boucle sur la 2eme dimension
                'Alimente les éléments du tableaux
                VarTab(i, j) = i & j
                'Lit les éléments du tableau
                Debug.Print VarTab(i, j)
            Next j
        Next i
    End Sub
    Merci
    Images attachées Images attachées  

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Tu peux avoir autant de dimensions que nécessaires.
    Imaginons que je veux un tableau pour y stocker des classeurs, des feuilles, des lignes et des colonnes.
    Pour atteindre la valeur d'une cellule il me faudrait alors 4 valeurs qui pourraient être par exemple (Tabl(4,2,1,2), c'est à dire (classeur4,feuil2,ligne1,colonne2) donc la cellule B1 de la Feuil2 du classeur 4.

  7. #7
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 180
    Par défaut
    et çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim Preserve Tbl(1 To UBound(tblBD, 2), 1 To n)
    Cà veut dire on redimensionne la 2eme dimension du tableau, donc la colonne F à "1 to n" qui sont des lignes ?

Discussions similaires

  1. Aide compréhension code avec Bordure horizontale
    Par lou93 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/06/2020, 10h12
  2. [Toutes versions] Compréhension de code avec API
    Par antonysansh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/10/2015, 08h47
  3. Comment linker avec odbc32.lib dans le code ? (avec gcc)
    Par _Audrey_ dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 06/11/2008, 18h40
  4. help sur un petit code avec XMLHttpRequest et setTimeout
    Par grinder59 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/10/2005, 11h22
  5. [UML] génération de code avec omondo.uml
    Par RENAULT dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/10/2003, 14h14

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