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 :

récupérér les enregistrements d'un tableau à l'aide d'un combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut récupérér les enregistrements d'un tableau à l'aide d'un combobox
    Bonjour le forum ,
    j'ai besoin de vos aide .
    J'ai un tableau bien remplie dans une feuil excel , j'ai un combobox dans une autre feuil rempli par les numéro affichés au gauche du tableau (voir image ci dessous)
    ce que je dois faire c'est quand l'utilisateur choisit une valeur dans le combobox, elle va être comparer par tt les valeurs du tableau , et copier ce qu'il ya dans les lignes et l'enregistrer dans l'autre page, le problème c'est que les numéro se répète plusieurs fois , donc si j'ai beaucoup de lignes avec le même numéro , la fonction doit copier tte les infos enregistrer .
    j'ai récupérer le nombre de fois le numéro se répète , mais j'arrive pas à copier les lignes associé à ce numéro .
    Nom : exemple.PNG
Affichages : 601
Taille : 20,0 Ko

  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 Merry, bonjour le forum,

    Dans l'onglet Feuil1 un tableau qui commence en A1. Dans l'onglet Feuil2 une Combobox1 issue de la boîte à outils ActiveX. Le code commenté ci-dessous devrait convenir :
    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
    42
    Private O As Worksheet 'déclare la variable O (Onglet)
    Private TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Private NL As Integer 'déclare la variable NL (Nombre de Lignes)
    Private NC As Byte 'déclare la variable NC (Nombre de Colonnes)
     
    Private Sub ComboBox1_GotFocus() 'quand la ComboBox1 est sélectionnée
    Dim D As Object 'déclare la variable D (Dictionnaire)
    Dim I As Integer 'déclare la variable I (Incrément)
     
    'alimentation dynamique de la ComboBox1
     
    Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
    TC = O.Range("A1").CurrentRegion 'définit le tableau de c ellules TC
    NL = UBound(TC, 1) 'définit le nombre de lignes NL du tabelau de cellules TC
    NC = UBound(TC, 2) 'définit le nombre de colonnes NC du tabelau de cellules TC
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    For I = 2 To NL 'boucle sur toutes les lignes I du tabelau de cellules TC (en partant de la seconde)
        D(TC(I, 1)) = "" 'alimente le dictionnaire D
    Next I 'prochaine ligne de la boucle
    Me.ComboBox1.List = D.keys 'alimente la ComboBox1avec la liste des éléments du dictionnaire D sans doublon
    End Sub
     
    Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
    Dim TL() As Variant 'définit la variable TL (Tableau de Lignes)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim J As Byte 'déclare la variable J (incrément)
    Dim K As Integer 'déclare la variable K (incrément)
     
    Range("A1").CurrentRegion.ClearContents 'efface les anciennes données
    K = 1 'initialise la variable K
    For I = 2 To NL 'boucle 1 : sur toutes les lignes I du tabelau de cellules TC (en partant de la seconde)
        If CStr(TC(I, 1)) = Me.ComboBox1.Value Then 'condition : si la valeur en ligne I, colonne 1 de TC est égale à la valeur de la ComboBox1
            ReDim Preserve TL(1 To NC, 1 To K) 'redimensionne le tableau TL
            For J = 1 To NC 'boucle 2 : sur toutes les colonnes de TC
                TL(J, K) = TC(I, J) 'récupere dans la ligne J, colonne K de TL la valeur ligne I, colonne J de TC (=tansposition)
            Next J 'prochaine colonne de la boucle 2
            K = K + 1 'íncrémente K
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 1
    If K > 1 Then Range("A1").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) 'renvoie dans A1 redimensionnée le tableau TL transposé si K est supérieur à 1
    Range("A1").Select 'sélectionne la cellule A1
    End Sub
    Un exemple pour illustrer :
    Fichiers attachés Fichiers attachés

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut Re_Merci
    Merci beaucoup ,
    exactement ce que je voulais.

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

Discussions similaires

  1. [MySQL] insérer les enregistrement d'un tableau
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/05/2012, 09h40
  2. [AC-2003] Filtrer les enregistrements dans un tableau
    Par chougadosu dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/06/2010, 13h15
  3. [RegEx] Rechercher des éléments et les enregistrés dans un tableau
    Par arnaudperfect dans le forum Langage
    Réponses: 4
    Dernier message: 21/03/2010, 22h41
  4. Réponses: 3
    Dernier message: 29/12/2007, 23h57
  5. Réponses: 3
    Dernier message: 18/10/2005, 13h43

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