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 :

Coincé sur formulaire vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable en logistique
    Inscrit en
    Mai 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable en logistique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 39
    Points : 27
    Points
    27
    Par défaut Coincé sur formulaire vba
    Bonjour a tous,

    J'ai crée un formulaire que j'ai encodé en vba a l'aide d'internet et de mes propres connaissances. Mais aujourd'hui je suis coincé ! Je vous explique le fonctionnement de ce formulaire : Dés que l'on ouvre le fichier, nous voyons directement le formulaire s'afficher avec la 1er USF. Mon problème ce trouve dans l'USF du bouton "2eme sauvegarde". Lorsque l'on sélectionne le nom du client dans la combobox1 cela nous affiche dessous dans la listbox1 la liste des disques durs qui ont étaient déclarés en achat dans la 1er USF (Pas de soucis c'est ce que je voulais) Maintenant, je voudrais faire en sorte, que lorsque l'un des disques a déjà était déclaré en "2eme sauvegarde", qu'il n'apparaisse plus dans la listbox1 et en même temps je ne veux pas que cela me modifie les données récupérées dans mon tableur. Pour info la "2eme sauvegarde" correspond a la USF4.

    Pour avoir accès au fichier excel, il suffit de cliquer sur la croix pour faire apparaître le tableur.



    Merci d'avance pour votre aide.
    Pièces jointes en attente de validation Pièces jointes en attente de validation

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Bonjour,

    comment rempli tu tes combobox ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable en logistique
    Inscrit en
    Mai 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable en logistique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    Bonjour bbil,

    Tout d'abord merci d'avoir pris en compte ma demande.

    Ensuite, pour répondre a ta question :

    La combobox1 (Celle concernée par l'USF4) récupère toutes données des cellules de la colonne A du tableur (Qui corresponde au nom des différents clients)

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et comment elle récupère cela ?? avec une pelle ? du code ? je ne vais pas ouvrir ton fichier pour cela ... essai de comprendre un minimum le fonctionnement de ton code...




    Fichier joint dans vos discussions



  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Responsable en logistique
    Inscrit en
    Mai 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable en logistique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    Autant pour moi, je n'avais compris ou tu voulais en venir !!

    Voici le code qui récupère les infos de la combobox1 sans les doublons :

    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
    'vide la combobox1
    ComboBox1.Clear
    j = 0
    i = 0
    k = 0
    temp = 0
     
    'vide la combobox1
    ComboBox1.Clear
     
    With Sheets("Borne")
        For j = 2 To .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    'remplit la combobox
            ComboBox1 = .Range("A" & j)
    'sans doublons......
        If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("A" & j)
        Next j
    End With
    'trie la combobox
    With ComboBox1
        For i = 0 To .ListCount - 1
          For k = 0 To .ListCount - 1
            If .List(i) < .List(k) Then
              temp = .List(i)
              .List(i) = .List(k)
              .List(k) = temp
            End If
          Next k
        Next i
        .ListIndex = -1
    End With
     
    ListBox1.Clear
     
    End Sub

  6. #6
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Ton fichier en pièce jointe ayant été supprimé, c'est la règle ici, j'ai beaucoup de mal à comprendre tes explications malgré le code fourni.
    Ci-dessous une modification de ton code qui ne répond pas à ton problème mais qui devrait accélérer son exécution (non testé) :

    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
    Dim B As Worksheet 'déclare la variable B (onglet Borne)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Dim D As Object 'déclare la variable D (Dictionnaire)
    Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
    Dim I As Integer 'déclare la variable I (Incrément)
     
    ComboBox1.Clear 'vide la ComboBox1
    Set B = Sheets("Borne") 'définit l'onglet B
    TC = B.Range("A1").CurrentRegion 'définit le tableau de cellules TC
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    For I = 2 To UBound(TC, 1) 'boucles sur toutes les lignes I du tableau de cellules TC (en partant de la seconde)
        D(TC(I, 1)) = "" 'alimente le dictionnaire D avec la valeur en colonne 1 de TC
    Next I 'prochaine ligne de la boucle
    TMP = D.keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
    Call tri(TMP, LBound(TMP, 1), UBound(TMP, 1)) 'lance la macro de tri du tableau TMP
    Me.ComboBox1.List = TMP 'alimente la Combobox1 avec la liste TMP triée et sans doublon
    ListBox1.Clear 'vide la ListBox1
    End Sub
     
    'tiré du site de Jacques BOISGONTIER : http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm
    Sub tri(a As Variant, gauc As Integer, droi As Integer) ' Quick sort
    Dim ref As Variant
    Dim g As Integer
    Dim d As Integer
    Dim temp As Variant
     
    ref = a((gauc + droi) \ 2)
    g = gauc: d = droi
    Do
        Do While a(g) < ref: g = g + 1: Loop
        Do While ref < a(d): D = D - 1: Loop
        If g <= d Then
            temp = a(g): a(g) = a(d): a(d) = temp
            g = g + 1: d = d - 1
        End If
    Loop While g <= d
    If g < droi Then Call tri(a, g, droi)
    If gauc < d Then Call tri(a, gauc, d)
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/04/2007, 13h49
  2. [VBA] Liste sur formulaire
    Par Virgile59 dans le forum IHM
    Réponses: 4
    Dernier message: 26/12/2006, 12h57
  3. Réponses: 1
    Dernier message: 06/07/2006, 14h44
  4. Réponses: 2
    Dernier message: 05/07/2006, 16h52
  5. [VBA] Détecter une modification sur formulaire
    Par BaRonm3 dans le forum Access
    Réponses: 10
    Dernier message: 21/06/2006, 12h12

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