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 :

Combobox et enregistrement à la suite


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 8
    Par défaut Combobox et enregistrement à la suite
    Bonjour à tous,

    J'ai besoin d'un peu d'aide, mes capacités en vba étant réduites.

    Dans le fichier en pièce jointe (mdp : bibouden) je souhaite crée un petit inventaire.

    Afin de l'améliorer je souhaiterais remplacer les textbox 1 et 3 (type de matériel et localisation par des combobox ou je peux choisir le type de matériel, la combobox s'incrémente au fur et à mesure que j'alimente le type de matériel. Par exemple la liste est vide, je rentre un matériel et à la prochaine saisie de matériel je peux alors choisir dans la combobox le matériel précédemment rentré. Idem pour textbox 3 localisation).

    Pour l'instant lorsque je valide la liste des matériels saisie on les retrouve inscrits sur la Feuil2 du classeur. Par contre si j'enregistre, je ferme le classeur et dans la journée je veux rajouter du matériel si je valide cela écrit à la place de ce qui était rentré auparavant. donc en fait je ne veux pas perdre mes anciens enregistrements je veux que cela s'insère à la suite des précédents enregistrements.

    J'espère que mes explications sont claires.

    Merci beaucoup pour votre aide.
    Fichiers attachés Fichiers attachés

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

    En pièce jointe ton fichier modifié. J'ai rajouté un onglet Listes qui va contenir les deux listes alimentant les deux ComboBoxes. À chaque ajout d'une nouvelle donnée dans l'une des ComboBoxes, sa liste est automatiquement classée par ordre alphabétique.
    Tu écris un code qui efface les anciennes données, puis tu demandes à les garder ?!...

    Le code :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Option Explicit
    Private L As Worksheet 'déclare la variable L (onglet Listes)
     
    Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
     
    Set L = Worksheets("Listes") 'définit l'onglet L
    If L.Range("A2") = "" Then GoTo suite 'si A2 est vide (aucun "Type de Matériel" dans la liste), va à l'étiquette "suite"
    If L.Range("A3") = "" Then Me.ComboBox1.AddItem L.Range("A2").Value: GoTo suite 'si A3 est vide (un seul "Type de Matériel"), alimente la ComboBox1, va à l'étiquette "suite"
    Me.ComboBox1.List = L.Range("A2:A" & L.Range("A" & Application.Rows.Count).End(xlUp).Row).Value 'alimente la ComboBox1
    suite: 'étiquette
    If L.Range("B2") = "" Then Exit Sub 'si B2 est vide (aucune "Localisation" dans la liste), sort de la procédure
    If L.Range("B3") = "" Then Me.ComboBox2.AddItem L.Range("B2").Value: Exit Sub 'si B3 est vide (une seule "Localisation"), alimente la ComboBox2, sort de la procédure
    Me.ComboBox2.List = L.Range("B2:B" & L.Range("B" & Application.Rows.Count).End(xlUp).Row).Value 'alimente la ComboBox2
    End Sub
     
     
    Private Sub CommandButton1_Click()
    Dim DL As Integer 'décalre la varaible DL (Dernière Ligne)
     
    With Me.ComboBox1 'prend en compte la ComboBox1
        If .ListIndex = -1 Then 'condition : si la valeur de la ComboBox1 ne fait pas partie de la liste de ses éléments
            DL = L.Range("A" & Application.Rows.Count).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet L
            L.Range("A" & DL + 1).Value = .Value 'renvoie la valeur de la ComboBox1 dans la première ligne vide de la colonne A de l'onglet L
            L.Columns(1).Sort , key1:=L.Columns(1), Order1:=xlAscending, Header:=xlYes 'tri ascendant de la colonne A
            Call UserForm_Initialize 'lance la procédure d'initialisation
        End If 'fin d la condition
        If Me.ListBox1.ListCount < 1000 Then Me.ListBox1.AddItem Me.ComboBox1.Value 'ajoute le valeur de la ComboBox1 à la ListBox1
    End With 'fin de la prise en compte de la ComboBox1
     
    With Me.ComboBox2 'prend en compte la ComboBox2
        If .ListIndex = -1 Then 'condition : si la valeur de la ComboBox2 ne fait pas partie de la liste de ses éléments
            DL = L.Range("B" & Application.Rows.Count).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne B de l'onglet L
            L.Range("B" & DL + 1).Value = .Value 'renvoie la valeur de la ComboBox2 dans la première ligne vide de la colonne B de l'onglet L
            L.Columns(2).Sort , key1:=L.Columns(2), Order1:=xlAscending, Header:=xlYes 'tri ascendant de la colonne B
            Call UserForm_Initialize 'lance la procédure d'initialisation
        End If 'fin d la condition
        If Me.ListBox3.ListCount < 1000 Then Me.ListBox3.AddItem Me.ComboBox2.Value 'ajoute le valeur de la ComboBox2 à la ListBox3
    End With 'fin de la prise en compte de la ComboBox1
     
    If TextBox2 <> "" Then
        If ListBox2.ListCount < 1000 Then
            ListBox2.AddItem TextBox2
     
        Else
            ListBox2.List(999) = TextBox2
        End If
    TextBox2 = ""
    End If
     
     
    If TextBox4 <> "" Then
        If ListBox4.ListCount < 1000 Then
            ListBox4.AddItem TextBox4
     
        Else
            ListBox4.List(999) = TextBox4
        End If
    TextBox4 = ""
    End If
     
    End Sub
     
    Private Sub CommandButton2_Click()
    Dim PLV As Integer 'décalre la varaible DL (Dernière Ligne)
    Dim O As Worksheet 'déclare la variable O (Onglet)
     
    Set O = Worksheets("Feuil2") 'définit l'onglet O
    'définit la première ligne vide PLV (6 si B6 est vide, sinon la première cellule vide de la colonne B)
    PLV = IIf(O.Range("B6") = "", 6, O.Range("B" & Application.Rows.Count).End(xlUp).Row + 1)
    O.Unprotect "bibouden" 'déprotège l'onglet O
    If ListBox1.ListCount > 0 Then
        O.Range("B" & PLV).Resize(ListBox1.ListCount, 1) = ListBox1.List
    End If
    If ListBox2.ListCount > 0 Then
        O.Range("C" & PLV).Resize(ListBox2.ListCount, 1) = ListBox2.List
    End If
    If ListBox3.ListCount > 0 Then
        O.Range("D" & PLV).Resize(ListBox3.ListCount, 1) = ListBox3.List
    End If
    If ListBox4.ListCount > 0 Then
        O.Range("E" & PLV).Resize(ListBox4.ListCount, 1) = ListBox4.List
    End If
    O.Protect "bibouden"
    Unload Me
    O.Select
    End Sub

    Le fichier :
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/10/2010, 22h55
  2. Problème combobox ajouter enregistrement
    Par ThieBEN dans le forum VBA Access
    Réponses: 13
    Dernier message: 21/11/2007, 05h57
  3. [SQL] opération sur l'enregistrement qui suit
    Par namstou3 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/08/2007, 15h43
  4. Nouvel enregistrement désactivé suite securité mdw
    Par Marie_ dans le forum Sécurité
    Réponses: 4
    Dernier message: 27/06/2007, 18h00
  5. Enregistrements rejeté suite à requete ajout
    Par STEF_1 dans le forum Access
    Réponses: 9
    Dernier message: 27/01/2006, 16h18

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